Simplify and fix bug in jtag_tap_by_string:

- Bug fix: Use unsigned type and strtoul when parsing for position number.
- Simplify logic by returning directly when a tap is found by name.
- Reduce scope: declare temporary variables with first use.
- Bring code up to current style guidelines.


git-svn-id: svn://svn.berlios.de/openocd/trunk@2141 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
zwelch 2009-06-09 02:23:27 +00:00
parent 1c74d0e3a4
commit 9f185eef7d
1 changed files with 16 additions and 23 deletions

View File

@ -279,31 +279,24 @@ void jtag_tap_add(struct jtag_tap_s *t)
*tap = t;
}
jtag_tap_t *jtag_tap_by_string( const char *s )
jtag_tap_t *jtag_tap_by_string(const char *s)
{
jtag_tap_t *t;
char *cp;
/* try by name first */
jtag_tap_t *t = jtag_all_taps();
while (t)
{
if (0 == strcmp(t->dotted_name, s))
return t;
t = t->next_tap;
}
t = jtag_all_taps();
/* try name first */
while(t){
if( 0 == strcmp( t->dotted_name, s ) ){
break;
} else {
t = t->next_tap;
}
}
/* backup plan is by number */
if( t == NULL ){
/* ok - is "s" a number? */
int n;
n = strtol( s, &cp, 0 );
if( (s != cp) && (*cp == 0) ){
/* Then it is... */
t = jtag_tap_by_abs_position(n);
}
}
return t;
/* no tap found by name, so try to parse the name as a number */
char *cp;
unsigned n = strtoul(s, &cp, 0);
if ((s == cp) || (*cp != 0))
return NULL;
return jtag_tap_by_abs_position(n);
}
jtag_tap_t * jtag_tap_by_jim_obj( Jim_Interp *interp, Jim_Obj *o )