#include <stdlib.h>
#include "defs.h"
-static STRING *copyargs(STRING from[], int n);
+static STRING *copyargs(const char *from[], int n);
static DOLPTR dolh;
CHAR flagadr[10];
/* ======== option handling ======== */
-int options(int argc, STRING *argv)
+int options(int argc, const char **argv)
{
- register STRING cp;
- register STRING *argp = argv;
- register STRING flagc;
- STRING flagp;
+ register const char *cp;
+ register const char **argp = argv;
+ register char *flagc;
+ char *flagp;
if (argc > 1 && *argp[1] == '-') {
cp = argp[1];
argc--;
} else {
failed(argv[1], badopt);
- ;
}
- ;
}
argp[1] = argp[0];
argc--;
- ;
}
/* set up $- */
flagc = flagchar;
flagp = flagadr;
while (*flagc) {
- if (flags & flagval[flagc - flagchar]
- ) {
+ if (flags & flagval[flagc - flagchar]) {
*flagp++ = *flagc;
- ;
}
flagc++;
- ;
}
*flagp++ = 0;
-
- return (argc);
+ return argc;
}
void setargs(const char *argi[])
return (argr);
}
-static STRING *copyargs(STRING from[], int n)
+static STRING *copyargs(const char *from[], int n)
{
- register STRING *np =
+ register char **np =
(STRING *) alloc(sizeof(STRING *) * n + 3 * BYTESPERWORD);
- register STRING *fp = from;
- register STRING *pp = np;
+ register const char **fp = from;
+ register char **pp = np;
((DOLPTR) np)->doluse = 1; /* use count */
np = (STRING *) ((DOLPTR) np)->dolarg;
#define input (standin->fdes)
#define eof (standin->feof)
extern int peekc;
-extern STRING comdiv;
+extern const char *comdiv;
extern const char devnull[];
/* flags */
#include "ctype.h"
/* args.c */
-extern int options(int argc, STRING *argv);
+extern int options(int argc, const char *argv[]);
extern void setargs(const char *argi[]);
extern DOLPTR freeargs(DOLPTR blk);
extern void clearup(void);
extern void exitsh(int xno);
extern void done(void);
extern void rmtemp(IOPTR base);
+/* main.c */
+extern int main(int c, const char *v[]);
+extern void chkpr(char eor);
+extern void settmp(void);
+extern void Ldup(register int fa, register int fb);
/* print.c */
extern void newline(void);
extern void blank(void);
FILEBLK stdfile;
FILE standin = &stdfile;
-static void exfile();
+static void exfile(BOOL);
-
-
-
-main(c, v)
-int c;
-STRING v[];
+int main(int c, const char *v[])
{
register int rflag = ttyflg;
done();
}
-static void exfile(prof)
-BOOL prof;
+static void exfile(BOOL prof)
{
register L_INT mailtime = 0;
register int userid;
if (input > 0) {
Ldup(input, INIO);
input = INIO;
- ;
}
/* move output to safe place */
if (output == 2) {
Ldup(dup(2), OTIO);
output = OTIO;
- ;
}
userid = getuid();
/* decide whether interactive */
if ((flags & intflg)
- || ((flags & oneflg) == 0 && isatty(output) && isatty(input))
- ) {
+ || ((flags & oneflg) == 0 && isatty(output) && isatty(input))) {
dfault(&ps1nod, (userid ? stdprompt : supprompt));
dfault(&ps2nod, readmsg);
flags |= ttyflg | prompt;
} else {
flags |= prof;
flags &= ~prompt;
- ;
}
if (setjmp(errshell) && prof) {
close(input);
return;
- ;
}
/* error return here */
loopcnt = breakcnt = peekc = 0;
iopend = 0;
- if (input >= 0) {
+ if (input >= 0)
initf(input);
- }
/* command loop */
for (;;) {
prs(ps1nod.namval);
alarm(TIMEOUT);
flags |= waiting;
- ;
}
trapnote = 0;
peekc = readc();
- if (eof) {
+ if (eof)
return;
- ;
- }
alarm(0);
flags &= ~waiting;
execute(cmd(NL, MTFLG), 0);
}
}
-chkpr(eor)
-char eor;
+void chkpr(char eor)
{
- if ((flags & prompt) && standin->fstak == 0 && eor == NL) {
+ if ((flags & prompt) && standin->fstak == 0 && eor == NL)
prs(ps2nod.namval);
- ;
- }
}
-settmp()
+void settmp(void)
{
itos(getpid());
serial = 0;
tmpnam = movstr(numbuf, &tmpout[TMPNAM]);
}
-Ldup(fa, fb)
-register int fa, fb;
+void Ldup(register int fa, register int fb)
{
dup2(fa, fb);
close(fa);