4a861a6f6b
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.
220 lines
7.1 KiB
Text
220 lines
7.1 KiB
Text
$NetBSD: patch-ab,v 1.2 2012/12/27 06:13:20 dholland Exp $
|
||
|
||
- use standard headers
|
||
- handle EOF from getc() correctly
|
||
- move function declarations to the header file
|
||
- use some static
|
||
- declare void functions void
|
||
- use some c89
|
||
- don't index arrays with (signed) char
|
||
- call execl() properly
|
||
|
||
--- te_exec2.c.orig 1993-08-05 22:29:34.000000000 +0000
|
||
+++ te_exec2.c
|
||
@@ -19,6 +19,7 @@
|
||
/* add directory command, header file display 03/26/92 14.59 */
|
||
|
||
#include "te_defs.h"
|
||
+#include <stdlib.h>
|
||
#include <sys/wait.h>
|
||
#include <sys/types.h>
|
||
#include <sys/stat.h>
|
||
@@ -35,21 +36,26 @@ struct outfiledata po_file, so_file; /*
|
||
struct outfiledata *outfile = &po_file; /* pointer to currently active output file structure */
|
||
FILE *eisw; /* indirect command file pointer */
|
||
int second_buff = 0; /* variable for which buffer is selected */
|
||
-VOID init_wd();
|
||
-VOID update_header();
|
||
+
|
||
+static int do_e_slash(void); /* routine to handle "change directory" command */
|
||
+static int read_stream(FILE *file, int *ff_found, struct qp *rbuff,
|
||
+ int *nchars, int endsw, int crlf_sw, int ff_sw);
|
||
+static VOID write_stream(FILE *file, struct qp *wbuff, int nchars,
|
||
+ int crlf_sw);
|
||
+
|
||
+
|
||
|
||
/* process E commands */
|
||
|
||
-do_e()
|
||
+VOID do_e(void)
|
||
{
|
||
- char c; /* temps */
|
||
+ int c; /* temps */
|
||
int old_var;
|
||
FILE *t_eisw;
|
||
struct stat statbuff; /* buffer to fetch file stat (mode) of open file for EB */
|
||
int t_access; /* result from provisional "open" */
|
||
- int do_e_slash(); /* routine to handle "change directory" command */
|
||
|
||
- switch (mapch_l[getcmdc(trace_sw)]) /* read next character and dispatch */
|
||
+ switch (mapch_l[(unsigned char)getcmdc(trace_sw)]) /* read next character and dispatch */
|
||
{
|
||
|
||
/* numeric values */
|
||
@@ -386,7 +392,7 @@ int do_eq()
|
||
t = vfork(); /* fork a new process */
|
||
if (t == 0) /* if this is the child */
|
||
{
|
||
- execl(pname, pname, SHELL_OPT, &sysbuf.f->ch[0], 0); /* call the named Unix routine */
|
||
+ execl(pname, pname, SHELL_OPT, &sysbuf.f->ch[0], (void *)NULL); /* call the named Unix routine */
|
||
printf("Error in 'execl'\n"); /* normally shouldn't get here */
|
||
exit(1);
|
||
}
|
||
@@ -493,7 +499,7 @@ int do_eq1(shell)
|
||
if (ll == 0) /* if there are no characters to send */
|
||
{
|
||
close(pipe_in[1]); /* close exec'd process' new "stdin" so "read" will find eof */
|
||
- execl(shell, shell, SHELL_OPT, &sysbuf.f->ch[0], 0); /* execute specified routine */
|
||
+ execl(shell, shell, SHELL_OPT, &sysbuf.f->ch[0], (void *)NULL); /* execute specified routine */
|
||
fputs("execl failed\n", stderr);
|
||
exit(1);
|
||
} /* end "orig m,nEQ command had zero range" */
|
||
@@ -520,7 +526,7 @@ int do_eq1(shell)
|
||
else /* this process is the grandchild */
|
||
{
|
||
close(pipe_in[1]); /* close "input" for writing */
|
||
- execl(shell, shell, SHELL_OPT, &sysbuf.f->ch[0], 0); /* execute specified routine */
|
||
+ execl(shell, shell, SHELL_OPT, &sysbuf.f->ch[0], (void *)NULL); /* execute specified routine */
|
||
fputs("execl failed\n", stderr);
|
||
exit(1);
|
||
} /* end "this is the grandchild" */
|
||
@@ -559,7 +565,7 @@ int do_en()
|
||
}
|
||
/* routine to handle "change directory" command */
|
||
|
||
-int do_e_slash()
|
||
+static int do_e_slash(void)
|
||
{
|
||
int rv = -1; /* return value */
|
||
int err_code = E_DIR;
|
||
@@ -609,7 +615,7 @@ int do_glob(gbuff, sbuff)
|
||
{
|
||
char glob_cmd[CELLSIZE+5]; /* "glob filespec" command string */
|
||
int t;
|
||
- char c;
|
||
+ int c;
|
||
int glob_pipe[2]; /* pipe to forked shell for expanding filenames */
|
||
struct qp glob_ptr; /* pointer for loading result buffer */
|
||
FILE *xx_out; /* stream for reading chars from pipe */
|
||
@@ -668,7 +674,7 @@ int do_glob(gbuff, sbuff)
|
||
close(glob_pipe[0]); /* child won't read */
|
||
dup2(glob_pipe[1], fileno(stdout)); /* substitute pipe for standard out */
|
||
close(glob_pipe[1]); /* don't need that anymore */
|
||
- execl("/bin/csh", "csh", "-fc", glob_cmd, 0); /* execute the "glob" */
|
||
+ execl("/bin/csh", "csh", "-fc", glob_cmd, (void *)NULL); /* execute the "glob" */
|
||
fputs("execl failed\n", stderr);
|
||
exit(1);
|
||
}
|
||
@@ -676,7 +682,7 @@ int do_glob(gbuff, sbuff)
|
||
|
||
/* routine to get next file spec from "EN" list into filespec buffer */
|
||
|
||
-do_en_next()
|
||
+VOID do_en_next(void)
|
||
{
|
||
char c;
|
||
|
||
@@ -778,7 +784,7 @@ int read_filename(flag, func)
|
||
|
||
/* fetch or set variable */
|
||
|
||
-set_var(extend, arg)
|
||
+VOID set_var(extend, arg)
|
||
int extend; /* nonzero if arg is 16 bits to be sign extended */
|
||
int *arg; /* argument is pointer to variable */
|
||
{
|
||
@@ -820,12 +826,12 @@ int read_file(rbuff, nchars, endsw)
|
||
/* address of a switch to set if read ended with a FF, crlf_sw is lf->crlf */
|
||
/* conversion, ff_sw indicates whether to stop on a form feed. */
|
||
|
||
-int read_stream(file, ff_found, rbuff, nchars, endsw, crlf_sw, ff_sw)
|
||
+static int read_stream(file, ff_found, rbuff, nchars, endsw, crlf_sw, ff_sw)
|
||
FILE *file;
|
||
struct qp *rbuff;
|
||
int *ff_found, *nchars, endsw, crlf_sw, ff_sw;
|
||
{
|
||
- char chr;
|
||
+ int chr;
|
||
int crflag;
|
||
register struct buffcell *p;
|
||
register int c;
|
||
@@ -874,7 +880,7 @@ int read_stream(file, ff_found, rbuff, n
|
||
/* arguments are qp to start of text, number of characters, */
|
||
/* and an "append FF" switch */
|
||
|
||
-write_file(wbuff, nchars, ffsw)
|
||
+VOID write_file(wbuff, nchars, ffsw)
|
||
struct qp *wbuff;
|
||
int nchars, ffsw;
|
||
{
|
||
@@ -889,7 +895,7 @@ write_file(wbuff, nchars, ffsw)
|
||
/* Unix processes. Arguments wbuff, nchars as above; file */
|
||
/* is stream pointer, crlf_sw zero converts CRLF to LF */
|
||
|
||
-write_stream(file, wbuff, nchars, crlf_sw)
|
||
+static VOID write_stream(file, wbuff, nchars, crlf_sw)
|
||
FILE *file;
|
||
struct qp *wbuff;
|
||
int nchars, crlf_sw;
|
||
@@ -919,7 +925,7 @@ write_stream(file, wbuff, nchars, crlf_s
|
||
|
||
/* routine to kill output file: argument is pointer to an output file structure */
|
||
|
||
-kill_output(outptr)
|
||
+VOID kill_output(outptr)
|
||
struct outfiledata *outptr;
|
||
{
|
||
if (outptr->fd)
|
||
@@ -934,7 +940,7 @@ kill_output(outptr)
|
||
|
||
static char panic_name[16] = "TECO_SAVED.tmp"; /* name of file created to save buffer */
|
||
|
||
-panic()
|
||
+VOID panic(void)
|
||
{
|
||
int i; /* counter of buffers to save */
|
||
int t_access; /* file descriptor returned by open() */
|
||
@@ -959,13 +965,13 @@ panic()
|
||
}
|
||
/* do "F" commands */
|
||
|
||
-do_f()
|
||
+VOID do_f(void)
|
||
{
|
||
struct buffcell *delete_p;
|
||
int temp_dot;
|
||
VOID do_fm();
|
||
|
||
- switch (mapch_l[getcmdc(trace_sw)]) /* read next character and dispatch */
|
||
+ switch (mapch_l[(unsigned char)getcmdc(trace_sw)]) /* read next character and dispatch */
|
||
{
|
||
case '<': /* back to beginning of current iteration */
|
||
if (cptr.flag & F_ITER) /* if in iteration */
|
||
@@ -1138,7 +1144,7 @@ do_f()
|
||
/* pop iteration: if arg nonzero, exit unconditionally */
|
||
/* else check exit conditions and exit or reiterate */
|
||
|
||
-pop_iteration(arg)
|
||
+VOID pop_iteration(arg)
|
||
int arg;
|
||
{
|
||
if (!arg && (!cptr.il->dflag || (--(cptr.il->count) > 0)) ) /* if reiteration */
|
||
@@ -1157,7 +1163,7 @@ pop_iteration(arg)
|
||
|
||
/* find end of iteration - read over arbitrary <> and one > */
|
||
|
||
-find_enditer()
|
||
+VOID find_enditer(void)
|
||
{
|
||
register int icnt;
|
||
|
||
@@ -1172,7 +1178,7 @@ find_enditer()
|
||
|
||
|
||
/* find end of conditional */
|
||
-char find_endcond(arg)
|
||
+VOID find_endcond(arg)
|
||
char arg;
|
||
{
|
||
register int icnt;
|