summaryrefslogtreecommitdiff
path: root/src/helper
diff options
context:
space:
mode:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-06-12 01:39:51 +0000
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-06-12 01:39:51 +0000
commit5af1bdcff468ae8fdb04f1d4d666d20b5fd0b73d (patch)
tree1bf51b17e19097b4a6ea6a31e4e88e08cae70ddc /src/helper
parent5c123481a12b229df1f20515515024aa26457726 (diff)
downloadopenocd_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.c38
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;
}