head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.108 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.106 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.104 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.102 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.100 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.98 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.96 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.94 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.92 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.90 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.88 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.86 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.84 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.82 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.80 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.78 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.76 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.74 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.72 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.70 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.68 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.66 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.64 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.60 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.40 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.62 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.58 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.56 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.54 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.52 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.50 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.48 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.46 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.44 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.42 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.38 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.36 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.34 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.32 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.30 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.28 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.26 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.24 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.22 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.20 pkgsrc-2015Q1-base:1.1 pkgsrc-2014Q4:1.1.0.18 pkgsrc-2014Q4-base:1.1 pkgsrc-2014Q3:1.1.0.16 pkgsrc-2014Q3-base:1.1 pkgsrc-2014Q2:1.1.0.14 pkgsrc-2014Q2-base:1.1 pkgsrc-2014Q1:1.1.0.12 pkgsrc-2014Q1-base:1.1 pkgsrc-2013Q4:1.1.0.10 pkgsrc-2013Q4-base:1.1 pkgsrc-2013Q3:1.1.0.8 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.6 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.4 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.2 pkgsrc-2012Q4-base:1.1; locks; strict; comment @# @; 1.1 date 2012.12.28.03.03.08; author dholland; state Exp; branches; next ; desc @@ 1.1 log @Fix legacy C. Pass -Wall -W -Wmissing-declarations -Wwrite-strings on gcc45. - avoid implicit int, declare void functions void - return values from non-void functions - put most external declarations properly in header files - use some static and const - fix up a big mess with function pointer casting - use standard includes, don't provide own decls of standard functions - use types matching libc when providing own malloc, printf, and putchar - use functions correctly - silence assorted compiler warnings - fix some bugs exposed by compiler warnings - don't intentionally exercise signed overflow - remove some unused items - add patch comments to other patch (patch-aa) As this includes several fixes and removes some undefined behavior on a commonly reachable code path, bump PKGREVISION. @ text @$NetBSD$ - use standard headers - avoid sloppy code that subtracts 1 from the base address of a char[] (which isn't valid) (although this could be tidied further) - avoid implicit int - silence warnings about && and || precedence - declare void functions void - use const for string constants - use functions properly - fix up function pointer casting mess - silence warnings about unused arguments - teach it about dead functions --- ex_subr.c~ 2012-12-27 21:58:42.000000000 +0000 +++ ex_subr.c @@@@ -79,27 +79,33 @@@@ static char sccsid[] = "@@(#)ex_subr.c 1. /* from ex_subr.c 7.10.1 (2.11BSD) 1996/3/22 */ +#include + #include "ex.h" #include "ex_re.h" #include "ex_tty.h" #include "ex_vis.h" +static int qcolumn __P((char *, char *)); + /* * Random routines, in alphabetical order. */ +int any(c, s) int c; - register char *s; + register const char *s; { register int x; - while (x = *s++) + while ((x = *s++) != 0) if (x == c) return (1); return (0); } +int backtab(i) register int i; { @@@@ -114,6 +120,7 @@@@ backtab(i) return (i); } +void change() { @@@@ -128,6 +135,7 @@@@ change() * characters through position cp of the * current line. */ +int column(cp) register char *cp; { @@@@ -141,6 +149,7 @@@@ column(cp) * Ignore a comment to the end of the line. * This routine eats the trailing newline so don't call newline(). */ +void comment() { register int c; @@@@ -152,6 +161,7 @@@@ comment() ungetchar(c); } +void Copy(to, from, size) register char *from, *to; register int size; @@@@ -163,6 +173,7 @@@@ Copy(to, from, size) while (--size > 0); } +void copyw(to, from, size) register line *from, *to; register int size; @@@@ -174,6 +185,7 @@@@ copyw(to, from, size) while (--size > 0); } +void copywR(to, from, size) register line *from, *to; register int size; @@@@ -183,6 +195,7 @@@@ copywR(to, from, size) to[size] = from[size]; } +int ctlof(c) int c; { @@@@ -190,6 +203,7 @@@@ ctlof(c) return (c == DELETE ? '?' : c | ('A' - 1)); } +void dingdong() { @@@@ -199,6 +213,7 @@@@ dingdong() putch('\207'); } +int fixindent(indent) int indent; { @@@@ -215,8 +230,9 @@@@ fixindent(indent) return (i); } +void filioerr(cp) - char *cp; + const char *cp; { register int oerrno = errno; @@@@ -238,6 +254,7 @@@@ genindent(indent) return (cp); } +void getDOT() { @@@@ -257,6 +274,7 @@@@ getmark(c) return (0); } +int getn(cp) register char *cp; { @@@@ -269,6 +287,7 @@@@ getn(cp) return (i); } +void ignnEOF() { register int c = getchar(); @@@@ -279,6 +298,7 @@@@ ignnEOF() comment(); } +int is_white(c) int c; { @@@@ -286,11 +306,12 @@@@ is_white(c) #ifndef BIT8 return (c == ' ' || c == '\t'); #else - return (isspace(c) && c != '\n' && c != '\r' + return (isspace((unsigned char)c) && c != '\n' && c != '\r' && c != '\f' && c != '\v'); #endif } +int junk(c) register int c; { @@@@ -315,12 +336,14 @@@@ junk(c) } } +void killed() { killcnt(addr2 - addr1 + 1); } +void killcnt(cnt) register int cnt; { @@@@ -343,6 +366,7 @@@@ killcnt(cnt) putNFL(); } +int lineno(a) line *a; { @@@@ -350,24 +374,28 @@@@ lineno(a) return (a - zero); } +int lineDOL() { return (lineno(dol)); } +int lineDOT() { return (lineno(dot)); } +void markDOT() { markpr(dot); } +void markpr(which) line *which; { @@@@ -379,6 +407,7 @@@@ markpr(which) } } +int markreg(c) register int c; { @@@@ -397,12 +426,13 @@@@ markreg(c) * All others map to themselves. */ char * -mesg(str) - register char *str; +mesg(arg) + const char *arg; { + register char *str; register char *cp; - str = strcpy(genbuf, str); + str = strcpy(genbuf, arg); for (cp = str; *cp; cp++) switch (*cp) { @@@@ -422,12 +452,13 @@@@ mesg(str) return (str); } +static void merror1(seekpt) #ifdef VMUNIX - char *seekpt; + const char *seekpt; #else # ifdef lint - char *seekpt; + const char *seekpt; # else int seekpt; # endif @@@@ -444,20 +475,21 @@@@ merror1(seekpt) } /*VARARGS2*/ +void #ifndef __STDC__ merror(seekpt, i) #ifdef VMUNIX - char *seekpt; + const char *seekpt; #else # ifdef lint - char *seekpt; + const char *seekpt; # else int seekpt; # endif #endif int i; #else -vmerror(char *seekpt, va_list ap) +vmerror(const char *seekpt, va_list ap) #endif { @@@@ -482,7 +514,8 @@@@ vmerror(char *seekpt, va_list ap) } #ifdef __STDC__ -merror(char *cp, ...) +void +merror(const char *cp, ...) { va_list ap; @@@@ -494,6 +527,7 @@@@ merror(char *cp, ...) } #endif +int morelines() { #ifdef _SC_PAGESIZE @@@@ -517,6 +551,7 @@@@ morelines() #endif /* !_SC_PAGESIZE */ } +void nonzero() { @@@@ -527,6 +562,7 @@@@ nonzero() } } +int notable(i) int i; { @@@@ -534,7 +570,7 @@@@ notable(i) return (hush == 0 && !inglobal && i > value(REPORT)); } - +void notempty() { @@@@ -542,7 +578,7 @@@@ notempty() error(catgets(catd, 1, 173, "No lines@@in the buffer")); } - +void netchHAD(cnt) int cnt; { @@@@ -550,10 +586,11 @@@@ netchHAD(cnt) netchange(lineDOL() - cnt); } +void netchange(i) register int i; { - register char *cp; + register const char *cp; if (i > 0) notesgn = cp = catgets(catd, 1, 174, "more "); @@@@ -575,10 +612,11 @@@@ netchange(i) * Print an escape sequence corresponding to c. */ #ifdef BIT8 +int printof(c) int c; { - char *nums = "01234567"; + const char *nums = "01234567"; int d; if (c < 040 || c == DELETE) { @@@@ -597,6 +635,7 @@@@ printof(c) } #endif +void putmark(addr) line *addr; { @@@@ -604,6 +643,7 @@@@ putmark(addr) putmk1(addr, putline()); } +void putmk1(addr, n) register line *addr; int n; @@@@ -620,7 +660,7 @@@@ putmk1(addr, n) *addr = n | oldglobmk; } -char * +const char * plural(i) long i; { @@@@ -629,14 +669,15 @@@@ plural(i) : catgets(catd, 1, 179, "s")); } -int qcount(); +static int qcount(int c); short vcntcol; +static int qcolumn(lim, gp) register char *lim, *gp; { register int x = 0; - int (*OO)(); + int (*OO)(int); OO = Outchar; Outchar = qcount; @@@@ -653,18 +694,33 @@@@ qcolumn(lim, gp) return (vcntcol); } +/* + * Like qcolumn() but doesn't require subtracting 1 from the first + * argument before calling it. + */ int +qcolumn2(char *lim, char *gp) +{ + if (lim != NULL) { + lim--; + } + return qcolumn(lim, gp); +} + +static int qcount(c) int c; { if (c == '\t') { vcntcol += value(TABSTOP) - vcntcol % value(TABSTOP); - return; + return c; } vcntcol++; + return c; } +void reverse(a1, a2) register line *a1, *a2; { @@@@ -679,6 +735,7 @@@@ reverse(a1, a2) } } +void save(a1, a2) line *a1; register line *a2; @@@@ -714,24 +771,28 @@@@ save(a1, a2) #endif } +void save12() { save(addr1, addr2); } +void saveall() { save(one, dol); } +int span() { return (addr2 - addr1 + 1); } +void synced() { @@@@ -740,7 +801,7 @@@@ synced() xchng = 0; } - +int skipwh() { register int wh; @@@@ -754,17 +815,18 @@@@ skipwh() } /*VARARGS2*/ +void #ifndef __STDC__ smerror(seekpt, cp) #ifdef lint - char *seekpt; + const char *seekpt; #else int seekpt; #endif - char *cp; + const char *cp; { #else -vsmerror(char *seekpt, va_list ap) +vsmerror(const char *seekpt, va_list ap) { #endif @@@@ -786,7 +848,8 @@@@ vsmerror(char *seekpt, va_list ap) } #ifdef __STDC__ -smerror(char *seekpt, ...) +void +smerror(const char *seekpt, ...) { va_list ap; @@@@ -808,13 +871,25 @@@@ strend(cp) return (cp); } +const char * +strendk(cp) + register const char *cp; +{ + + while (*cp) + cp++; + return (cp); +} + +void strcLIN(dp) - char *dp; + const char *dp; { CP(linebuf, dp); } +void syserror() { @@@@ -828,6 +903,7 @@@@ syserror() * hitting a tab, where tabs are set every ts columns. Work right for * the case where col > TCOLUMNS, even if ts does not divide TCOLUMNS. */ +int tabcol(col, ts) int col, ts; { @@@@ -847,10 +923,10 @@@@ vfindcol(i) int i; { register char *cp; - register int (*OO)() = Outchar; + register int (*OO)(int) = Outchar; Outchar = qcount; - ignore(qcolumn(linebuf - 1, NOSTR)); + ignore(qcolumn2(linebuf, NOSTR)); for (cp = linebuf; *cp && vcntcol < i; cp++) putchar(*cp); if (cp != linebuf) @@@@ -880,6 +956,7 @@@@ vpastwh(cp) return (cp); } +int whitecnt(cp) register char *cp; { @@@@ -911,13 +988,14 @@@@ Ignore(a) } Ignorf(a) - int (*a)(); + int (*a)(int); { a = a; } #endif +void markit(addr) line *addr; { @@@@ -937,10 +1015,12 @@@@ markit(addr) */ int _ovno; woid -onemt(signum) +onemt(int signum) { int oovno; + (void)signum; + #ifndef POSIX_1 signal(SIGEMT, onemt); #endif @@@@ -963,8 +1043,9 @@@@ onemt(signum) * are not removed. */ woid -onhup(signum) +onhup(int signum) { + (void)signum; /* * USG tty driver can send multiple HUP's!! @@@@ -993,9 +1074,11 @@@@ onhup(signum) * suppressed in visual mode). */ woid -onintr(signum) +onintr(int signum) { + (void)signum; + #ifndef POSIX_1 #ifndef CBREAK signal(SIGINT, onintr); @@@@ -1022,6 +1105,7 @@@@ onintr(signum) * In some critical sections we turn interrupts off, * but not very often. */ +void setrupt() { @@@@ -1040,6 +1124,7 @@@@ setrupt() } } +int preserve() { @@@@ -1063,6 +1148,8 @@@@ preserve() } #ifndef V6 +dead +void exitex(i) int i; { @@@@ -1081,7 +1168,7 @@@@ exitex(i) * We have just gotten a susp. Suspend and prepare to resume. */ woid -onsusp(signum) +onsusp(int signum) { ttymode f; /* int omask; */ @@@@ -1092,6 +1179,8 @@@@ onsusp(signum) sigset_t set; #endif + (void)signum; + f = setty(normf); vnfl(); putpad(TE); @