Skip to content

Commit 6eb0e47

Browse files
authoredFeb 5, 2025
Fix usage, require pattern (#22)
- The usage of getopt shifted argv which usage relied on. - Fix requirement of having a pattern in the non-pattern-file case.
1 parent fc2a6cb commit 6eb0e47

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed
 

‎bgrep.c

+10-11
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#endif
5151

5252
int bytes_before = 0, bytes_after = 0;
53+
char **original_argv;
5354

5455
void die(const char* msg, ...);
5556

@@ -251,12 +252,12 @@ void die(const char* msg, ...)
251252
exit(1);
252253
}
253254

254-
void usage(char** argv)
255+
void usage()
255256
{
256257
fprintf(stderr, "bgrep version: %s\n", BGREP_VERSION);
257258
fprintf(stderr, "usage:\n");
258-
fprintf(stderr, " %s [-r] [-B bytes] [-A bytes] [-C bytes] <hex> [<path> [...]]\n", *argv);
259-
fprintf(stderr, " %s [-r] -f <pattern> [-m <mask>] [<path> [...]]\n", *argv);
259+
fprintf(stderr, " %s [-r] [-B bytes] [-A bytes] [-C bytes] <hex> [<path> [...]]\n", *original_argv);
260+
fprintf(stderr, " %s [-r] -f <pattern> [-m <mask>] [<path> [...]]\n", *original_argv);
260261
exit(1);
261262
}
262263

@@ -288,7 +289,7 @@ void parse_opts(int argc, char** argv, Options* options)
288289
options->recurse = true;
289290
break;
290291
default:
291-
usage(argv);
292+
usage();
292293
}
293294
}
294295

@@ -304,11 +305,7 @@ int main(int argc, char **argv)
304305
unsigned char *value, *mask;
305306
int len = 0;
306307

307-
if (argc < 2)
308-
{
309-
usage(argv);
310-
return 1;
311-
}
308+
original_argv = argv;
312309

313310
parse_opts(argc, argv, &options);
314311
argv += optind; /* advance the pointer to the first non-opt arg */
@@ -384,8 +381,10 @@ int main(int argc, char **argv)
384381
for (int i = 0; i < len; i++)
385382
value[i] &= mask[i];
386383
}
387-
}
388-
else
384+
} else if (argc == 0) {
385+
// a pattern is required.
386+
usage();
387+
} else
389388
{
390389
char *h = *argv++;
391390
argc--;

0 commit comments

Comments
 (0)