log: fix kept_alive() and report expired timeout
[fw/openocd] / src / helper / options.c
index 0016659148aa0b39e37660b9373ac8e2a5e2cc31..6622ece6ca2c076854301517e7aef959ab500f52 100644 (file)
 #if IS_DARWIN
 #include <libproc.h>
 #endif
+/* sys/sysctl.h is deprecated on Linux from glibc 2.30 */
+#ifndef __linux__
 #ifdef HAVE_SYS_SYSCTL_H
 #include <sys/sysctl.h>
 #endif
+#endif
+#if IS_WIN32 && !IS_CYGWIN
+#include <windows.h>
+#endif
 
 static int help_flag, version_flag;
 
@@ -266,19 +272,14 @@ int parse_cmdline_args(struct command_context *cmd_ctx, int argc, char *argv[])
                                break;
                        case 'd':               /* --debug | -d */
                        {
-                               char *command = alloc_printf("debug_level %s", optarg ? optarg : "3");
-                               int retval = command_run_line(cmd_ctx, command);
-                               free(command);
+                               int retval = command_run_linef(cmd_ctx, "debug_level %s", optarg ? optarg : "3");
                                if (retval != ERROR_OK)
                                        return retval;
                                break;
                        }
                        case 'l':               /* --log_output | -l */
-                               if (optarg) {
-                                       char *command = alloc_printf("log_output %s", optarg);
-                                       command_run_line(cmd_ctx, command);
-                                       free(command);
-                               }
+                               if (optarg)
+                                       command_run_linef(cmd_ctx, "log_output %s", optarg);
                                break;
                        case 'c':               /* --command | -c */
                                if (optarg)
@@ -291,9 +292,18 @@ int parse_cmdline_args(struct command_context *cmd_ctx, int argc, char *argv[])
                                LOG_WARNING("deprecated option: -p/--pipe. Use '-c \"gdb_port pipe; "
                                                "log_output openocd.log\"' instead.");
                                break;
+                       default:  /* '?' */
+                               /* getopt will emit an error message, all we have to do is bail. */
+                               return ERROR_FAIL;
                }
        }
 
+       if (optind < argc) {
+               /* Catch extra arguments on the command line. */
+               LOG_OUTPUT("Unexpected command line argument: %s\n", argv[optind]);
+               return ERROR_FAIL;
+       }
+
        if (help_flag) {
                LOG_OUTPUT("Open On-Chip Debugger\nLicensed under GNU GPL v2\n");
                LOG_OUTPUT("--help       | -h\tdisplay this help\n");