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:
parent
fa981a8b96
commit
4a129dd960
25
src/main.c
25
src/main.c
|
@ -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;
|
||||||
|
|
Reference in New Issue