X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fscsi_id%2Fscsi_id.c;h=27adb09d1584b26d8fa3b23a986a6e74aec5dec7;hb=73ae2b7dade339c8a258dcf4fa2b302e238117e1;hp=f005638463ac612d51d17016ebb246f55360016a;hpb=ed142bdb68fdcd5ce591152ce0ec9d29898fbac4;p=elogind.git diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index f00563846..27adb09d1 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -44,7 +43,7 @@ static const struct option options[] = { { "replace-whitespace", no_argument, NULL, 'u' }, { "sg-version", required_argument, NULL, 's' }, { "verbose", no_argument, NULL, 'v' }, - { "version", no_argument, NULL, 'V' }, + { "version", no_argument, NULL, 'V' }, /* don't advertise -V */ { "export", no_argument, NULL, 'x' }, { "help", no_argument, NULL, 'h' }, {} @@ -55,7 +54,6 @@ static bool dev_specified = false; static char config_file[MAX_PATH_LEN] = "/etc/scsi_id.config"; static enum page_code default_page_code = PAGE_UNSPECIFIED; static int sg_version = 4; -static int debug = 0; static bool reformat_serial = false; static bool export = false; static char vendor_str[64]; @@ -65,14 +63,6 @@ static char model_enc_str[256]; static char revision_str[16]; static char type_str[16]; -_printf_(6,0) -static void log_fn(struct udev *udev, int priority, - const char *file, int line, const char *fn, - const char *format, va_list args) -{ - vsyslog(priority, format, args); -} - static void set_type(const char *from, char *to, size_t len) { int type_num; @@ -184,7 +174,7 @@ static int get_file_options(struct udev *udev, if (errno == ENOENT) return 1; else { - log_error("can't open %s: %m\n", config_file); + log_error_errno(errno, "can't open %s: %m", config_file); return -1; } } @@ -208,7 +198,7 @@ static int get_file_options(struct udev *udev, break; lineno++; if (buf[strlen(buffer) - 1] != '\n') { - log_error("Config file line %d too long\n", lineno); + log_error("Config file line %d too long", lineno); break; } @@ -257,7 +247,7 @@ static int get_file_options(struct udev *udev, * Only allow: [vendor=foo[,model=bar]]options=stuff */ if (!options_in || (!vendor_in && model_in)) { - log_error("Error parsing config file line %d '%s'\n", lineno, buffer); + log_error("Error parsing config file line %d '%s'", lineno, buffer); retval = -1; break; } @@ -313,6 +303,22 @@ static int get_file_options(struct udev *udev, return retval; } +static void help(void) { + printf("Usage: scsi_id [OPTION...] DEVICE\n" + " -d,--device= device node for SG_IO commands\n" + " -f,--config= location of config file\n" + " -p,--page=0x80|0x83|pre-spc3-83 SCSI page (0x80, 0x83, pre-spc3-83)\n" + " -s,--sg-version=3|4 use SGv3 or SGv4\n" + " -b,--blacklisted treat device as blacklisted\n" + " -g,--whitelisted treat device as whitelisted\n" + " -u,--replace-whitespace replace all whitespace by underscores\n" + " -v,--verbose verbose logging\n" + " --version print version\n" + " -x,--export print values as environment keys\n" + " -h,--help print this help text\n\n"); + +} + static int set_options(struct udev *udev, int argc, char **argv, char *maj_min_dev) @@ -325,7 +331,7 @@ static int set_options(struct udev *udev, * file) we have to reset this back to 1. */ optind = 1; - while ((option = getopt_long(argc, argv, "d:f:ghp:uvVx", options, NULL)) >= 0) + while ((option = getopt_long(argc, argv, "d:f:gp:uvVxh", options, NULL)) >= 0) switch (option) { case 'b': all_good = false; @@ -345,18 +351,7 @@ static int set_options(struct udev *udev, break; case 'h': - printf("Usage: scsi_id [OPTION...] DEVICE\n" - " --device= device node for SG_IO commands\n" - " --config= location of config file\n" - " --page=0x80|0x83|pre-spc3-83 SCSI page (0x80, 0x83, pre-spc3-83)\n" - " --sg-version=3|4 use SGv3 or SGv4\n" - " --blacklisted threat device as blacklisted\n" - " --whitelisted threat device as whitelisted\n" - " --replace-whitespace replace all whitespace by underscores\n" - " --verbose verbose logging\n" - " --version print version\n" - " --export print values as environment keys\n" - " --help print this help text\n\n"); + help(); exit(0); case 'p': @@ -367,7 +362,7 @@ static int set_options(struct udev *udev, else if (streq(optarg, "pre-spc3-83")) default_page_code = PAGE_83_PRE_SPC3; else { - log_error("Unknown page code '%s'\n", optarg); + log_error("Unknown page code '%s'", optarg); return -1; } break; @@ -375,7 +370,7 @@ static int set_options(struct udev *udev, case 's': sg_version = atoi(optarg); if (sg_version < 3 || sg_version > 4) { - log_error("Unknown SG version '%s'\n", optarg); + log_error("Unknown SG version '%s'", optarg); return -1; } break; @@ -385,13 +380,14 @@ static int set_options(struct udev *udev, break; case 'v': - debug++; + log_set_target(LOG_TARGET_CONSOLE); + log_set_max_level(LOG_DEBUG); + log_open(); break; case 'V': printf("%s\n", VERSION); exit(0); - break; case 'x': export = true; @@ -448,13 +444,13 @@ static int per_dev_options(struct udev *udev, } else if (streq(optarg, "pre-spc3-83")) { *page_code = PAGE_83_PRE_SPC3; } else { - log_error("Unknown page code '%s'\n", optarg); + log_error("Unknown page code '%s'", optarg); retval = -1; } break; default: - log_error("Unknown or bad option '%c' (0x%x)\n", option, option); + log_error("Unknown or bad option '%c' (0x%x)", option, option); retval = -1; break; } @@ -579,13 +575,13 @@ int main(int argc, char **argv) int newargc; char **newargv = NULL; + log_parse_environment(); + log_open(); + udev = udev_new(); if (udev == NULL) goto exit; - log_open(); - udev_set_log_fn(udev, log_fn); - /* * Get config file options. */ @@ -610,7 +606,7 @@ int main(int argc, char **argv) exit(1); if (!dev_specified) { - log_error("no device specified\n"); + log_error("no device specified"); retval = 1; goto exit; }