a3dfc1076f
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 <ctype.h> 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.
471 lines
8.9 KiB
Text
471 lines
8.9 KiB
Text
$NetBSD: patch-ex__vput_c,v 1.1 2012/12/28 03:03:09 dholland Exp $
|
|
|
|
- declare local functions static
|
|
- declare void functions void
|
|
- avoid implicit int
|
|
- return values from non-void functions
|
|
- silence warnings about && and || precedence
|
|
- silence warnings about braces
|
|
- fix up function pointer casting mess
|
|
|
|
--- ex_vput.c~ 2012-12-27 21:58:42.000000000 +0000
|
|
+++ ex_vput.c
|
|
@@ -88,14 +88,14 @@ static char sccsid[] = "@(#)ex_vput.c 1.
|
|
#define vquot(c) (c == quotsp)
|
|
#endif /* BIT8 */
|
|
|
|
-int vmaktop __P((int, cell *));
|
|
-int vnpins __P((int));
|
|
-int vrigid __P((void));
|
|
-int vneedpos __P((int));
|
|
-int vishft __P((void));
|
|
-int viin __P((int));
|
|
-int godm __P((void));
|
|
-int enddm __P((void));
|
|
+static void vmaktop __P((int, cell *));
|
|
+static void vnpins __P((int));
|
|
+static void vrigid __P((void));
|
|
+static void vneedpos __P((int));
|
|
+static void vishft __P((void));
|
|
+static void viin __P((int));
|
|
+static void godm __P((void));
|
|
+static void enddm __P((void));
|
|
|
|
/*
|
|
* Deal with the screen, clearing, cursor positioning, putting characters
|
|
@@ -103,6 +103,7 @@ int enddm __P((void));
|
|
* Really hard stuff here is utilizing insert character operations
|
|
* on intelligent terminals which differs widely from terminal to terminal.
|
|
*/
|
|
+void
|
|
vclear()
|
|
{
|
|
|
|
@@ -122,6 +123,7 @@ vclear()
|
|
/*
|
|
* Clear memory.
|
|
*/
|
|
+void
|
|
vclrcell(cp, i)
|
|
register cell *cp;
|
|
register int i;
|
|
@@ -135,6 +137,7 @@ vclrcell(cp, i)
|
|
/*
|
|
* Clear a physical display line, high level.
|
|
*/
|
|
+void
|
|
vclrlin(l, tp)
|
|
int l;
|
|
line *tp;
|
|
@@ -155,6 +158,7 @@ vclrlin(l, tp)
|
|
/*
|
|
* Clear to the end of the current physical line
|
|
*/
|
|
+void
|
|
vclreol()
|
|
{
|
|
register int i, j;
|
|
@@ -169,7 +173,7 @@ vclreol()
|
|
i = WCOLS - destcol;
|
|
tp = vtube[destline] + destcol;
|
|
if (CE) {
|
|
- if (IN && *tp || !ateopr()) {
|
|
+ if ((IN && *tp) || !ateopr()) {
|
|
vcsync();
|
|
vputp(CE, 1);
|
|
}
|
|
@@ -200,6 +204,7 @@ vclreol()
|
|
* If work here is being held off, just remember, in
|
|
* heldech, if work needs to be done, don't do anything.
|
|
*/
|
|
+void
|
|
vclrech(didphys)
|
|
bool didphys;
|
|
{
|
|
@@ -252,6 +257,7 @@ vclrech(didphys)
|
|
* the state variable splitw so we wont rollup
|
|
* when we move the cursor there.
|
|
*/
|
|
+void
|
|
fixech()
|
|
{
|
|
|
|
@@ -266,6 +272,7 @@ fixech()
|
|
/*
|
|
* Put the cursor ``before'' cp.
|
|
*/
|
|
+void
|
|
vcursbef(cp)
|
|
register char *cp;
|
|
{
|
|
@@ -279,6 +286,7 @@ vcursbef(cp)
|
|
/*
|
|
* Put the cursor ``at'' cp.
|
|
*/
|
|
+void
|
|
vcursat(cp)
|
|
register char *cp;
|
|
{
|
|
@@ -292,6 +300,7 @@ vcursat(cp)
|
|
/*
|
|
* Put the cursor ``after'' cp.
|
|
*/
|
|
+void
|
|
vcursaft(cp)
|
|
register char *cp;
|
|
{
|
|
@@ -303,6 +312,7 @@ vcursaft(cp)
|
|
* Fix the cursor to be positioned in the correct place
|
|
* to accept a command.
|
|
*/
|
|
+void
|
|
vfixcurs()
|
|
{
|
|
|
|
@@ -313,6 +323,7 @@ vfixcurs()
|
|
* Compute the column position implied by the cursor at ``nc'',
|
|
* and move the cursor there.
|
|
*/
|
|
+void
|
|
vsetcurs(nc)
|
|
register char *nc;
|
|
{
|
|
@@ -328,6 +339,7 @@ vsetcurs(nc)
|
|
/*
|
|
* Move the cursor invisibly, i.e. only remember to do it.
|
|
*/
|
|
+void
|
|
vigoto(y, x)
|
|
int y, x;
|
|
{
|
|
@@ -340,6 +352,7 @@ vigoto(y, x)
|
|
* Move the cursor to the position implied by any previous
|
|
* vigoto (or low level hacking with destcol/destline as in readecho).
|
|
*/
|
|
+void
|
|
vcsync()
|
|
{
|
|
|
|
@@ -349,6 +362,7 @@ vcsync()
|
|
/*
|
|
* Goto column x of the current line.
|
|
*/
|
|
+void
|
|
vgotoCL(x)
|
|
register int x;
|
|
{
|
|
@@ -362,8 +376,8 @@ vgotoCL(x)
|
|
/*
|
|
* Invisible goto column x of current line.
|
|
*/
|
|
-vigotoCL(x)
|
|
- register int x;
|
|
+static void
|
|
+vigotoCL(register int x)
|
|
{
|
|
|
|
if (splitw)
|
|
@@ -375,6 +389,7 @@ vigotoCL(x)
|
|
/*
|
|
* Move cursor to line y, column x, handling wraparound and scrolling.
|
|
*/
|
|
+void
|
|
vgoto(y, x)
|
|
register int y, x;
|
|
{
|
|
@@ -523,7 +538,8 @@ vgoto(y, x)
|
|
* with a QUOTE. We use QUOTE internally to represent a position
|
|
* which is part of the expansion of a tab.
|
|
*/
|
|
-vgotab()
|
|
+static void
|
|
+vgotab(void)
|
|
{
|
|
register int i = tabcol(destcol, value(TABSTOP)) - destcol;
|
|
|
|
@@ -555,6 +571,7 @@ int slakused; /* This much of tabslack
|
|
* of the screen image buffer so it is easier for us to
|
|
* maniuplate them.
|
|
*/
|
|
+void
|
|
vprepins()
|
|
{
|
|
register int i;
|
|
@@ -566,6 +583,7 @@ vprepins()
|
|
}
|
|
}
|
|
|
|
+static void
|
|
vmaktop(p, cp)
|
|
register int p;
|
|
cell *cp;
|
|
@@ -594,6 +612,7 @@ vmaktop(p, cp)
|
|
* for tabs) and code assumes this in several place
|
|
* to make life simpler.
|
|
*/
|
|
+int
|
|
vinschar(c)
|
|
int c; /* mjm: char --> int */
|
|
{
|
|
@@ -609,12 +628,12 @@ vinschar(c)
|
|
*/
|
|
if (c == '\t') {
|
|
vgotab();
|
|
- return;
|
|
+ return c;
|
|
}
|
|
vputchar(c);
|
|
if (DEPTH(vcline) * WCOLS + !value(REDRAW) >
|
|
(destline - LINE(vcline)) * WCOLS + destcol)
|
|
- return;
|
|
+ return c;
|
|
/*
|
|
* The next line is about to be clobbered
|
|
* make space for another segment of this line
|
|
@@ -627,14 +646,14 @@ vinschar(c)
|
|
} else {
|
|
c = LINE(vcline) + DEPTH(vcline);
|
|
if (c < LINE(vcline + 1) || c > WBOT)
|
|
- return;
|
|
+ return c;
|
|
i = destcol;
|
|
vinslin(c, 1, vcline);
|
|
DEPTH(vcline)++;
|
|
vigoto(c, i);
|
|
vprepins();
|
|
}
|
|
- return;
|
|
+ return c;
|
|
}
|
|
/*
|
|
* Compute the number of positions in the line image of the
|
|
@@ -693,7 +712,7 @@ vinschar(c)
|
|
do
|
|
vputchar(c);
|
|
while (--inssiz);
|
|
- return;
|
|
+ return c;
|
|
}
|
|
|
|
/*
|
|
@@ -787,12 +806,14 @@ vinschar(c)
|
|
destline = LINE(vcline);
|
|
destcol = inscol + inssiz;
|
|
vcsync();
|
|
+ return c;
|
|
}
|
|
|
|
/*
|
|
* Rigidify the rest of the line after the first
|
|
* group of following tabs, typing blanks over ``spaces''.
|
|
*/
|
|
+void
|
|
vrigid()
|
|
{
|
|
register int col;
|
|
@@ -827,6 +848,7 @@ vrigid()
|
|
* On a dumb terminal we may infact redisplay the rest of the
|
|
* screen here brute force to keep it pretty.
|
|
*/
|
|
+void
|
|
vneedpos(npcnt)
|
|
int npcnt;
|
|
{
|
|
@@ -866,6 +888,7 @@ vneedpos(npcnt)
|
|
vnpins(1);
|
|
}
|
|
|
|
+void
|
|
vnpins(dosync)
|
|
int dosync;
|
|
{
|
|
@@ -900,6 +923,7 @@ vnpins(dosync)
|
|
* Do the shift of the next tabstop implied by
|
|
* insertion so it expands.
|
|
*/
|
|
+void
|
|
vishft()
|
|
{
|
|
int tshft = 0;
|
|
@@ -1004,6 +1028,7 @@ vishft()
|
|
/*
|
|
* Now do the insert of the characters (finally).
|
|
*/
|
|
+static void
|
|
viin(c)
|
|
int c; /* mjm: char --> int */
|
|
{
|
|
@@ -1014,7 +1039,7 @@ viin(c)
|
|
short oldhold = hold;
|
|
|
|
hold |= HOLDPUPD;
|
|
- if (tabsize && (IM && EI) && inssiz - doomed > tabslack)
|
|
+ if (tabsize && (IM && EI) && inssiz - doomed > tabslack) {
|
|
/*
|
|
* There is a tab out there which will be affected
|
|
* by the insertion since there aren't enough doomed
|
|
@@ -1053,6 +1078,7 @@ viin(c)
|
|
enddm();
|
|
}
|
|
}
|
|
+ }
|
|
|
|
/*
|
|
* Now put out the characters of the actual insertion.
|
|
@@ -1175,6 +1201,7 @@ viin(c)
|
|
* is the same as that which goes into insert
|
|
* mode, then we are in delete mode already.
|
|
*/
|
|
+void
|
|
godm()
|
|
{
|
|
|
|
@@ -1194,6 +1221,7 @@ godm()
|
|
* if we just moved over to delete space from part of
|
|
* a tab (above).
|
|
*/
|
|
+static void
|
|
enddm()
|
|
{
|
|
|
|
@@ -1211,6 +1239,7 @@ enddm()
|
|
* if the terminal does all insertions a single character
|
|
* at a time, since it branches based on whether IM is null.
|
|
*/
|
|
+void
|
|
goim()
|
|
{
|
|
|
|
@@ -1219,6 +1248,7 @@ goim()
|
|
insmode = 1;
|
|
}
|
|
|
|
+void
|
|
endim()
|
|
{
|
|
|
|
@@ -1238,6 +1268,7 @@ endim()
|
|
* you can erase overstrikes with some work. CRT's which do underlining
|
|
* implicitly which has to be erased (like CONCEPTS) are also handled.
|
|
*/
|
|
+int
|
|
vputchar(c)
|
|
register int c;
|
|
{
|
|
@@ -1292,7 +1323,7 @@ vputchar(c)
|
|
*tp = overbuf;
|
|
#endif
|
|
destcol++;
|
|
- return;
|
|
+ return c;
|
|
}
|
|
/*
|
|
* A ``space'' ontop of a part of a tab.
|
|
@@ -1303,7 +1334,7 @@ vputchar(c)
|
|
if (vquot(*tp)) {
|
|
#endif
|
|
destcol++;
|
|
- return;
|
|
+ return c;
|
|
}
|
|
#ifndef BIT8
|
|
c = ' ' | QUOTE;
|
|
@@ -1328,7 +1359,7 @@ vputchar(c)
|
|
|
|
case '\t':
|
|
vgotab();
|
|
- return;
|
|
+ return c;
|
|
|
|
case ' ':
|
|
/*
|
|
@@ -1349,7 +1380,7 @@ vputchar(c)
|
|
) {
|
|
*tp = ' ';
|
|
destcol++;
|
|
- return;
|
|
+ return c;
|
|
}
|
|
goto def;
|
|
|
|
@@ -1374,7 +1405,7 @@ def:
|
|
if ((hold & HOLDPUPD) == 0)
|
|
*tp = c;
|
|
destcol++;
|
|
- return;
|
|
+ return c;
|
|
}
|
|
/*
|
|
* Backwards looking optimization.
|
|
@@ -1413,7 +1444,7 @@ def:
|
|
e = trim(c);
|
|
if (!insmode && d && d != ' ' && d != e) {
|
|
#endif
|
|
- if (EO && (OS || UL && (c == '_' || d == '_'))) {
|
|
+ if (EO && (OS || (UL && (c == '_' || d == '_')))) {
|
|
vputc(' ');
|
|
outcol++, destcol++;
|
|
back1();
|
|
@@ -1478,12 +1509,14 @@ def:
|
|
vputc('\n');
|
|
}
|
|
}
|
|
+ return c;
|
|
}
|
|
|
|
/*
|
|
* Delete display positions stcol through endcol.
|
|
* Amount of use of special terminal features here is limited.
|
|
*/
|
|
+void
|
|
physdc(stcol, endcol)
|
|
int stcol, endcol;
|
|
{
|
|
@@ -1578,7 +1611,7 @@ physdc(stcol, endcol)
|
|
if (IN) {
|
|
up = vtube0 + stcol;
|
|
tp = vtube0 + endcol;
|
|
- while (i = *tp++) {
|
|
+ while ((i = *tp++) != 0) {
|
|
#ifndef BIT8
|
|
if ((i & (QUOTE|TRIM)) == QUOTE)
|
|
#else
|
|
@@ -1602,6 +1635,7 @@ physdc(stcol, endcol)
|
|
}
|
|
|
|
#ifdef TRACE
|
|
+void
|
|
tfixnl()
|
|
{
|
|
|
|
@@ -1610,6 +1644,7 @@ tfixnl()
|
|
trubble = 0, techoin = 0;
|
|
}
|
|
|
|
+void
|
|
tvliny()
|
|
{
|
|
register int i;
|
|
@@ -1630,6 +1665,7 @@ tvliny()
|
|
fprintf(trace, "\n");
|
|
}
|
|
|
|
+void
|
|
tracec(c)
|
|
int c; /* mjm: char --> int */
|
|
{
|
|
@@ -1652,6 +1688,7 @@ tracec(c)
|
|
/*
|
|
* Put a character with possible tracing.
|
|
*/
|
|
+int
|
|
vputch(c)
|
|
int c;
|
|
{
|
|
@@ -1660,5 +1697,5 @@ vputch(c)
|
|
if (trace)
|
|
tracec(c);
|
|
#endif
|
|
- vputc(c);
|
|
+ return vputc(c);
|
|
}
|