pkgsrc/editors/mflteco/patches/patch-te__srch.c
dholland 4a861a6f6b Clean up legacy C.
Now passes gcc -Wall -Wextra -Wmissing-declarations -Wwrite-strings on gcc45.
May build with clang now too.

Changes:
   - use standard headers
   - don't declare own errno, fopen(), getenv(), or malloc()
   - declare own functions
   - declare void functions void
   - avoid implicit int
   - use C89
   - use some const
   - use some static
   - fix signed/unsigned mismatches
   - call execl() properly
   - don't cast return value of malloc
   - initialize struct sigaction correctly
   - use <ctype.h> functions correctly
   - don't index arrays with (signed) char
   - don't put function declarations inside function bodies
   - patch up two uninitialized variables
   - silence some compiler warnings that are not bugs
   - remove some unused objects
and:
   - add patch comments for preexisting patches
   - correct some minor pkglint

As a couple of these things fixed bugs (e.g. the execl calls), bump
PKGREVISION.
2012-12-27 06:13:20 +00:00

149 lines
5.8 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$NetBSD: patch-te__srch.c,v 1.1 2012/12/27 06:13:20 dholland Exp $
- use static for local functions
- don't index arrays with (signed) char
- use <ctype.h> functions correctly
- avoid implicit int
- remove unused variable
--- te_srch.c~ 1993-08-05 22:29:35.000000000 +0000
+++ te_srch.c
@@ -9,6 +9,8 @@
#include "te_defs.h"
+static int srch_cmp(void);
+
/* routine to read in a string with string-build characters */
/* used for search, tag, file name operations */
/* returns 0 if empty string entered, nonzero otherwise */
@@ -44,17 +46,17 @@ int build_string(sbuff)
case CTL('V'): /* take next char as lower case */
if (getcmdc(trace_sw) == term_char) ERROR((msp <= &mstack[0]) ? E_UTC : E_UTM);
- c = mapch_l[cmdc];
+ c = mapch_l[(unsigned char)cmdc];
break;
case CTL('W'): /* take next char as upper case */
if ((c = getcmdc(trace_sw)) == term_char) ERROR((msp <= &mstack[0]) ? E_UTC : E_UTM);
- if (islower(c)) c = toupper(c);
+ if (islower((unsigned char)c)) c = toupper((unsigned char)c);
break;
case CTL('E'): /* expanded constructs */
if (getcmdc(trace_sw) == term_char) ERROR((msp <= &mstack[0]) ? E_UTC : E_UTM);
- switch (mapch_l[cmdc])
+ switch (mapch_l[(unsigned char)cmdc])
{
case 'u': /* use char in q-reg */
if (getcmdc(trace_sw) == term_char) ERROR((msp <= &mstack[0]) ? E_UTC : E_UTM);
@@ -157,7 +159,7 @@ int setup_search()
/* routine to do N, _, E_ searches: search, if search fails, then get */
/* next page and continue */
-do_nsearch(arg)
+int do_nsearch(arg)
char arg; /* arg is 'n', '_', or 'e' to define which search */
{
int scount; /* search count */
@@ -233,7 +235,7 @@ int do_search(count)
for (sb.p = aa.p, sb.c = aa.c, sb.dot = aa.dot, sm.p = sbuf.f, sm.dot = sm.c = 0;
(sb.dot < pbuff->z) && (sm.dot < sm.z); sm.dot++, sb.dot++)
{ /* for each char in search string */
- if (spec_chars[ sm.p->ch[sm.c] ] & A_A) /* if search string char is "special" */
+ if (spec_chars[ (unsigned char)sm.p->ch[sm.c] ] & A_A) /* if search string char is "special" */
{
if (!srch_cmp()) break; /* then use expanded comparison routine */
}
@@ -290,7 +292,7 @@ int do_search(count)
for (sb.p = aa.p, sb.c = aa.c, sb.dot = aa.dot, sm.p = sbuf.f, sm.dot = sm.c = 0;
(sb.dot < last_z) && (sm.dot < sm.z); sm.dot++, sb.dot++)
{ /* loop to compare string */
- if (spec_chars[ sm.p->ch[sm.c] ] & A_A) /* if search string char is "special" */
+ if (spec_chars[ (unsigned char)sm.p->ch[sm.c] ] & A_A) /* if search string char is "special" */
{
if (!srch_cmp()) break; /* then use expanded comparison routine */
}
@@ -345,13 +347,13 @@ int do_search(count)
/* expanded search comparison */
/* returns 1 if match, 0 if not */
-int srch_cmp()
+static int srch_cmp(void)
{
int tq; /* q-reg name for ^EGq */
struct qp tqp; /* pointer to read q reg */
- int qq,oqq,i;
+ int qq,oqq;
- switch (mapch_l[sm.p->ch[sm.c]]) /* what is search character */
+ switch (mapch_l[(unsigned char)sm.p->ch[sm.c]]) /* what is search character */
{
case CTL('N'): /* match anything but following construct */
if (sm.dot >= sm.z) ERROR(E_ISS); /* don't read past end of string */
@@ -368,36 +370,36 @@ int srch_cmp()
return(*(pmap + sb.p->ch[sb.c]) == *(pmap + sm.p->ch[sm.c]));
case CTL('S'): /* match any nonalphanumeric */
- return(!isalnum(sb.p->ch[sb.c]));
+ return(!isalnum((unsigned char)sb.p->ch[sb.c]));
case CTL('E'):
if (sm.dot >= sm.z) ERROR(E_ISS); /* don't read past end of string */
fwdc(&sm); /* skip the ^E */
- switch (mapch_l[sm.p->ch[sm.c]])
+ switch (mapch_l[(unsigned char)sm.p->ch[sm.c]])
{
case 'a': /* match any alpha */
- return(isalpha(sb.p->ch[sb.c]));
+ return(isalpha((unsigned char)sb.p->ch[sb.c]));
case 'b': /* match any nonalpha */
- return(!isalnum(sb.p->ch[sb.c]));
+ return(!isalnum((unsigned char)sb.p->ch[sb.c]));
case 'c': /* rad50 symbol constituent */
- return(isalnum(sb.p->ch[sb.c]) || (sb.p->ch[sb.c] == '$') || (sb.p->ch[sb.c] == '.'));
+ return(isalnum((unsigned char)sb.p->ch[sb.c]) || (sb.p->ch[sb.c] == '$') || (sb.p->ch[sb.c] == '.'));
case 'd': /* digit */
- return(isdigit(sb.p->ch[sb.c]));
+ return(isdigit((unsigned char)sb.p->ch[sb.c]));
case 'l': /* line terminator LF, VT, FF */
return((sb.p->ch[sb.c] == LF) || (sb.p->ch[sb.c] == FF) || (sb.p->ch[sb.c] == VT));
case 'r': /* alphanumeric */
- return(isalnum(sb.p->ch[sb.c]));
+ return(isalnum((unsigned char)sb.p->ch[sb.c]));
case 'v': /* lower case */
- return(islower(sb.p->ch[sb.c]));
+ return(islower((unsigned char)sb.p->ch[sb.c]));
case 'w': /* upper case */
- return(isupper(sb.p->ch[sb.c]));
+ return(isupper((unsigned char)sb.p->ch[sb.c]));
case 's': /* any non-null string of spaces or tabs */
if (((sb.p->ch[sb.c]&0177) != ' ') && ((sb.p->ch[sb.c]&0177) != TAB)) return(0); /* failure */
/* skip remaining spaces or tabs */
@@ -431,15 +433,15 @@ int srch_cmp()
for (qq=64; qq>0 ; qq/=8) {
if (sm.dot >= sm.z) ERROR(E_ISS);
fwdc(&sm);
- if (mapch_l[sm.p->ch[sm.c]] < '0' || mapch_l[sm.p->ch[sm.c]] > '7')
+ if (mapch_l[(unsigned char)sm.p->ch[sm.c]] < '0' || mapch_l[(unsigned char)sm.p->ch[sm.c]] > '7')
ERROR(E_ISS);
- oqq+=qq*(mapch_l[sm.p->ch[sm.c]] - '0');
+ oqq+=qq*(mapch_l[(unsigned char)sm.p->ch[sm.c]] - '0');
}
if (oqq > 255)
ERROR(E_ISS);
if (sm.dot >= sm.z) ERROR(E_ISS);
fwdc(&sm);
- if (mapch_l[sm.p->ch[sm.c]] != '>')
+ if (mapch_l[(unsigned char)sm.p->ch[sm.c]] != '>')
ERROR(E_ISS);
return((int)(sb.p->ch[sb.c]) == oqq);