aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2011-10-27 23:51:50 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2011-10-31 17:41:44 +0000
commit08815946f64ace39b2734dc1a8597d22505f0436 (patch)
treef33a05fc0fc3e2fc7174a1a171453919a7b7fcde
parentfc553327c0a40b3039388bf9139aad2f9dc8fdf1 (diff)
bugfixes: tinker a bit with the targets command
return error when target can not be found instead of ERROR_OK, split fn. Change-Id: Iba5232d3862a490d0995c3bfece23685bd6856e3 Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com> Reviewed-on: http://openocd.zylin.com/131 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
-rw-r--r--src/target/target.c59
1 files changed, 35 insertions, 24 deletions
diff --git a/src/target/target.c b/src/target/target.c
index bd156203..4708a1d6 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -1861,26 +1861,36 @@ int target_write_u8(struct target *target, uint32_t address, uint8_t value)
return retval;
}
+static int find_target(struct command_context *cmd_ctx, const char *name)
+{
+ struct target *target = get_target(name);
+ if (target == NULL) {
+ LOG_ERROR("Target: %s is unknown, try one of:\n", name);
+ return ERROR_FAIL;
+ }
+ if (!target->tap->enabled) {
+ LOG_USER("Target: TAP %s is disabled, "
+ "can't be the current target\n",
+ target->tap->dotted_name);
+ return ERROR_FAIL;
+ }
+
+ cmd_ctx->current_target = target->target_number;
+ return ERROR_OK;
+}
+
+
COMMAND_HANDLER(handle_targets_command)
{
+ int retval = ERROR_OK;
if (CMD_ARGC == 1)
{
- struct target *target = get_target(CMD_ARGV[0]);
- if (target == NULL) {
- command_print(CMD_CTX,"Target: %s is unknown, try one of:\n", CMD_ARGV[0]);
- goto DumpTargets;
- }
- if (!target->tap->enabled) {
- command_print(CMD_CTX,"Target: TAP %s is disabled, "
- "can't be the current target\n",
- target->tap->dotted_name);
- return ERROR_FAIL;
+ retval = find_target(CMD_CTX, CMD_ARGV[0]);
+ if (retval == ERROR_OK) {
+ /* we're done! */
+ return retval;
}
-
- CMD_CTX->current_target = target->target_number;
- return ERROR_OK;
}
-DumpTargets:;
struct target *target = all_targets;
command_print(CMD_CTX, " TargetName Type Endian TapName State ");
@@ -1899,19 +1909,20 @@ DumpTargets:;
marker = '*';
/* keep columns lined up to match the headers above */
- command_print(CMD_CTX, "%2d%c %-18s %-10s %-6s %-18s %s",
- target->target_number,
- marker,
- target_name(target),
- target_type_name(target),
- Jim_Nvp_value2name_simple(nvp_target_endian,
- target->endianness)->name,
- target->tap->dotted_name,
- state);
+ command_print(CMD_CTX,
+ "%2d%c %-18s %-10s %-6s %-18s %s",
+ target->target_number,
+ marker,
+ target_name(target),
+ target_type_name(target),
+ Jim_Nvp_value2name_simple(nvp_target_endian,
+ target->endianness)->name,
+ target->tap->dotted_name,
+ state);
target = target->next;
}
- return ERROR_OK;
+ return retval;
}
/* every 300ms we check for reset & powerdropout and issue a "reset halt" if so. */