diff options
author | zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-06-09 02:23:27 +0000 |
---|---|---|
committer | zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-06-09 02:23:27 +0000 |
commit | 9f185eef7d69e3c9d4390f5f7dd78a7644b01c80 (patch) | |
tree | 12328cf7849dc9e387e44cb4b0aef4974c402003 | |
parent | 1c74d0e3a4037400e81147b15e2da09b033fb46f (diff) | |
download | openocd_libswd-9f185eef7d69e3c9d4390f5f7dd78a7644b01c80.tar.gz openocd_libswd-9f185eef7d69e3c9d4390f5f7dd78a7644b01c80.tar.bz2 openocd_libswd-9f185eef7d69e3c9d4390f5f7dd78a7644b01c80.tar.xz openocd_libswd-9f185eef7d69e3c9d4390f5f7dd78a7644b01c80.zip |
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
-rw-r--r-- | src/jtag/jtag.c | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c index a057453b..6e2f63d2 100644 --- a/src/jtag/jtag.c +++ b/src/jtag/jtag.c @@ -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; + /* 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; + } + + /* 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; - 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; + return jtag_tap_by_abs_position(n); } jtag_tap_t * jtag_tap_by_jim_obj( Jim_Interp *interp, Jim_Obj *o ) |