summaryrefslogtreecommitdiff
path: root/libgphoto2_port/usbscsi
diff options
context:
space:
mode:
authorMarcus Meissner <marcus@jet.franken.de>2010-12-25 17:32:30 +0000
committerMarcus Meissner <marcus@jet.franken.de>2010-12-25 17:32:30 +0000
commit5bbd9a01db1d000ecf1e9aba1515d5ac004c4c32 (patch)
tree52b4458f5d6a15e0abba18d755c0658fdcc7d95d /libgphoto2_port/usbscsi
parent41eda86f2bcce56b6e06b083ef99d35eb87f6fa0 (diff)
downloadlibgphoto2-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.c18
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;
}