chiark / gitweb /
udevinfo, udevtest: simplify '/sys' stripping from devpath argument
authorKay Sievers <kay.sievers@suse.de>
Fri, 18 Aug 2006 00:33:46 +0000 (02:33 +0200)
committerKay Sievers <kay.sievers@suse.de>
Fri, 18 Aug 2006 00:33:46 +0000 (02:33 +0200)
udev_utils_file.c
udevinfo.c
udevtest.c

index acaffdc..6a046e8 100644 (file)
@@ -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)
index 6b73681..1a10f9a 100644 (file)
@@ -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);
index 078674a..22627c0 100644 (file)
@@ -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 <devpath>");
                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);