/*
- * 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<patmans@us.ibm.com>
+ * 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 <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <getopt.h>
#include <sys/stat.h>
-#include "../../udev/udev.h"
+#include "libudev.h"
+#include "libudev-private.h"
#include "scsi_id.h"
static const struct option options[] = {
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.
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);
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;
}
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;
if (udev == NULL)
goto exit;
- logging_init("scsi_id");
+ udev_log_init("scsi_id");
udev_set_log_fn(udev, log_fn);
/*
exit:
udev_unref(udev);
- logging_close();
+ udev_log_close();
return retval;
}