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
This commit is contained in:
zwelch 2009-06-12 01:39:51 +00:00
parent 5c123481a1
commit 5af1bdcff4
1 changed files with 18 additions and 20 deletions

View File

@ -757,38 +757,36 @@ int command_context_mode(command_context_t *cmd_ctx, enum command_mode mode)
/* sleep command sleeps for <n> miliseconds /* sleep command sleeps for <n> miliseconds
* this is useful in target startup scripts * 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; bool busy = false;
int busy = 0; if (argc == 2)
if (argc==1)
{ {
if (strcmp(args[1], "busy") == 0)
} else if (argc==2) busy = true;
{ else
if (strcmp(args[1], "busy")!=0)
return ERROR_COMMAND_SYNTAX_ERROR; 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); long long then = timeval_ms();
} else while (timeval_ms() - then < (long long)duration)
{
long long then=timeval_ms();
while ((timeval_ms()-then)<(long long)duration)
{ {
target_call_timer_callbacks_now(); target_call_timer_callbacks_now();
usleep(1000); usleep(1000);
} }
} }
else
busy_sleep(duration);
return ERROR_OK; return ERROR_OK;
} }