diff options
Diffstat (limited to 'bin/sh')
-rw-r--r-- | bin/sh/eval.c | 6 | ||||
-rw-r--r-- | bin/sh/main.c | 10 |
2 files changed, 14 insertions, 2 deletions
diff --git a/bin/sh/eval.c b/bin/sh/eval.c index a47d045..e2f66ed 100644 --- a/bin/sh/eval.c +++ b/bin/sh/eval.c @@ -1170,6 +1170,12 @@ truecmd(int argc __unused, char **argv __unused) int execcmd(int argc, char **argv) { + /* + * Because we have historically not supported any options, + * only treat "--" specially. + */ + if (argc > 1 && strcmp(argv[1], "--") == 0) + argc--, argv++; if (argc > 1) { struct strlist *sp; diff --git a/bin/sh/main.c b/bin/sh/main.c index ecbb12d..15ee9e7 100644 --- a/bin/sh/main.c +++ b/bin/sh/main.c @@ -314,14 +314,20 @@ find_dot_file(char *basename) int dotcmd(int argc, char **argv) { - char *fullname; + char *filename, *fullname; if (argc < 2) error("missing filename"); exitstatus = 0; - fullname = find_dot_file(argv[1]); + /* + * Because we have historically not supported any options, + * only treat "--" specially. + */ + filename = argc > 2 && strcmp(argv[1], "--") == 0 ? argv[2] : argv[1]; + + fullname = find_dot_file(filename); setinputfile(fullname, 1); commandname = fullname; cmdloop(0); |