I attached the patch with the corrections on vis.c and the new info on the
man page.

Sorry for the previous, bad tested, patch.

Greetings.

-- 
XMPP/Mail: matiasl...@openmailbox.org
GPG: http://www.famaf.unc.edu.ar/~mlm0111/pubkey.asc | BBD8 CADC C236 AD16
From 20b251fe256171252193caabab0dff4b100b15bc Mon Sep 17 00:00:00 2001
From: Matias Linares <matiasl...@openmailbox.org>
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 <mat at brain-dump.org>
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

Attachment: pgp6aieJtC1B9.pgp
Description: PGP signature

Reply via email to