On Fri, Aug 01, 2008 at 03:35:06AM -0400, Guido Günther wrote: > * hack in enough support for -s so we can update udev without > updating multipath-tools - this can probably be done by just > implementing -s as -d and simply doing a: s%^/block/%^/dev/% in > set_options if "-s" was set. I just did this but then noticed: It turned out that the code for another usage of '-s' is there but it isn't in the options passed to getopt_long, so we can safely keep the compat code. Possible patch attached. -- Guido
>From 749a45a54e8c12aa2ca2a89b3768b89c3c50ee66 Mon Sep 17 00:00:00 2001 From: Guido Guenther <[EMAIL PROTECTED]> Date: Fri, 1 Aug 2008 03:16:05 -0400 Subject: [PATCH] convert sysfs paths for block devices into device names
adds some backwardscompatibility for programms/udev rules that use "-s/--devpath" --- extras/scsi_id/scsi_id.c | 27 +++++++++++++++++---------- 1 files changed, 17 insertions(+), 10 deletions(-) diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c index 5eb95e8..badda7f 100644 --- a/extras/scsi_id/scsi_id.c +++ b/extras/scsi_id/scsi_id.c @@ -33,12 +33,12 @@ static const struct option options[] = { { "device", 1, NULL, 'd' }, + { "devpath", 1, NULL, 's' }, { "config", 1, NULL, 'f' }, { "page", 1, NULL, 'p' }, { "blacklisted", 0, NULL, 'b' }, { "whitelisted", 0, NULL, 'g' }, { "replace-whitespace", 0, NULL, 'u' }, - { "sg-version", 1, NULL, 's' }, { "verbose", 0, NULL, 'v' }, { "version", 0, NULL, 'V' }, { "export", 0, NULL, 'x' }, @@ -46,7 +46,7 @@ static const struct option options[] = { {} }; -static const char short_options[] = "d:f:ghip:uvVx"; +static const char short_options[] = "d:f:ghip:uvVxs:"; static const char dev_short_options[] = "bgp:"; static int all_good; @@ -374,6 +374,16 @@ static int get_file_options(const char *vendor, const char *model, return retval; } +static void convert_sysfs_path(const char* sysfs, char *devpath) +{ + if (!strncmp(optarg, "/block/", 7)) { + snprintf(devpath, MAX_PATH_LEN, "/dev/%s", &(optarg[7])); + } else { + strncpy(devpath, optarg, MAX_PATH_LEN); + } + devpath[MAX_PATH_LEN-1] = '\0'; +} + static int set_options(int argc, char **argv, const char *short_opts, char *maj_min_dev) { @@ -406,6 +416,11 @@ static int set_options(int argc, char **argv, const char *short_opts, maj_min_dev[MAX_PATH_LEN-1] = '\0'; break; + case 's': + dev_specified = 1; + convert_sysfs_path(optarg, maj_min_dev); + break; + case 'e': use_stderr = 1; break; @@ -447,14 +462,6 @@ static int set_options(int argc, char **argv, const char *short_opts, } break; - case 's': - sg_version = atoi(optarg); - if (sg_version < 3 || sg_version > 4) { - err("Unknown SG version '%s'\n", optarg); - return -1; - } - break; - case 'u': reformat_serial = 1; break; -- 1.5.6.3