From 20b251fe256171252193caabab0dff4b100b15bc Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Wed, 6 May 2015 20:23:50 -0300 Subject: [PATCH] Add '--' as end of options Now it works properly, `vis -- -v` edit a file named `-v`. Also added the proper info to the man page. --- vis.1 | 3 +++ vis.c | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/vis.1 b/vis.1 index 452e02f..63d0103 100644 --- a/vis.1 +++ b/vis.1 @@ -13,5 +13,8 @@ is a highly efficient vim like text editor. .SH OPTIONS .B \-v Print version information to standard output and exit. + +.B \-\- +Denotes the end of the options. Arguments after this will be handled as a file name. This can be used to edit a filename that starts with a '-'. .SH AUTHOR vis is written by Marc André Tanner diff --git a/vis.c b/vis.c index 051f256..cd73d99 100644 --- a/vis.c +++ b/vis.c @@ -2026,9 +2026,13 @@ int main(int argc, char *argv[]) { die("Could not load syntax highlighting definitions\n"); char *cmd = NULL; + bool end_of_options = false; for (int i = 1; i < argc; i++) { - if (argv[i][0] == '-') { + if (argv[i][0] == '-' && !end_of_options) { switch (argv[i][1]) { + case '-': + end_of_options = true; + break; case 'v': die("vis %s, compiled " __DATE__ " " __TIME__ "\n", VERSION); break; -- 2.3.7