X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Fscsi_id%2Fscsi_id.c;h=3811ea542d58b533faa1a70def4ee01567316401;hb=8b5651bb009bf892b3a5537c5f36b8891f238aa4;hp=7cf2f3765dfcc0604afb61d674252a229340d880;hpb=9060b066d9e7aaca9795010ac5fff61018947f87;p=elogind.git diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c index 7cf2f3765..3811ea542 100644 --- a/extras/scsi_id/scsi_id.c +++ b/extras/scsi_id/scsi_id.c @@ -1,17 +1,19 @@ /* - * scsi_id.c - * - * Main section of the scsi_id program - * * Copyright (C) IBM Corp. 2003 * Copyright (C) SUSE Linux Products GmbH, 2006 * - * Author: - * Patrick Mansfield + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation version 2 of the License. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ #include @@ -517,31 +519,6 @@ static int set_inq_values(struct udev *udev, struct scsi_id_device *dev_scsi, co return 0; } -/* - * format_serial: replace to whitespaces by underscores for calling - * programs that use the serial for device naming (multipath, Suse - * naming, etc...) - */ -static void format_serial(char *serial) -{ - char *p = serial, *q; - - q = p; - while (*p != '\0') { - if (isspace(*p)) { - if (q > serial && q[-1] != '_') { - *q = '_'; - q++; - } - } else { - *q = *p; - q++; - } - p++; - } - *q = '\0'; -} - /* * scsi_id: try to get an id, if one is found, printf it to stdout. * returns a value passed to exit() - 0 if printed an id, else 1. @@ -574,6 +551,7 @@ static int scsi_id(struct udev *udev, char *maj_min_dev) if (export) { char serial_str[MAX_SERIAL_LEN]; + printf("ID_SCSI=1\n"); printf("ID_VENDOR=%s\n", vendor_str); printf("ID_VENDOR_ENC=%s\n", vendor_enc_str); printf("ID_MODEL=%s\n", model_str); @@ -588,6 +566,18 @@ static int scsi_id(struct udev *udev, char *maj_min_dev) udev_util_replace_chars(serial_str, NULL); printf("ID_SERIAL_SHORT=%s\n", serial_str); } + if (dev_scsi.wwn[0] != '\0') { + printf("ID_WWN=0x%s\n", dev_scsi.wwn); + if (dev_scsi.wwn_vendor_extension[0] != '\0') { + printf("ID_WWN_VENDOR_EXTENSION=0x%s\n", dev_scsi.wwn_vendor_extension); + printf("ID_WWN_WITH_EXTENSION=0x%s%s\n", dev_scsi.wwn, dev_scsi.wwn_vendor_extension); + } else { + printf("ID_WWN_WITH_EXTENSION=0x%s\n", dev_scsi.wwn); + } + } + if (dev_scsi.unit_serial_number[0] != '\0') { + printf("ID_SCSI_SERIAL=%s\n", dev_scsi.unit_serial_number); + } goto out; } @@ -595,8 +585,16 @@ static int scsi_id(struct udev *udev, char *maj_min_dev) retval = 1; goto out; } - if (reformat_serial) - format_serial(dev_scsi.serial); + + if (reformat_serial) { + char serial_str[MAX_SERIAL_LEN]; + + udev_util_replace_whitespace(dev_scsi.serial, serial_str, sizeof(serial_str)); + udev_util_replace_chars(serial_str, NULL); + printf("%s\n", serial_str); + goto out; + } + printf("%s\n", dev_scsi.serial); out: return retval;