* Copyright (C) 2005 by Dominic Rath *
* Dominic.Rath@gmx.de *
* *
- * Copyright (C) 2007,2008 Øyvind Harboe *
+ * Copyright (C) 2007,2008 Øyvind Harboe *
* oyvind.harboe@zylin.com *
* *
* Copyright (C) 2008, Duane Ellis *
words[i] = strdup(w);
if (words[i] == NULL)
{
+ int j;
+ for (j = 0; j < i; j++)
+ free(words[j]);
+ free(words);
return JIM_ERR;
}
}
void command_output_text(command_context_t *context, const char *data)
{
- if (context && context->output_handler && data){
+ if (context && context->output_handler && data) {
context->output_handler(context, data);
}
}
interp->cb_fflush = openocd_jim_fflush;
interp->cb_fgets = openocd_jim_fgets;
- add_default_dirs();
-
#if !BUILD_ECOSBOARD
Jim_EventLoopOnLoad(interp);
#endif
int parse##name(const char *str, type *ul) \
{ \
if (!*str) \
+ { \
+ LOG_ERROR("Invalid command argument"); \
return ERROR_COMMAND_ARGUMENT_INVALID; \
+ } \
char *end; \
*ul = func(str, &end, 0); \
if (*end) \
+ { \
+ LOG_ERROR("Invalid command argument"); \
return ERROR_COMMAND_ARGUMENT_INVALID; \
+ } \
if ((max == *ul) && (ERANGE == errno)) \
+ { \
+ LOG_ERROR("Argument overflow"); \
return ERROR_COMMAND_ARGUMENT_OVERFLOW; \
+ } \
if (min && (min == *ul) && (ERANGE == errno)) \
+ { \
+ LOG_ERROR("Argument underflow"); \
return ERROR_COMMAND_ARGUMENT_UNDERFLOW; \
+ } \
return ERROR_OK; \
}
DEFINE_PARSE_NUM_TYPE(_ulong, unsigned long , strtoul, 0, ULONG_MAX)
return ERROR_COMMAND_ARGUMENT_UNDERFLOW; \
*ul = n; \
return ERROR_OK; \
- }
+ }
#define DEFINE_PARSE_ULONG(name, type, min, max) \
DEFINE_PARSE_WRAPPER(name, type, min, max, unsigned long, _ulong)