chiark / gitweb /
update source file headers
[elogind.git] / udevinfo.c
index d6f564079f0510687c67576efc52434e0c4af6cf..3146a96119e73826550b528f8061b12aacec4770 100644 (file)
@@ -1,7 +1,5 @@
 /*
- * udevinfo.c - fetches stored device information or sysfs attributes
- *
- * Copyright (C) 2004-2005 Kay Sievers <kay.sievers@vrfy.org>
+ * Copyright (C) 2004-2006 Kay Sievers <kay.sievers@vrfy.org>
  *
  *     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
@@ -14,7 +12,7 @@
  * 
  *     You should have received a copy of the GNU General Public License along
  *     with this program; if not, write to the Free Software Foundation, Inc.,
- *     675 Mass Ave, Cambridge, MA 02139, USA.
+ *     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  *
  */
 
@@ -163,30 +161,8 @@ static void export_db(void fnct(struct udevice *udev)) {
        name_list_cleanup(&name_list);
 }
 
-static void print_help(void)
-{
-       fprintf(stderr, "Usage: udevinfo [-anpqrVh]\n"
-              "  -q TYPE  query database for the specified value:\n"
-              "             'name'    name of device node\n"
-              "             'symlink' pointing to node\n"
-              "             'path'    sysfs device path\n"
-              "             'env'     the device related imported environment\n"
-              "             'all'     all values\n"
-              "\n"
-              "  -p PATH  sysfs device path used for query or chain\n"
-              "  -n NAME  node/symlink name used for query\n"
-              "\n"
-              "  -r       prepend to query result or print udev_root\n"
-              "  -a       print all SYSFS_attributes along the device chain\n"
-              "  -e       export the content of the udev database\n"
-              "  -V       print udev version\n"
-              "  -h       print this help text\n"
-              "\n");
-}
-
 int main(int argc, char *argv[], char *envp[])
 {
-       static const char short_options[] = "aden:p:q:rVh";
        int option;
        struct udevice *udev;
        int root = 0;
@@ -213,7 +189,6 @@ int main(int argc, char *argv[], char *envp[])
        int rc = 0;
 
        logging_init("udevinfo");
-
        udev_config_init();
        sysfs_init();
 
@@ -224,8 +199,9 @@ int main(int argc, char *argv[], char *envp[])
        }
 
        /* get command line options */
+       opterr = 0;
        while (1) {
-               option = getopt(argc, argv, short_options);
+               option = getopt(argc, argv, ":aden:p:q:rVh");
                if (option == -1)
                        break;
 
@@ -291,9 +267,30 @@ int main(int argc, char *argv[], char *envp[])
                        printf("udevinfo, version %s\n", UDEV_VERSION);
                        goto exit;
                case 'h':
+                       printf("Usage: udevinfo [-anpqrVh]\n"
+                              "  -q TYPE  query database for the specified value:\n"
+                              "             'name'    name of device node\n"
+                              "             'symlink' pointing to node\n"
+                              "             'path'    sysfs device path\n"
+                              "             'env'     the device related imported environment\n"
+                              "             'all'     all values\n"
+                              "\n"
+                              "  -p PATH  sysfs device path used for query or chain\n"
+                              "  -n NAME  node/symlink name used for query\n"
+                              "\n"
+                              "  -r       prepend to query result or print udev_root\n"
+                              "  -a       print all SYSFS_attributes along the device chain\n"
+                              "  -e       export the content of the udev database\n"
+                              "  -V       print udev version\n"
+                              "  -h       print this help text\n"
+                              "\n");
+                       goto exit;
+               case ':':
+                       fprintf(stderr, "missing argument for '%c'\n", optopt);
+                       goto exit;
                case '?':
                default:
-                       print_help();
+                       fprintf(stderr, "unrecognized option '%c'\n", optopt);
                        goto exit;
                }
        }
@@ -352,7 +349,7 @@ int main(int argc, char *argv[], char *envp[])
                        print_record(udev);
                        break;
                default:
-                       print_help();
+                       fprintf(stderr, "unknown query type\n");
                        break;
                }
                break;
@@ -378,7 +375,7 @@ int main(int argc, char *argv[], char *envp[])
                printf("%s\n", udev_root);
                break;
        default:
-               print_help();
+               fprintf(stderr, "missing option\n");
                rc = 1;
                break;
        }