$NetBSD: patch-ex__vops3_c,v 1.1 2012/12/28 03:03:09 dholland Exp $

- declare local functions (and data) static
- fix up function pointer casting mess
- avoid implicit int
- silence warnings about && and || precedence
- silence warnings about unused arguments
- use const for string constants
- declare void functions void


--- ex_vops3.c~	2012-12-27 21:58:41.000000000 +0000
+++ ex_vops3.c
@@ -99,23 +99,26 @@ static char sccsid[] = "@(#)ex_vops3.c	1
  *
  * The code here is very hard to understand.
  */
-line	*llimit;
-int	(*lf)();
+static line	*llimit;
+static bool	wasend;
 
-int lskipa1 __P((register char *));
-int endsent __P((int));
-int endPS __P((void));
-int lskipbal __P((register char *));
-int ltosolid __P((void));
-int lskipatom __P((void));
-int isa __P((register char *));
-int ltosol1 __P((register char *));
-
-#ifdef LISPCODE
-int	lindent();
-#endif
+/*
+ * lf is never called, but is compared against other function pointers.
+ * lindent() is the wrong type, so instead of setting lf = lindent, set
+ * it to 0 and set lf_is_lindent to nonzero. Other assignments to lf
+ * whould be accompanied by lf_is_lindent = 0.
+ */
+static void	(*lf)(int);
+static int	lf_is_lindent;
 
-bool	wasend;
+static int lskipa1 __P((register const char *));
+static int endsent __P((int));
+static int endPS __P((void));
+static int lskipbal __P((register const char *));
+static int ltosolid __P((void));
+static int lskipatom __P((void));
+static int isa __P((register const char *));
+static int ltosol1 __P((register const char *));
 
 /*
  * Find over structure, repeated count times.
@@ -124,9 +127,11 @@ bool	wasend;
  * rather than (), implying past atoms in a list (or a paragraph
  * rather than a sentence.
  */
+int
 llfind(pastatom, cnt, f, limit)
 	bool pastatom;
-	int cnt, (*f)();
+	int cnt;
+	void (*f)(int);
 	line *limit;
 {
 #ifdef	LISPCODE
@@ -142,6 +147,7 @@ llfind(pastatom, cnt, f, limit)
 	 */
 	wasend = 0;
 	lf = f;
+	lf_is_lindent = 0;
 	strcpy(save, linebuf);
 	if (limit == 0)
 		limit = dir < 0 ? one : dol;
@@ -210,7 +216,7 @@ begin:
 			while (!endsent(pastatom))
 				if (!lnext())
 					goto ret;
-			if (!pastatom || wcursor == linebuf && endPS())
+			if (!pastatom || (wcursor == linebuf && endPS()))
 				if (--cnt <= 0)
 					break;
 			if (linebuf[0] == 0) {
@@ -246,7 +252,7 @@ begin:
 		 * If we are not at a section/paragraph division,
 		 * advance to next.
 		 */
-		if (wcursor == icurs && wdot == idot || wcursor != linebuf || !endPS())
+		if ((wcursor == icurs && wdot == idot) || wcursor != linebuf || !endPS())
 			ignore(lskipa1(""));
 	}
 #ifdef LISPCODE
@@ -256,7 +262,7 @@ begin:
 		 * Startup by skipping if at a ( going left or a ) going
 		 * right to keep from getting stuck immediately.
 		 */
-		if (dir < 0 && c == '(' || dir > 0 && c == ')') {
+		if ((dir < 0 && c == '(') || (dir > 0 && c == ')')) {
 			if (!lnext()) {
 				rc = -1;
 				goto ret;
@@ -272,7 +278,7 @@ begin:
 		 */
 		while (cnt > 0) {
 			c = *wcursor;
-			if (dir < 0 && c == ')' || dir > 0 && c == '(') {
+			if ((dir < 0 && c == ')') || (dir > 0 && c == '(')) {
 				if (!lskipbal("()"))
 					goto ret;
 				/*
@@ -285,7 +291,7 @@ begin:
 				if (!lnext() || !ltosolid())
 					goto ret;
 				--cnt;
-			} else if (dir < 0 && c == '(' || dir > 0 && c == ')')
+			} else if ((dir < 0 && c == '(') || (dir > 0 && c == ')'))
 				/* Found a higher level paren */
 				goto ret;
 			else {
@@ -305,12 +311,15 @@ ret:
 /*
  * Is this the end of a sentence?
  */
+static int
 endsent(pastatom)
 	bool pastatom;
 {
 	register char *cp = wcursor;
 	register int c, d;
 
+	(void)pastatom;
+
 	/*
 	 * If this is the beginning of a line, then
 	 * check for the end of a paragraph or section.
@@ -330,7 +339,7 @@ endsent(pastatom)
 		if ((d = *++cp) == 0)
 			return (1);
 	while (any(d, ")]'"));
-	if (*cp == 0 || *cp++ == ' ' && *cp == ' ')
+	if (*cp == 0 || (*cp++ == ' ' && *cp == ' '))
 		return (1);
 tryps:
 	if (cp[1] == 0)
@@ -342,6 +351,7 @@ tryps:
  * End of paragraphs/sections are respective
  * macros as well as blank lines and form feeds.
  */
+static int
 endPS()
 {
 
@@ -351,6 +361,7 @@ endPS()
 }
 
 #ifdef LISPCODE
+int
 lindent(addr)
 	line *addr;
 {
@@ -382,7 +393,8 @@ again:
 	wdot = addr;
 	dir = -1;
 	llimit = one;
-	lf = lindent;
+	lf = 0;
+	lf_is_lindent = 1;
 	if (!lskipbal("()"))
 		i = 0;
 	else if (wcursor == linebuf)
@@ -407,16 +419,19 @@ again:
 }
 #endif
 
+int
 lmatchp(addr)
 	line *addr;
 {
 	register int i;
-	register char *parens, *cp;
+	register const char *parens;
+	register char *cp;
 
 	for (cp = cursor; !any(*cp, "({[)}]");)
 		if (*cp++ == 0)
 			return (0);
 	lf = 0;
+	lf_is_lindent = 0;
 	parens = any(*cp, "()") ? "()" : any(*cp, "[]") ? "[]" : "{}";
 	if (*cp == parens[1]) {
 		dir = -1;
@@ -435,6 +450,7 @@ lmatchp(addr)
 	return (i);
 }
 
+void
 lsmatch(cp)
 	char *cp;
 {
@@ -473,14 +489,16 @@ lsmatch(cp)
 	cursor = scurs;
 }
 
+static int
 ltosolid()
 {
 
 	return (ltosol1("()"));
 }
 
+static int
 ltosol1(parens)
-	register char *parens;
+	register const char *parens;
 {
 	register char *cp;
 
@@ -498,8 +516,9 @@ ltosol1(parens)
 	return (1);
 }
 
+static int
 lskipbal(parens)
-	register char *parens;
+	register const char *parens;
 {
 	register int level = dir;
 	register int c;
@@ -518,14 +537,16 @@ lskipbal(parens)
 	return (1);
 }
 
+static int
 lskipatom()
 {
 
 	return (lskipa1("()"));
 }
 
+static int
 lskipa1(parens)
-	register char *parens;
+	register const char *parens;
 {
 	register int c;
 
@@ -546,6 +567,7 @@ lskipa1(parens)
 	return (ltosol1(parens));
 }
 
+int
 lnext()
 {
 
@@ -555,7 +577,7 @@ lnext()
 		if (*wcursor)
 			return (1);
 		if (wdot >= llimit) {
-			if (lf == vmove && wcursor > linebuf)
+			if (lf == vmove_i && wcursor > linebuf)
 				wcursor--;
 			return (0);
 		}
@@ -568,7 +590,7 @@ lnext()
 		if (wcursor >= linebuf)
 			return (1);
 #ifdef LISPCODE
-		if (lf == lindent && linebuf[0] == '(')
+		if (lf_is_lindent && linebuf[0] == '(')
 			llimit = wdot;
 #endif
 		if (wdot <= llimit) {
@@ -582,9 +604,10 @@ lnext()
 	}
 }
 
+int
 lbrack(c, f)
 	register int c;
-	int (*f)();
+	void (*f)(int);
 {
 	register line *addr;
 
@@ -598,21 +621,21 @@ lbrack(c, f)
 		get_line(*addr);
 		if (linebuf[0] == '{' ||
 #ifdef LISPCODE
-		    value(LISP) && linebuf[0] == '(' ||
+		    (value(LISP) && linebuf[0] == '(') ||
 #endif
 		    isa(svalue(SECTIONS))) {
-			if (c == ']' && f != vmove) {
+			if (c == ']' && f != vmove_i) {
 				addr--;
 				get_line(*addr);
 			}
 			break;
 		}
-		if (c == ']' && f != vmove && linebuf[0] == '}')
+		if (c == ']' && f != vmove_i && linebuf[0] == '}')
 			break;
 	}
 	if (addr == dot)
 		return (0);
-	if (f != vmove)
+	if (f != vmove_i)
 		wcursor = c == ']' ? strend(linebuf) : linebuf;
 	else
 		wcursor = 0;
@@ -621,8 +644,9 @@ lbrack(c, f)
 	return (1);
 }
 
+static int
 isa(cp)
-	register char *cp;
+	register const char *cp;
 {
 
 	if (linebuf[0] != '.')
