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:
parent
1c74d0e3a4
commit
9f185eef7d
|
@ -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 )
|
||||
|
|
Loading…
Reference in New Issue