summaryrefslogtreecommitdiff
path: root/devel/lcc/patches/patch-ac
blob: 318664bb0a49166e095f74e22b0a50c5a92d0de8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
$NetBSD: patch-ac,v 1.1.1.1 2001/07/21 02:51:36 gmcgarry Exp $
--- etc/lcc.c.orig	Tue Aug 22 19:56:56 2000
+++ etc/lcc.c		Tue Aug 22 21:24:43 2000
@@ -552,6 +552,20 @@
 	exit(n = 100);
 }
 
+/* parse -W[alp] argument, splitting at commas, a la gcc */
+static List wappend (char *warg, List lst) {
+	if (*warg != ',') return append (warg, lst);
+	warg++;
+	do {
+		char *s = warg;
+		for (; *warg && *warg != ','; warg++)
+			;
+		if (*warg) *warg++= '\0';
+		if (*s) lst = append (s, lst);
+	} while (*warg);
+	return lst;
+}
+
 /* opt - process option in arg */
 static void opt(char *arg) {
 	switch (arg[1]) {	/* multi-character options */
@@ -563,7 +577,7 @@
 					return;
 				break;
 			case 'p':
-				plist = append(&arg[3], plist);
+				plist = wappend(&arg[3], plist);
 				return;
 			case 'f':
 				if (strcmp(&arg[3], "-C") || option("-b")) {
@@ -572,10 +586,10 @@
 				}
 				break; /* and fall thru */
 			case 'a':
-				alist = append(&arg[3], alist);
+				alist = wappend(&arg[3], alist);
 				return;
 			case 'l':
-				llist[0] = append(&arg[3], llist[0]);
+				llist[0] = wappend(&arg[3], llist[0]);
 				return;
 			}
 		fprintf(stderr, "%s: %s ignored\n", progname, arg);