summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2019-08-06 08:00:44 -0400
committerJakob Kaivo <jkk@ung.org>2019-08-06 08:00:44 -0400
commite04910c0a714c5beeb181349bcc3abe2fc8fa18e (patch)
tree1714711ae65b1e7838a84445cb0d7dad781c4503
parentb87bd86fc648398cc4eb8cac28b059b246c198d9 (diff)
handle obsolete option syntax with diagnostic messagesHEADmaster
-rw-r--r--strings.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/strings.c b/strings.c
index ee1ba45..4293f06 100644
--- a/strings.c
+++ b/strings.c
@@ -76,6 +76,35 @@ static int strings(const char *path, size_t number, char format)
return 0;
}
+static void fixobsolete(int argc, char *argv[])
+{
+ for (int i = 1; i < argc; i++) {
+ if (argv[i][0] != '-') {
+ return;
+ }
+
+ if (!strcmp(argv[i], "--")) {
+ return;
+ }
+
+ if (!strcmp(argv[i], "-")) {
+ fprintf(stderr, "strings: '-' is obsolete; use '-a'\n");
+ argv[i] = "-a";
+ }
+
+ if (isdigit(argv[i][1])) {
+ fprintf(stderr, "strings: '-#' is obsolete; use '-n #'\n");
+ char *opt = malloc(strlen(argv[i]) + 2);
+ if (opt == NULL) {
+ perror("strings");
+ exit(1);
+ }
+ sprintf(opt, "-n %s", argv[i] + 1);
+ argv[i] = opt;
+ }
+ }
+}
+
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "");
@@ -85,6 +114,7 @@ int main(int argc, char *argv[])
char format = 0;
char *end;
+ fixobsolete(argc, argv);
while ((c = getopt(argc, argv, "an:t:")) != -1) {
switch (c) {
case 'a':