From: Kay Sievers Date: Fri, 18 Aug 2006 00:33:46 +0000 (+0200) Subject: udevinfo, udevtest: simplify '/sys' stripping from devpath argument X-Git-Tag: 174~2189 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=2362eea6019e07a2e79e67ebe626bfacf40ff40f udevinfo, udevtest: simplify '/sys' stripping from devpath argument --- diff --git a/udev_utils_file.c b/udev_utils_file.c index acaffdc91..6a046e822 100644 --- a/udev_utils_file.c +++ b/udev_utils_file.c @@ -49,7 +49,7 @@ int create_path(const char *path) pos[0] = '\0'; dbg("stat '%s'\n", p); - if (stat (p, &stats) == 0 && (stats.st_mode & S_IFMT) == S_IFDIR) + if (stat(p, &stats) == 0 && (stats.st_mode & S_IFMT) == S_IFDIR) return 0; if (create_path (p) != 0) diff --git a/udevinfo.c b/udevinfo.c index 6b7368119..1a10f9ad0 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -209,9 +209,7 @@ int main(int argc, char *argv[], char *envp[]) char path[PATH_SIZE] = ""; char name[PATH_SIZE] = ""; - char temp[PATH_SIZE]; struct name_entry *name_loop; - char *pos; int rc = 0; logging_init("udevinfo"); @@ -234,16 +232,20 @@ int main(int argc, char *argv[], char *envp[]) dbg("option '%c'", option); switch (option) { case 'n': - dbg("udev name: %s\n", optarg); - strlcpy(name, optarg, sizeof(name)); + /* remove /dev if given */ + if (strncmp(optarg, udev_root, strlen(udev_root)) == 0) + strlcpy(name, &optarg[strlen(udev_root)+1], sizeof(name)); + else + strlcpy(name, optarg, sizeof(name)); + dbg("name: %s\n", name); break; case 'p': - dbg("udev path: %s\n", optarg); - /* remove sysfs mountpoint if not given */ + /* remove /sys if given */ if (strncmp(optarg, sysfs_path, strlen(sysfs_path)) == 0) strlcpy(path, &optarg[strlen(sysfs_path)], sizeof(path)); else strlcpy(path, optarg, sizeof(path)); + dbg("path: %s\n", path); break; case 'q': dbg("udev query: %s\n", optarg); @@ -299,40 +301,19 @@ int main(int argc, char *argv[], char *envp[]) /* run action */ switch (action) { case ACTION_QUERY: - /* need devpath or node/symlink name for query */ + /* needs devpath or node/symlink name for query */ if (path[0] != '\0') { - /* remove sysfs_path if given */ - if (strncmp(path, sysfs_path, strlen(sysfs_path)) == 0) { - pos = path + strlen(sysfs_path); - } else { - if (path[0] != '/') { - /* prepend '/' if missing */ - strcpy(temp, "/"); - strlcpy(temp, path, sizeof(temp)); - pos = temp; - } else { - pos = path; - } - } - if (udev_db_get_device(udev, pos) != 0) { - fprintf(stderr, "no record for '%s' in database\n", pos); + if (udev_db_get_device(udev, path) != 0) { + fprintf(stderr, "no record for '%s' in database\n", path); rc = 3; goto exit; } } else if (name[0] != '\0') { char devpath[PATH_SIZE]; - int len; - /* remove udev_root if given */ - len = strlen(udev_root); - if (strncmp(name, udev_root, len) == 0) { - pos = &name[len+1]; - } else - pos = name; - - if (udev_db_lookup_name(pos, devpath, sizeof(devpath)) != 0) { - fprintf(stderr, "no record for '%s' in database\n", pos); - rc = 3; + if (udev_db_lookup_name(name, devpath, sizeof(devpath)) != 0) { + fprintf(stderr, "node name not found\n"); + rc = 4; goto exit; } udev_db_get_device(udev, devpath); diff --git a/udevtest.c b/udevtest.c index 078674a01..22627c05a 100644 --- a/udevtest.c +++ b/udevtest.c @@ -52,7 +52,6 @@ int main(int argc, char *argv[], char *envp[]) { struct udev_rules rules; char *devpath; - char temp[PATH_SIZE]; struct udevice *udev; struct sysfs_device *dev; int retval; @@ -64,24 +63,19 @@ int main(int argc, char *argv[], char *envp[]) udev_config_init(); if (udev_log_priority < LOG_INFO) udev_log_priority = LOG_INFO; - sysfs_init(); if (argc != 2) { info("Usage: udevtest "); return 1; } - /* remove sysfs_path if given */ + sysfs_init(); + + /* remove /sys if given */ if (strncmp(argv[1], sysfs_path, strlen(sysfs_path)) == 0) devpath = &argv[1][strlen(sysfs_path)]; else - if (argv[1][0] != '/') { - /* prepend '/' if missing */ - snprintf(temp, sizeof(temp), "/%s", argv[1]); - temp[sizeof(temp)-1] = '\0'; - devpath = temp; - } else - devpath = argv[1]; + devpath = argv[1]; udev_rules_init(&rules, 0);