pkgsrc/editors/ex/patches/patch-ex__vops_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

240 lines
4.7 KiB
Text

$NetBSD: patch-ex__vops_c,v 1.1 2012/12/28 03:03:09 dholland Exp $
- declare local functions static
- declare void functions void
- silence warnings about braces
- fix up function pointer casting mess
- avoid implicit int
- silence warnings about && and || precedence
- use const for string constants
- silence warnings about unused arguments
- silence signed/unsigned compiler warning
--- ex_vops.c~ 2012-12-27 21:58:42.000000000 +0000
+++ ex_vops.c
@@ -89,8 +89,9 @@ static char sccsid[] = "@(#)ex_vops.c 1.
* display representations.
*/
-int xdw __P((void));
-int setpk __P((void));
+static int xdw __P((void));
+static void vshift(int ignore);
+static void setpk __P((void));
/*
* Undo.
@@ -111,6 +112,7 @@ int setpk __P((void));
char *vUA1, *vUA2;
char *vUD1, *vUD2;
+void
vUndo()
{
@@ -137,6 +139,7 @@ vUndo()
vfixcurs();
}
+void
vundo(show)
bool show; /* if true update the screen */
{
@@ -173,12 +176,13 @@ bool show; /* if true update the screen
* with dol through unddol-1. Hack screen image to
* reflect this replacement.
*/
- if (show)
+ if (show) {
if (undkind == UNDMOVE)
vdirty(0, TLINES);
else
vreplace(undap1 - addr, undap2 - undap1,
undkind == UNDPUT ? 0 : unddol - dol);
+ }
savenote = notecnt;
undo(1);
if (show && (vundkind != VMCHNG || addr != dot))
@@ -250,6 +254,7 @@ bool show; /* if true update the screen
* opposed to an ex command). This has nothing to do with being
* in open/visual mode as :s/foo/bar is not fromvis.
*/
+void
vmacchng(fromvis)
bool fromvis;
{
@@ -259,7 +264,6 @@ bool fromvis;
int nlines, more;
/* register line *a1, *a2; */
/* char ch; */ /* DEBUG */
- int copyw(), copywR();
if (!inopen)
return;
@@ -338,6 +342,7 @@ bool fromvis;
/*
* Initialize undo information before an append.
*/
+void
vnoapp()
{
@@ -357,6 +362,7 @@ vnoapp()
/*
* Move is simple, except for moving onto new lines in hardcopy open mode.
*/
+void
vmove()
{
register int cnt;
@@ -423,6 +429,17 @@ vmove()
}
/*
+ * This is the same as vmove, but throws away its argument, so
+ * it can be used in combination with other function pointers.
+ */
+void
+vmove_i(int ignore)
+{
+ (void)ignore;
+ vmove();
+}
+
+/*
* Delete operator.
*
* Hard case of deleting a range where both wcursor and wdot
@@ -430,7 +447,8 @@ vmove()
* by vchange (although vchange may pass it back if it degenerates
* to a full line range delete.)
*/
-vdelete(c)
+void
+vdelete(int c)
{
register char *cp;
register int i;
@@ -489,7 +507,8 @@ vdelete(c)
* Across lines with both wcursor and wdot given, we delete
* and sync then append (but one operation for undo).
*/
-vchange(c)
+void
+vchange(int c)
{
register char *cp;
register int i, ind, cnt;
@@ -705,6 +724,7 @@ smallchange:
* Actually counts are obsoleted, since if your terminal is slow
* you are better off with slowopen.
*/
+void
voOpen(c, cnt)
int c; /* mjm: char --> int */
register int cnt;
@@ -719,7 +739,7 @@ voOpen(c, cnt)
#endif
#endif
- if (value(SLOWOPEN) || value(REDRAW) && AL && DL)
+ if (value(SLOWOPEN) || (value(REDRAW) && AL && DL))
cnt = 1;
#ifdef SIGWINCH
#ifndef POSIX_1
@@ -794,6 +814,7 @@ voOpen(c, cnt)
*/
char vshnam[2] = { 'x', 0 };
+void
vshftop()
{
register line *addr;
@@ -817,11 +838,12 @@ vshftop()
*
* Filter portions of the buffer through unix commands.
*/
+void
vfilter()
{
register line *addr;
register int cnt;
- char *oglobp;
+ const char *oglobp;
short d;
#ifdef BIT8
cell cuxb[UXBSIZE + 2];
@@ -885,6 +907,7 @@ vfilter()
* that wdot is reasonable. Its name comes from
* xchange dotand wdot
*/
+static int
xdw()
{
register char *cp;
@@ -956,9 +979,10 @@ xdw()
/*
* Routine for vremote to call to implement shifts.
*/
-vshift()
+static void
+vshift(int ignore)
{
-
+ (void)ignore;
shift(op, 1);
}
@@ -966,12 +990,13 @@ vshift()
* Replace a single character with the next input character.
* A funny kind of insert.
*/
+void
vrep(cnt)
register int cnt;
{
register int i, c;
- if (cnt > strlen(cursor)) {
+ if (cnt > (int)strlen(cursor)) {
beep();
return;
}
@@ -1000,12 +1025,20 @@ vrep(cnt)
setLAST();
}
+static void
+doyank(int ignore)
+{
+ (void)ignore;
+ yank();
+}
+
/*
* Yank.
*
* Yanking to string registers occurs for free (essentially)
* in the routine xdw().
*/
+void
vyankit()
{
register int cnt;
@@ -1013,7 +1046,7 @@ vyankit()
if (wdot) {
if ((cnt = xdw()) < 0)
return;
- vremote(cnt, yank, 0);
+ vremote(cnt, doyank, 0);
setpk();
notenam = "yank";
if (FIXUNDO)
@@ -1036,6 +1069,7 @@ vyankit()
* the first and last lines. The compromise
* is for put to be more clever.
*/
+static void
setpk()
{