From f679bb1072e2beab69e261155cc003f04f1e554b Mon Sep 17 00:00:00 2001 From: mar77i Date: Thu, 12 Mar 2026 09:11:49 +0100 Subject: [PATCH] don't need a counter variable on argv --- perftrace.c | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/perftrace.c b/perftrace.c index e40a1f7..1b3a711 100644 --- a/perftrace.c +++ b/perftrace.c @@ -46,15 +46,15 @@ static inline int parse_delay(const char *ptr, struct timeval *delay) { } static inline int parse_arg_delay( - int argc, char **argv, int i, struct args *a, long clock_ticks + int argc, char **argv, struct args *a, long clock_ticks ) { - switch (argv[i][7]) { + switch (*argv[7]) { case '=': - if (parse_delay(argv[i] + 8, &a->delay) < 0) + if (parse_delay(*argv + 8, &a->delay) < 0) goto error; break; case '\0': - if (++i >= argc || parse_delay(argv[i], &a->delay) < 0) + if (argc-- == 0 || parse_delay(*++argv, &a->delay) < 0) goto error; break; default: @@ -68,7 +68,7 @@ static inline int parse_arg_delay( fprintf(stderr, "Error: delay too small!\n"); return -1; } - return i; + return argc; error: fprintf(stderr, "Error: parsing '--delay'\n"); return -1; @@ -85,52 +85,51 @@ static inline pid_t parse_pid(const char *ptr) { return pid; } -static inline int parse_arg_pid(int argc, char **argv, int i, struct args *a) { +static inline int parse_arg_pid(int argc, char **argv, struct args *a) { if (a->pid != 0) { fprintf(stderr, "Error: '--pid' already specified.\n"); return -1; } - switch (argv[i][5]) { + switch (*argv[5]) { case '=': - if ((a->pid = parse_pid(argv[i] + 6)) < 0) + if ((a->pid = parse_pid(*argv + 6)) < 0) break; - return i; + return argc; case '\0': - if (++i >= argc || (a->pid = parse_pid(argv[i])) < 0) + if (argc-- == 0 || (a->pid = parse_pid(*++argv)) < 0) break; - return i; + return argc; } fprintf(stderr, "Error: parsing '--pid'\n"); return -1; } -static inline int parse_arg_argv(int argc, char **argv, int i, struct args *a) { +static inline int parse_arg_argv(int argc, char **argv, struct args *a) { if (a->pid != 0) { fprintf(stderr, "Error: '--pid' already specified.\n"); return -1; } - if (++i >= argc) { + if (argc-- == 0) { fprintf(stderr, "Error: arguments expected after '--'\n"); return -1; } - a->argv = argv + i; + a->argv = ++argv; return argc; } int parse_args(int argc, char **argv, struct args *a, long clock_ticks) { - int i; - for (i = 1; i < argc; i++) { - if (strncmp(argv[i], "--delay", 7) == 0) - i = parse_arg_delay(argc, argv, i, a, clock_ticks); - else if (strncmp(argv[i], "--pid", 5) == 0) - i = parse_arg_pid(argc, argv, i, a); - else if (strcmp(argv[i], "--") == 0) - i = parse_arg_argv(argc, argv, i, a); + for (argv++, argc--; argc > 0; argv++, argc--) { + if (strncmp(*argv, "--delay", 7) == 0) + argc = parse_arg_delay(argc, argv, a, clock_ticks); + else if (strncmp(*argv, "--pid", 5) == 0) + argc = parse_arg_pid(argc, argv, a); + else if (strcmp(*argv, "--") == 0) + argc = parse_arg_argv(argc, argv, a); else { - fprintf(stderr, "Error: Invalid arguments.\n"); + fprintf(stderr, "Error: Invalid argument: '%s'.\n", *argv); return -1; } - if (i == -1) + if (argc == -1) return -1; } if (a->pid == 0 && a->argv == NULL) { -- 2.53.0