[time] Use generic option-parsing library
Total saving: 88 bytes. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
ec42ba366f
commit
817c544697
|
@ -24,24 +24,43 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <ipxe/command.h>
|
#include <ipxe/command.h>
|
||||||
|
#include <ipxe/parseopt.h>
|
||||||
#include <ipxe/nap.h>
|
#include <ipxe/nap.h>
|
||||||
#include <ipxe/timer.h>
|
#include <ipxe/timer.h>
|
||||||
|
|
||||||
static int time_exec ( int argc, char **argv ) {
|
/** @file
|
||||||
unsigned long start;
|
*
|
||||||
int rc, secs;
|
* Time commands
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
if ( argc == 1 ||
|
/** "time" options */
|
||||||
!strcmp ( argv[1], "--help" ) ||
|
struct time_options {};
|
||||||
!strcmp ( argv[1], "-h" ) )
|
|
||||||
{
|
/** "time" option list */
|
||||||
printf ( "Usage:\n"
|
static struct option_descriptor time_opts[] = {};
|
||||||
" %s <command>\n"
|
|
||||||
"\n"
|
/** "time" command descriptor */
|
||||||
"Time a command\n",
|
static struct command_descriptor time_cmd =
|
||||||
argv[0] );
|
COMMAND_DESC ( struct time_options, time_opts, 1, MAX_ARGUMENTS,
|
||||||
return 1;
|
"<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 secs;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/* Parse options */
|
||||||
|
if ( ( rc = parse_options ( argc, argv, &time_cmd, &opts ) ) != 0 )
|
||||||
|
return rc;
|
||||||
|
|
||||||
start = currticks();
|
start = currticks();
|
||||||
rc = execv ( argv[1], argv + 1 );
|
rc = execv ( argv[1], argv + 1 );
|
||||||
|
@ -52,25 +71,39 @@ static int time_exec ( int argc, char **argv ) {
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** "time" command */
|
||||||
struct command time_command __command = {
|
struct command time_command __command = {
|
||||||
.name = "time",
|
.name = "time",
|
||||||
.exec = time_exec,
|
.exec = time_exec,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int sleep_exec ( int argc, char **argv ) {
|
/** "sleep" options */
|
||||||
unsigned long start, delay;
|
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();
|
start = currticks();
|
||||||
delay = strtoul ( argv[1], NULL, 0 ) * ticks_per_sec();
|
delay = strtoul ( argv[1], NULL, 0 ) * ticks_per_sec();
|
||||||
while ( ( currticks() - start ) <= delay )
|
while ( ( currticks() - start ) <= delay )
|
||||||
|
@ -78,6 +111,7 @@ static int sleep_exec ( int argc, char **argv ) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** "sleep" command */
|
||||||
struct command sleep_command __command = {
|
struct command sleep_command __command = {
|
||||||
.name = "sleep",
|
.name = "sleep",
|
||||||
.exec = sleep_exec,
|
.exec = sleep_exec,
|
||||||
|
|
Reference in New Issue