diff options
author | zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-06-12 01:39:51 +0000 |
---|---|---|
committer | zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-06-12 01:39:51 +0000 |
commit | 5af1bdcff468ae8fdb04f1d4d666d20b5fd0b73d (patch) | |
tree | 1bf51b17e19097b4a6ea6a31e4e88e08cae70ddc /src/helper | |
parent | 5c123481a12b229df1f20515515024aa26457726 (diff) | |
download | openocd_libswd-5af1bdcff468ae8fdb04f1d4d666d20b5fd0b73d.tar.gz openocd_libswd-5af1bdcff468ae8fdb04f1d4d666d20b5fd0b73d.tar.bz2 openocd_libswd-5af1bdcff468ae8fdb04f1d4d666d20b5fd0b73d.tar.xz openocd_libswd-5af1bdcff468ae8fdb04f1d4d666d20b5fd0b73d.zip |
Simplify handle_sleep_command:
- Use new parse_ulong to ensure duration parses as a valid number.
- Rework logic to improve readability and seliminate uperfluous braces.
- Change whitespace to improve style.
git-svn-id: svn://svn.berlios.de/openocd/trunk@2207 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/helper')
-rw-r--r-- | src/helper/command.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/helper/command.c b/src/helper/command.c index bd6b693e..f2a5f56b 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -757,38 +757,36 @@ int command_context_mode(command_context_t *cmd_ctx, enum command_mode mode) /* sleep command sleeps for <n> miliseconds * this is useful in target startup scripts */ -int handle_sleep_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) +int handle_sleep_command(struct command_context_s *cmd_ctx, + char *cmd, char **args, int argc) { - unsigned long duration = 0; - int busy = 0; - - if (argc==1) - { - - } else if (argc==2) + bool busy = false; + if (argc == 2) { - if (strcmp(args[1], "busy")!=0) + if (strcmp(args[1], "busy") == 0) + busy = true; + else return ERROR_COMMAND_SYNTAX_ERROR; - busy = 1; - } else - { - return ERROR_COMMAND_SYNTAX_ERROR; } + else if (argc < 1 || argc > 2) + return ERROR_COMMAND_SYNTAX_ERROR; - duration = strtoul(args[0], NULL, 0); + unsigned long duration = 0; + int retval = parse_ulong(args[0], &duration); + if (ERROR_OK != retval) + return retval; - if (busy) + if (!busy) { - busy_sleep(duration); - } else - { - long long then=timeval_ms(); - while ((timeval_ms()-then)<(long long)duration) + long long then = timeval_ms(); + while (timeval_ms() - then < (long long)duration) { target_call_timer_callbacks_now(); usleep(1000); } } + else + busy_sleep(duration); return ERROR_OK; } |