]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[time] Use generic option-parsing library
authorMichael Brown <mcb30@ipxe.org>
Sun, 21 Nov 2010 19:48:00 +0000 (19:48 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 22 Nov 2010 00:34:47 +0000 (00:34 +0000)
Total saving: 88 bytes.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/hci/commands/time_cmd.c

index 5e2612a6d23f094249e4510a5f93ab5552cc7567..e7ad4a7685aa4144861db5d51a7b5b02c8a2504f 100644 (file)
 #include <string.h>
 #include <unistd.h>
 #include <ipxe/command.h>
+#include <ipxe/parseopt.h>
 #include <ipxe/nap.h>
 #include <ipxe/timer.h>
 
+/** @file
+ *
+ * Time commands
+ *
+ */
+
+/** "time" options */
+struct time_options {};
+
+/** "time" option list */
+static struct option_descriptor time_opts[] = {};
+
+/** "time" command descriptor */
+static struct command_descriptor time_cmd =
+       COMMAND_DESC ( struct time_options, time_opts, 1, MAX_ARGUMENTS,
+                      "<command>", "Time a command" );
+
+/**
+ * "time" command
+ *
+ * @v argc             Argument count
+ * @v argv             Argument list
+ * @ret rc             Return status code
+ */
 static int time_exec ( int argc, char **argv ) {
+       struct time_options opts;
        unsigned long start;
-       int rc, secs;
-
-       if ( argc == 1 ||
-            !strcmp ( argv[1], "--help" ) ||
-            !strcmp ( argv[1], "-h" ) )
-       {
-               printf ( "Usage:\n"
-                        "  %s <command>\n"
-                        "\n"
-                        "Time a command\n",
-                        argv[0] );
-               return 1;
-       }
+       int secs;
+       int rc;
+
+       /* Parse options */
+       if ( ( rc = parse_options ( argc, argv, &time_cmd, &opts ) ) != 0 )
+               return rc;
 
        start = currticks();
        rc = execv ( argv[1], argv + 1 );
@@ -52,25 +71,39 @@ static int time_exec ( int argc, char **argv ) {
        return rc;
 }
 
+/** "time" command */
 struct command time_command __command = {
        .name = "time",
        .exec = time_exec,
 };
 
+/** "sleep" options */
+struct sleep_options {};
+
+/** "sleep" option list */
+static struct option_descriptor sleep_opts[] = {};
+
+/** "sleep" command descriptor */
+static struct command_descriptor sleep_cmd =
+       COMMAND_DESC ( struct sleep_options, sleep_opts, 1, 1,
+                      "<seconds>", "Sleep for <seconds> seconds" );
+
+/**
+ * "sleep" command
+ *
+ * @v argc             Argument count
+ * @v argv             Argument list
+ * @ret rc             Return status code
+ */
 static int sleep_exec ( int argc, char **argv ) {
+       struct sleep_options opts;
        unsigned long start, delay;
+       int rc;
+
+       /* Parse options */
+       if ( ( rc = parse_options ( argc, argv, &sleep_cmd, &opts ) ) != 0 )
+               return rc;
 
-       if ( argc == 1 ||
-            !strcmp ( argv[1], "--help" ) ||
-            !strcmp ( argv[1], "-h" ))
-       {
-               printf ( "Usage:\n"
-                        "  %s <seconds>\n"
-                        "\n"
-                        "Sleep for <seconds> seconds\n",
-                        argv[0] );
-               return 1;
-       }
        start = currticks();
        delay = strtoul ( argv[1], NULL, 0 ) * ticks_per_sec();
        while ( ( currticks() - start ) <= delay )
@@ -78,6 +111,7 @@ static int sleep_exec ( int argc, char **argv ) {
        return 0;
 }
 
+/** "sleep" command */
 struct command sleep_command __command = {
        .name = "sleep",
        .exec = sleep_exec,