From f640b32fddfc45210361813b50c629a80d2889d2 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 6 Sep 2008 16:37:00 +0200 Subject: [PATCH] vol_id: add --debug option --- extras/volume_id/vol_id.c | 38 +++++++++++++++++++++++++------------ extras/volume_id/vol_id.xml | 15 +++++++++++++++ 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/extras/volume_id/vol_id.c b/extras/volume_id/vol_id.c index dcfb0bb92..d8302bc22 100644 --- a/extras/volume_id/vol_id.c +++ b/extras/volume_id/vol_id.c @@ -1,7 +1,7 @@ /* * vol_id - read filesystem label and uuid * - * Copyright (C) 2005-2006 Kay Sievers + * Copyright (C) 2005-2008 Kay Sievers * * 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 @@ -39,11 +39,18 @@ #define BLKGETSIZE64 _IOR(0x12,114,size_t) +static int debug; + 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); + if (debug) { + fprintf(stderr, "%s: ", fn != NULL ? fn : file); + vfprintf(stderr, format, args); + } else { + vsyslog(priority, format, args); + } } static void vid_log(int priority, const char *file, int line, const char *format, ...) @@ -113,6 +120,7 @@ int main(int argc, char *argv[]) { "skip-raid", 0, NULL, 's' }, { "probe-all", 0, NULL, 'a' }, { "offset", 2, NULL, 'o' }, + { "debug", 0, NULL, 'd' }, { "help", 0, NULL, 'h' }, {} }; @@ -151,11 +159,16 @@ int main(int argc, char *argv[]) while (1) { int option; - option = getopt_long(argc, argv, "lLutxsaoh", options, NULL); + option = getopt_long(argc, argv, "lLutxsaodh", options, NULL); if (option == -1) break; switch (option) { + case 'd': + debug = 1; + if (udev_get_log_priority(udev) < LOG_INFO) + udev_set_log_priority(udev, LOG_INFO); + break; case 'l': print = PRINT_LABEL; break; @@ -183,14 +196,15 @@ int main(int argc, char *argv[]) break; case 'h': printf("Usage: vol_id [options] \n" - " --export export key/value pairs\n" - " --type filesystem type\n" - " --label filesystem label\n" - " --label-raw raw label\n" - " --uuid filesystem uuid\n" - " --skip-raid don't probe for raid\n" - " --probe-all find possibly conflicting signatures\n" - " --offset skip given number of bytes of input\n" + " --export export key/value pairs\n" + " --type filesystem type\n" + " --label filesystem label\n" + " --label-raw raw label\n" + " --uuid filesystem uuid\n" + " --skip-raid don't probe for raid\n" + " --probe-all find possibly conflicting signatures\n" + " --offset= probe at the given offset\n" + " --debug print debug output to stderr\n" " --help\n\n"); goto exit; default: @@ -222,7 +236,7 @@ int main(int argc, char *argv[]) if (ioctl(fd, BLKGETSIZE64, &size) != 0) size = 0; - dbg(udev, "BLKGETSIZE64=%llu\n", (unsigned long long)size); + info(udev, "BLKGETSIZE64=%llu (%lluGB)\n", (unsigned long long)size, (unsigned long long)size >> 30); /* try to drop all privileges before reading disk content */ if (getuid() == 0) { diff --git a/extras/volume_id/vol_id.xml b/extras/volume_id/vol_id.xml index 6d0a6c692..fcf3a31fa 100644 --- a/extras/volume_id/vol_id.xml +++ b/extras/volume_id/vol_id.xml @@ -32,6 +32,8 @@ + + device @@ -95,6 +97,19 @@ Probe for all types and print all matches. + + + + Probing at the given offset, instead of the start of the volume. + The offset value is specified in bytes. + + + + + + Print debug output to stderr. + + -- 2.30.2