From f177a6f09ff5d702fd01619e0db05e92a99976d7 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 24 Oct 2011 15:52:14 +0100 Subject: [PATCH] [cmdline] Fix up "sleep" argument parsing Use parse_integer() rather than strtoul() to allow parsing errors to be reported in a meaningful way. Signed-off-by: Michael Brown --- src/core/exec.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/exec.c b/src/core/exec.c index cbbccdfa..bcd990e0 100644 --- a/src/core/exec.c +++ b/src/core/exec.c @@ -548,17 +548,25 @@ static struct command_descriptor sleep_cmd = */ static int sleep_exec ( int argc, char **argv ) { struct sleep_options opts; - unsigned long start, delay; + unsigned int seconds; + unsigned long start; + unsigned long delay; int rc; /* Parse options */ if ( ( rc = parse_options ( argc, argv, &sleep_cmd, &opts ) ) != 0 ) return rc; + /* Parse number of seconds */ + if ( ( rc = parse_integer ( argv[optind], &seconds ) ) != 0 ) + return rc; + + /* Delay for specified number of seconds */ start = currticks(); - delay = strtoul ( argv[1], NULL, 0 ) * ticks_per_sec(); + delay = ( seconds * TICKS_PER_SEC ); while ( ( currticks() - start ) <= delay ) cpu_nap(); + return 0; }