diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2019-06-14 10:00:06 +0200 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2020-02-24 10:30:10 +0000 |
commit | 86d8c05eb68866297cbc1ec5f90d3d1634c69a1e (patch) | |
tree | 1c59fe0f5c6e5e1626bcaa7cdcb359dee37bd873 /src/helper/log.c | |
parent | beb610555ad826dda874eee0428deeb1c00ac39d (diff) | |
download | riscv-openocd-86d8c05eb68866297cbc1ec5f90d3d1634c69a1e.zip riscv-openocd-86d8c05eb68866297cbc1ec5f90d3d1634c69a1e.tar.gz riscv-openocd-86d8c05eb68866297cbc1ec5f90d3d1634c69a1e.tar.bz2 |
log: let command "log_output" to set back its default
The default log output is stderr. After the command "log_output"
has been used to set an output log file, it is possible to return
back to stderr only on *NIX hosts specifying a new log output file
as "/dev/stderr", but this is not intuitive, not documented and
not portable out of *NIX.
Make command "log_output" able to set back the default output to
stderr when the parameter is either "default" or is missing.
While there, add debug message to log the change and make the
command return error on incorrect syntax.
Change-Id: I8c7c929780f58e2c23936737c8e7274a96734786
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5233
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Diffstat (limited to 'src/helper/log.c')
-rw-r--r-- | src/helper/log.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/helper/log.c b/src/helper/log.c index 8f48b92..ae26df5 100644 --- a/src/helper/log.c +++ b/src/helper/log.c @@ -220,6 +220,15 @@ COMMAND_HANDLER(handle_debug_level_command) COMMAND_HANDLER(handle_log_output_command) { + if (CMD_ARGC == 0 || (CMD_ARGC == 1 && strcmp(CMD_ARGV[0], "default") == 0)) { + if (log_output != stderr && log_output != NULL) { + /* Close previous log file, if it was open and wasn't stderr. */ + fclose(log_output); + } + log_output = stderr; + LOG_DEBUG("set log_output to default"); + return ERROR_OK; + } if (CMD_ARGC == 1) { FILE *file = fopen(CMD_ARGV[0], "w"); if (file == NULL) { @@ -231,9 +240,11 @@ COMMAND_HANDLER(handle_log_output_command) fclose(log_output); } log_output = file; + LOG_DEBUG("set log_output to \"%s\"", CMD_ARGV[0]); + return ERROR_OK; } - return ERROR_OK; + return ERROR_COMMAND_SYNTAX_ERROR; } static const struct command_registration log_command_handlers[] = { @@ -242,7 +253,7 @@ static const struct command_registration log_command_handlers[] = { .handler = handle_log_output_command, .mode = COMMAND_ANY, .help = "redirect logging to a file (default: stderr)", - .usage = "file_name", + .usage = "[file_name | \"default\"]", }, { .name = "debug_level", |