X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fudev%2Fudevadm-info.c;h=352e024a7c65f09d7690db98f29d915157a202a9;hp=22d082601119c06528cdf52cd55671ac7b619310;hb=62a30b2c490512fe22a4e5faacb1d55763ead1e0;hpb=9ec6e95b046de71c0198cb9d17acc5462dc76c74 diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index 22d082601..352e024a7 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -15,22 +15,20 @@ * along with this program. If not, see . */ -#include #include #include #include #include -#include #include #include #include #include #include #include -#include #include "udev.h" #include "udev-util.h" +#include "udevadm-util.h" static bool skip_attribute(const char *name) { static const char* const skip[] = { @@ -161,12 +159,12 @@ static int stat_device(const char *name, bool export, const char *prefix) { if (export) { if (prefix == NULL) prefix = "INFO_"; - printf("%sMAJOR=%d\n" - "%sMINOR=%d\n", + printf("%sMAJOR=%u\n" + "%sMINOR=%u\n", prefix, major(statbuf.st_dev), prefix, minor(statbuf.st_dev)); } else - printf("%d:%d\n", major(statbuf.st_dev), minor(statbuf.st_dev)); + printf("%u:%u\n", major(statbuf.st_dev), minor(statbuf.st_dev)); return 0; } @@ -257,33 +255,29 @@ static void cleanup_db(struct udev *udev) { } } -static struct udev_device *find_device(struct udev *udev, const char *id, const char *prefix) { - char name[UTIL_PATH_SIZE]; - - if (prefix && !startswith(id, prefix)) { - strscpyl(name, sizeof(name), prefix, id, NULL); - id = name; - } - - if (startswith(id, "/dev/")) { - struct stat statbuf; - char type; - - if (stat(id, &statbuf) < 0) - return NULL; - - if (S_ISBLK(statbuf.st_mode)) - type = 'b'; - else if (S_ISCHR(statbuf.st_mode)) - type = 'c'; - else - return NULL; - - return udev_device_new_from_devnum(udev, type, statbuf.st_rdev); - } else if (startswith(id, "/sys/")) - return udev_device_new_from_syspath(udev, id); - else - return NULL; +static void help(void) { + + printf("%s info [OPTIONS] [DEVPATH|FILE]\n\n" + "Query sysfs or the udev database.\n\n" + " -h --help Print this message\n" + " --version Print version of the program\n" + " -q --query=TYPE Query device information:\n" + " name Name of device node\n" + " symlink Pointing to node\n" + " path sysfs device path\n" + " property The device properties\n" + " all All values\n" + " -p --path=SYSPATH sysfs device path used for query or attribute walk\n" + " -n --name=NAME Node or symlink name used for query or attribute walk\n" + " -r --root Prepend dev directory to path names\n" + " -a --attribute-walk Print all key matches walking along the chain\n" + " of parent devices\n" + " -d --device-id-of-file=FILE Print major:minor of device containing this file\n" + " -x --export Export key/value pairs\n" + " -P --export-prefix Export the key name with a prefix\n" + " -e --export-db Export the content of the udev database\n" + " -c --cleanup-db Clean up the udev database\n" + , program_invocation_short_name); } static int uinfo(struct udev *udev, int argc, char *argv[]) { @@ -311,27 +305,6 @@ static int uinfo(struct udev *udev, int argc, char *argv[]) { {} }; - static const char *usage = - "Usage: udevadm info [OPTIONS] [DEVPATH|FILE]\n" - " -q,--query=TYPE query device information:\n" - " name name of device node\n" - " symlink pointing to node\n" - " path sys device path\n" - " property the device properties\n" - " all all values\n" - " -p,--path=SYSPATH sys device path used for query or attribute walk\n" - " -n,--name=NAME node or symlink name used for query or attribute walk\n" - " -r,--root prepend dev directory to path names\n" - " -a,--attribute-walk print all key matches walking along the chain\n" - " of parent devices\n" - " -d,--device-id-of-file=FILE print major:minor of device containing this file\n" - " -x,--export export key/value pairs\n" - " -P,--export-prefix export the key name with a prefix\n" - " -e,--export-db export the content of the udev database\n" - " -c,--cleanup-db cleanup the udev database\n" - " --version print version of the program\n" - " -h,--help print this message\n"; - enum action_type { ACTION_QUERY, ACTION_ATTRIBUTE_WALK, @@ -416,7 +389,7 @@ static int uinfo(struct udev *udev, int argc, char *argv[]) { printf("%s\n", VERSION); return 0; case 'h': - printf("%s\n", usage); + help(); return 0; default: return 1; @@ -426,7 +399,7 @@ static int uinfo(struct udev *udev, int argc, char *argv[]) { case ACTION_QUERY: if (!device) { if (!argv[optind]) { - fprintf(stderr, "%s\n", usage); + help(); return 2; } device = find_device(udev, argv[optind], NULL); @@ -517,5 +490,5 @@ static int uinfo(struct udev *udev, int argc, char *argv[]) { const struct udevadm_cmd udevadm_info = { .name = "info", .cmd = uinfo, - .help = "query sysfs or the udev database", + .help = "Query sysfs or the udev database", };