summary refs log tree commit diff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bin/hi.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/bin/hi.c b/bin/hi.c
index 68a50469..3c312c4a 100644
--- a/bin/hi.c
+++ b/bin/hi.c
@@ -349,10 +349,11 @@ enum Option {
 	OptionLen,
 };
 
-static const char *OptionKey[OptionLen] = {
+static const char *OptionKey[OptionLen + 1] = {
 #define X(option, key) [option] = key,
 	ENUM_OPTION
 #undef X
+	NULL,
 };
 
 typedef void HeaderFn(const char *opts[]);
@@ -649,13 +650,6 @@ static bool findFormat(struct Format *format, const char *name) {
 	return false;
 }
 
-static bool findOption(enum Option *opt, const char *key) {
-	for (*opt = 0; *opt < OptionLen; ++*opt) {
-		if (!strcmp(key, OptionKey[*opt])) return true;
-	}
-	return false;
-}
-
 int main(int argc, char *argv[]) {
 	setlocale(LC_CTYPE, "");
 
@@ -680,14 +674,14 @@ int main(int argc, char *argv[]) {
 			}
 			break; case 'n': name = optarg;
 			break; case 'o': {
+				char *val;
 				enum Option key;
-				char *keystr, *valstr;
-				while (NULL != (valstr = strsep(&optarg, ","))) {
-					keystr = strsep(&valstr, "=");
-					if (!findOption(&key, keystr)) {
-						errx(EX_USAGE, "no such option %s", keystr);
+				while (optarg[0]) {
+					key = getsubopt(&optarg, (char *const *)OptionKey, &val);
+					if (key >= OptionLen) {
+						errx(EX_USAGE, "no such option %s", suboptarg);
 					}
-					opts[key] = (valstr ? valstr : keystr);
+					opts[key] = (val ? val : "");
 				}
 			}
 			break; default: return EX_USAGE;
td colspan='3' class='logmsg'> 2019-02-17Simplify temp trap in upJune McEnroe 2019-02-17Add line numbers to hiJune McEnroe Renames previous -n option to -m to stay consistent with cat -n. Prefixing lines with line numbers affects where the first tab indent ends up relative to the text above it. Not sure if it's worth fixing somehow. 2019-02-17Always split spans after newlinesJune McEnroe Simplifies ANSI and IRC output code, and prepares for line numbered output. 2019-02-15Color format specifiers light cyan in vimJune McEnroe 2019-02-15Highlight Interp as yellowJune McEnroe 2019-02-15Highlight strings in sh command substitutionsJune McEnroe 2019-02-15Add nmap gpJune McEnroe 2019-02-14Avoid newline when copying URL to pasteboardJune McEnroe 2019-02-13Add forgotten "sixth" book of H2G2June McEnroe