aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Linares <matiaslina@openmailbox.org>2015-05-07 09:31:49 +0200
committerMarc André Tanner <mat@brain-dump.org>2015-05-07 09:31:49 +0200
commit55b1175aa7ee4c3f790c23dcca279dc5ed209725 (patch)
tree1dad75f6afafb4c794ea74840ca548ed06b777ae
parent87c01a74d507885346dc89bfc103870903e56b64 (diff)
downloadvis-55b1175aa7ee4c3f790c23dcca279dc5ed209725.tar.gz
vis-55b1175aa7ee4c3f790c23dcca279dc5ed209725.tar.xz
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.
-rw-r--r--vis.13
-rw-r--r--vis.c6
2 files changed, 8 insertions, 1 deletions
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 <mat at brain-dump.org>
diff --git a/vis.c b/vis.c
index 690fb2d..42b224e 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;