diff options
author | Marcus Meissner <marcus@jet.franken.de> | 2010-12-25 17:32:30 +0000 |
---|---|---|
committer | Marcus Meissner <marcus@jet.franken.de> | 2010-12-25 17:32:30 +0000 |
commit | 5bbd9a01db1d000ecf1e9aba1515d5ac004c4c32 (patch) | |
tree | 52b4458f5d6a15e0abba18d755c0658fdcc7d95d /libgphoto2_port/usbscsi | |
parent | 41eda86f2bcce56b6e06b083ef99d35eb87f6fa0 (diff) | |
download | libgphoto2-5bbd9a01db1d000ecf1e9aba1515d5ac004c4c32.tar.gz |
try to support old style kernels where sgX was a directory
and not a symlink
git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@13448 67ed7778-7388-44ab-90cf-0a291f65f57c
Diffstat (limited to 'libgphoto2_port/usbscsi')
-rw-r--r-- | libgphoto2_port/usbscsi/linux.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libgphoto2_port/usbscsi/linux.c b/libgphoto2_port/usbscsi/linux.c index 4b5286ff1..3fb3b6fab 100644 --- a/libgphoto2_port/usbscsi/linux.c +++ b/libgphoto2_port/usbscsi/linux.c @@ -178,10 +178,17 @@ gp_port_usbscsi_get_usb_id (const char *sg, { FILE *f; char c, *s, buf[32], path[PATH_MAX + 1]; + char *xpath; snprintf (path, sizeof (path), "/sys/class/scsi_generic/%s", sg); - snprintf (path, sizeof (path), "%s/../../../../../modalias", - gp_port_usbscsi_resolve_symlink(path)); + xpath = gp_port_usbscsi_resolve_symlink(path); + if (xpath) { + snprintf (path, sizeof (path), "%s/../../../../../modalias", + gp_port_usbscsi_resolve_symlink(path)); + } else { + /* older kernels, perhaps also works on newer ones */ + snprintf (path, sizeof (path), "/sys/class/scsi_generic/%s/device/../../../modalias", sg); + } f = fopen (path, "r"); if (!f) @@ -228,13 +235,6 @@ gp_port_library_list (GPPortInfoList *list) CHECK (gp_port_info_list_append (list, info)) } closedir (dir); - - /* generic matcher. This will catch passed usbscsi: entries for instance. */ - gp_port_info_new (&info); - gp_port_info_set_type (info, GP_PORT_USB_SCSI); - gp_port_info_set_name (info, ""); - gp_port_info_set_path (info, "^usbscsi:"); - CHECK (gp_port_info_list_append (list, info)); return GP_OK; } |