pkgsrc/editors/ex/patches/patch-ex__vops2_c
dholland a3dfc1076f 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 <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.
2012-12-28 03:03:08 +00:00

211 lines
4.6 KiB
Text

$NetBSD: patch-ex__vops2_c,v 1.1 2012/12/28 03:03:09 dholland Exp $
- declare local functions static
- declare void functions void
- avoid implicit int
- use const for string constants
- fix up function pointer casting mess
- avoid sloppy code that subtracts 1 from the base address of a char[]
(which isn't valid)
- silence warnings about && and || precedence
- silence warnings about braces
--- ex_vops2.c~ 2012-12-27 21:58:42.000000000 +0000
+++ ex_vops2.c
@@ -91,12 +91,14 @@ static char sccsid[] = "@(#)ex_vops2.c 1
extern char *vUA1, *vUA2; /* mjm: extern; also in ex_vops.c */
extern char *vUD1, *vUD2; /* mjm: extern; also in ex_vops.c */
-int vmaxrep __P((int, register int));
+static int vmaxrep __P((int, register int));
+static int vgetsplit(void);
/*
* Obleeperate characters in hardcopy
* open with \'s.
*/
+void
bleep(i, cp)
register int i;
char *cp;
@@ -117,6 +119,7 @@ bleep(i, cp)
* Common code for middle part of delete
* and change operating on parts of lines.
*/
+int
vdcMID()
{
register char *cp;
@@ -136,6 +139,7 @@ vdcMID()
* in the VBSIZE buffer BUF. Used to save
* deleted text of part of line.
*/
+void
takeout(BUF)
cell *BUF;
{
@@ -165,6 +169,7 @@ takeout(BUF)
* Are we at the end of the printed representation of the
* line? Used internally in hardcopy open.
*/
+int
ateopr()
{
register int i, c;
@@ -185,10 +190,12 @@ ateopr()
return (1);
}
-showmode(mode)
+void
+showmode(int mode)
{
int sdc = destcol, sdl = destline;
- char *ocurs, *str;
+ char *ocurs;
+ const char *str;
if (value(SHOWMODE) == 0 || TCOLUMNS <= 20 || state == ONEOPEN
|| state == HARDOPEN || vmacp != NULL)
@@ -246,8 +253,8 @@ char *ogcursor;
* The addtext() and addto() routines combined, accepting a single
* cell character.
*/
-addc(c)
-cell c;
+static void
+addc(cell c)
{
register cell *cp = INS;
@@ -274,6 +281,14 @@ cell c;
}
}
+static void
+doyank(int ignore)
+{
+ (void)ignore;
+ yank();
+}
+
+void
vappend(ch, cnt, indent)
int ch; /* mjm: char --> int */
int cnt, indent;
@@ -330,7 +345,7 @@ vappend(ch, cnt, indent)
if (value(AUTOINDENT) && indent != 0) {
gcursor = genindent(indent);
*gcursor = 0;
- vgotoCL(qcolumn(cursor - 1, genbuf));
+ vgotoCL(qcolumn2(cursor, genbuf));
} else {
gcursor = genbuf;
*gcursor = 0;
@@ -536,7 +551,7 @@ vappend(ch, cnt, indent)
* correctly later.
*/
if (FIXUNDO && vundkind == VCHNG) {
- vremote(1, yank, 0);
+ vremote(1, doyank, 0);
undap1--;
}
@@ -561,7 +576,7 @@ vappend(ch, cnt, indent)
strcLIN(gcursor);
*gcursor = 0;
cursor = linebuf;
- vgotoCL(qcolumn(cursor - 1, genbuf));
+ vgotoCL(qcolumn2(cursor, genbuf));
showmode(ch);
}
@@ -594,6 +609,7 @@ vappend(ch, cnt, indent)
* backwards around end of lines (vgoto can't hack columns which are
* less than 0 in general).
*/
+void
back1()
{
@@ -620,6 +636,7 @@ vget_line(cnt, gcursor, aescaped, commch
int cnt;
register char *gcursor;
bool *aescaped;
+ int commch;
{
register int c, ch;
register char *cp;
@@ -771,7 +788,7 @@ vbackup:
endim();
*cp = 0;
c = cindent();
- vgotoCL(qcolumn(cursor - 1, genbuf));
+ vgotoCL(qcolumn2(cursor, genbuf));
if (doomed >= 0)
doomed += c - cindent();
gcursor = cp;
@@ -836,7 +853,7 @@ vbackup:
}
if (value(WRAPMARGIN) &&
(outcol >= OCOLUMNS - value(WRAPMARGIN) ||
- backsl && outcol==0) &&
+ (backsl && outcol==0)) &&
commch != 'r') {
/*
* At end of word and hit wrapmargin.
@@ -991,7 +1008,7 @@ btrp:
* generated autoindent. We count the ^D for repeat
* purposes.
*/
- if (c == iwhite && c != 0)
+ if (c == iwhite && c != 0) {
if (cp == gcursor) {
iwhite = backtab(c);
CDCNT++;
@@ -1015,6 +1032,7 @@ btrp:
vputchar(' ');
goto vbackup;
}
+ }
if (vglobp && vglobp - iglobp >= 2 &&
(vglobp[-2] == '^' || vglobp[-2] == '0')
&& gcursor == ogcursor + 1)
@@ -1057,15 +1075,15 @@ vadone:
return (gcursor);
}
-int vgetsplit();
-char *vsplitpt;
+static const char *vsplitpt;
/*
* Append the line in buffer at lp
* to the buffer after dot.
*/
+void
vdoappend(lp)
- char *lp;
+ const char *lp;
{
register int oing = inglobal;
@@ -1078,6 +1096,7 @@ vdoappend(lp)
/*
* Subroutine for vdoappend to pass to append.
*/
+static int
vgetsplit()
{
@@ -1093,7 +1112,9 @@ vgetsplit()
* allowed that will yield total line length less than
* LBSIZE characters and also does hacks for the R command.
*/
+static int
vmaxrep(ch, cnt)
+ int ch;
register int cnt;
{
register int len, replen;