add support for RAW1394DEV environment variable to override default /dev/raw1394, but also attempt to failover to default.

git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@170 53a565d1-3bb7-0310-b661-cf11e63c67ab
This commit is contained in:
ddennedy 2007-02-17 02:24:16 +00:00
parent fa981a8b96
commit 4a129dd960
1 changed files with 20 additions and 5 deletions

View File

@ -115,6 +115,7 @@ static unsigned int init_rawdevice(struct raw1394_handle *h)
struct raw1394_handle *raw1394_new_handle(void) struct raw1394_handle *raw1394_new_handle(void)
{ {
struct raw1394_handle *handle; struct raw1394_handle *handle;
const char *defaultDevice = "/dev/raw1394";
handle = malloc(sizeof(struct raw1394_handle)); handle = malloc(sizeof(struct raw1394_handle));
if (!handle) { if (!handle) {
@ -122,17 +123,31 @@ struct raw1394_handle *raw1394_new_handle(void)
return NULL; return NULL;
} }
handle->fd = open("/dev/raw1394", O_RDWR); handle->fd = open(getenv("RAW1394DEV") ? getenv("RAW1394DEV"): defaultDevice, O_RDWR);
if (handle->fd < 0) { if (handle->fd < 0) {
free(handle); /* failover to default in attempt to idiot proof */
return NULL; handle->fd = open(defaultDevice, O_RDWR);
if (handle->fd < 0) {
free(handle);
return NULL;
}
} }
handle->generation = init_rawdevice(handle); handle->generation = init_rawdevice(handle);
if (handle->generation == -1) { if (handle->generation == -1) {
/* failover to default in attempt to idiot proof */
close(handle->fd); close(handle->fd);
free(handle); handle->fd = open(defaultDevice, O_RDWR);
return NULL; if (handle->fd < 0) {
free(handle);
return NULL;
}
handle->generation = init_rawdevice(handle);
if (handle->generation == -1) {
close(handle->fd);
free(handle);
return NULL;
}
} }
handle->err = 0; handle->err = 0;