1
0
mirror of https://github.com/openbsd/src.git synced 2024-12-22 16:42:56 -08:00

Merge in NetBSD and 4.4BSD-lite2 changes as well as some of my own.

- handle long lines safely (from NetBSD)
 - use puts/fputs and putchar/putc when it makes sense
 - use err/errx and warn/warnx when it makes sense
 - make return() and sizeof() style consisten
 - some more buffer safety
This commit is contained in:
millert 1997-07-13 21:21:08 +00:00
parent 4affba17d0
commit db59c1a606
26 changed files with 865 additions and 677 deletions

View File

@ -1,5 +1,5 @@
/* $OpenBSD: aux.c,v 1.4 1997/05/30 08:51:32 deraadt Exp $ */
/* $NetBSD: aux.c,v 1.4 1996/06/08 19:48:10 christos Exp $ */
/* $OpenBSD: aux.c,v 1.5 1997/07/13 21:21:08 millert Exp $ */
/* $NetBSD: aux.c,v 1.5 1997/05/13 06:15:52 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)aux.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: aux.c,v 1.4 1997/05/30 08:51:32 deraadt Exp $";
static char rcsid[] = "$OpenBSD: aux.c,v 1.5 1997/07/13 21:21:08 millert Exp $";
#endif
#endif /* not lint */
@ -64,7 +64,7 @@ savestr(str)
if ((new = salloc(size)) != NOSTR)
bcopy(str, new, size);
return new;
return(new);
}
/*
@ -85,7 +85,7 @@ save2str(str, old)
}
bcopy(str, new + oldsize, newsize);
}
return new;
return(new);
}
/*
@ -115,7 +115,7 @@ panic(fmt, va_alist)
(void)fprintf(stderr, "panic: ");
vfprintf(stderr, fmt, ap);
va_end(ap);
(void)fprintf(stderr, "\n");
(void)putc('\n', stderr);
fflush(stderr);
abort();
}
@ -161,7 +161,7 @@ argcount(argv)
for (ap = argv; *ap++ != NOSTR;)
;
return ap - argv - 1;
return(ap - argv - 1);
}
/*
@ -181,16 +181,16 @@ hfield(field, mp)
ibuf = setinput(mp);
if ((lc = mp->m_lines - 1) < 0)
return NOSTR;
return(NOSTR);
if (readline(ibuf, linebuf, LINESIZE) < 0)
return NOSTR;
return(NOSTR);
while (lc > 0) {
if ((lc = gethfield(ibuf, linebuf, lc, &colon)) < 0)
return oldhfield;
return(oldhfield);
if ((hfield = ishfield(linebuf, colon, field)) != NULL)
oldhfield = save2str(hfield, oldhfield);
}
return oldhfield;
return(oldhfield);
}
/*
@ -212,9 +212,9 @@ gethfield(f, linebuf, rem, colon)
for (;;) {
if (--rem < 0)
return -1;
return(-1);
if ((c = readline(f, linebuf, LINESIZE)) <= 0)
return -1;
return(-1);
for (cp = linebuf; isprint(*cp) && *cp != ' ' && *cp != ':';
cp++)
;
@ -248,7 +248,7 @@ gethfield(f, linebuf, rem, colon)
cp += c;
}
*cp = 0;
return rem;
return(rem);
}
/* NOTREACHED */
}
@ -268,12 +268,12 @@ ishfield(linebuf, colon, field)
*cp = 0;
if (strcasecmp(linebuf, field) != 0) {
*cp = ':';
return 0;
return(0);
}
*cp = ':';
for (cp++; *cp == ' ' || *cp == '\t'; cp++)
;
return cp;
return(cp);
}
/*
@ -321,12 +321,12 @@ source(v)
if ((cp = expand(*arglist)) == NOSTR)
return(1);
if ((fi = Fopen(cp, "r")) == NULL) {
perror(cp);
warn(cp);
return(1);
}
if (ssp >= NOFILE - 1) {
printf("Too much \"sourcing\" going on.\n");
Fclose(fi);
puts("Too much \"sourcing\" going on.");
(void)Fclose(fi);
return(1);
}
sstack[ssp].s_file = input;
@ -348,13 +348,13 @@ int
unstack()
{
if (ssp <= 0) {
printf("\"Source\" stack over-pop.\n");
puts("\"Source\" stack over-pop.");
sourcing = 0;
return(1);
}
Fclose(input);
(void)Fclose(input);
if (cond != CANY)
printf("Unmatched \"if\"\n");
puts("Unmatched \"if\"");
ssp--;
cond = sstack[ssp].s_cond;
loading = sstack[ssp].s_loading;
@ -447,7 +447,7 @@ skip_comment(cp)
break;
}
}
return cp;
return(cp);
}
/*
@ -574,9 +574,9 @@ name1(mp, reptype)
int first = 1;
if ((cp = hfield("from", mp)) != NOSTR)
return cp;
return(cp);
if (reptype == 0 && (cp = hfield("sender", mp)) != NOSTR)
return cp;
return(cp);
ibuf = setinput(mp);
namebuf[0] = '\0';
if (readline(ibuf, linebuf, LINESIZE) < 0)
@ -606,10 +606,12 @@ newname:
break;
cp++;
if (first) {
strcpy(namebuf, cp);
cp2 = namebuf;
first = 0;
} else
strcpy(strrchr(namebuf, '!')+1, cp);
cp2 = strrchr(namebuf, '!') + 1;
strncpy(cp2, cp, sizeof(namebuf) - (cp2 - namebuf) - 2);
namebuf[sizeof(namebuf) - 2] = '\0';
strcat(namebuf, "!");
goto newname;
}
@ -645,8 +647,8 @@ anyof(s1, s2)
while (*s1)
if (strchr(s2, *s1++))
return 1;
return 0;
return(1);
return(0);
}
/*
@ -658,8 +660,8 @@ raise(c)
{
if (islower(c))
return toupper(c);
return c;
return(toupper(c));
return(c);
}
/*
@ -672,7 +674,7 @@ copy(s1, s2)
while ((*s2++ = *s1++) != '\0')
;
return s2 - 1;
return(s2 - 1);
}
/*
@ -683,19 +685,19 @@ isign(field, ignore)
char *field;
struct ignoretab ignore[2];
{
char realfld[BUFSIZ];
char realfld[LINESIZE];
if (ignore == ignoreall)
return 1;
return(1);
/*
* Lower-case the string, so that "Status" and "status"
* will hash to the same place.
*/
istrcpy(realfld, field);
if (ignore[1].i_count > 0)
return (!member(realfld, ignore + 1));
return(!member(realfld, ignore + 1));
else
return (member(realfld, ignore));
return(member(realfld, ignore));
}
int
@ -708,6 +710,6 @@ member(realfield, table)
for (igp = table->i_head[hash(realfield)]; igp != 0; igp = igp->i_link)
if (*igp->i_field == *realfield &&
equal(igp->i_field, realfield))
return (1);
return (0);
return(1);
return(0);
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: cmd1.c,v 1.5 1997/05/30 08:51:34 deraadt Exp $ */
/* $NetBSD: cmd1.c,v 1.5 1996/06/08 19:48:11 christos Exp $ */
/* $OpenBSD: cmd1.c,v 1.6 1997/07/13 21:21:08 millert Exp $ */
/* $NetBSD: cmd1.c,v 1.9 1997/07/09 05:29:48 mikel Exp $ */
/*-
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)cmd1.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)cmd1.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: cmd1.c,v 1.5 1997/05/30 08:51:34 deraadt Exp $";
static char rcsid[] = "$OpenBSD: cmd1.c,v 1.6 1997/07/13 21:21:08 millert Exp $";
#endif
#endif /* not lint */
@ -91,7 +91,7 @@ headers(v)
printhead(mesg);
}
if (flag == 0) {
printf("No more mail.\n");
puts("No more mail.");
return(1);
}
return(0);
@ -116,7 +116,7 @@ scroll(v)
case '+':
s++;
if (s * size > msgCount) {
printf("On last screenful of messages\n");
puts("On last screenful of messages");
return(0);
}
screen = s;
@ -124,7 +124,7 @@ scroll(v)
case '-':
if (--s < 0) {
printf("On first screenful of messages\n");
puts("On first screenful of messages");
return(0);
}
screen = s;
@ -147,8 +147,8 @@ screensize()
char *cp;
if ((cp = value("screen")) != NOSTR && (s = atoi(cp)) > 0)
return s;
return screenheight - 4;
return(s);
return(screenheight - 4);
}
/*
@ -204,7 +204,7 @@ printhead(mesg)
if (mp->m_flag & MBOX)
dispc = 'M';
parse(headline, &hl, pbuf);
sprintf(wcount, "%3d/%-5d", mp->m_lines, mp->m_size);
snprintf(wcount, sizeof(wcount), "%3d/%-5d", mp->m_lines, mp->m_size);
subjlen = screenwidth - 50 - strlen(wcount);
name = value("show-rcpt") != NOSTR ?
skin(hfield("to", mp)) : nameof(mp, 0);
@ -239,17 +239,17 @@ pcmdlist(v)
register const struct cmd *cp;
register int cc;
printf("Commands are:\n");
puts("Commands are:");
for (cc = 0, cp = cmdtab; cp->c_name != NULL; cp++) {
cc += strlen(cp->c_name) + 2;
if (cc > 72) {
printf("\n");
putchar('\n');
cc = strlen(cp->c_name) + 2;
}
if ((cp+1)->c_name != NOSTR)
printf("%s, ", cp->c_name);
else
printf("%s\n", cp->c_name);
puts(cp->c_name);
}
return(0);
}
@ -262,7 +262,7 @@ more(v)
void *v;
{
int *msgvec = v;
return (type1(msgvec, 1, 1));
return(type1(msgvec, 1, 1));
}
/*
@ -274,7 +274,7 @@ More(v)
{
int *msgvec = v;
return (type1(msgvec, 0, 1));
return(type1(msgvec, 0, 1));
}
/*
@ -337,7 +337,7 @@ type1(msgvec, doign, page)
cp = _PATH_MORE;
obuf = Popen(cp, "w");
if (obuf == NULL) {
perror(cp);
warn(cp);
obuf = stdout;
} else
signal(SIGPIPE, brokpipe);
@ -357,7 +357,7 @@ close_pipe:
* Ignore SIGPIPE so it can't cause a duplicate close.
*/
signal(SIGPIPE, SIG_IGN);
Pclose(obuf);
(void)Pclose(obuf);
signal(SIGPIPE, SIG_DFL);
}
return(0);
@ -407,7 +407,7 @@ top(v)
ibuf = setinput(mp);
c = mp->m_lines;
if (!lineb)
printf("\n");
putchar('\n');
for (lines = 0; lines < c && lines <= topl; lines++) {
if (readline(ibuf, linebuf, LINESIZE) < 0)
break;
@ -465,12 +465,36 @@ folders(v)
char dirname[PATHSIZE];
char *cmd;
if (getfold(dirname, sizeof dirname) < 0) {
printf("No value set for \"folder\"\n");
return 1;
if (getfold(dirname, sizeof(dirname)) < 0) {
puts("No value set for \"folder\"");
return(1);
}
if ((cmd = value("LISTER")) == NOSTR)
cmd = "ls";
(void) run_command(cmd, 0, -1, -1, dirname, NOSTR, NOSTR);
return 0;
return(0);
}
/*
* Update the mail file with any new messages that have
* come in since we started reading mail.
*/
int
inc(v)
void *v;
{
int nmsg, mdot;
nmsg = incfile();
if (nmsg == 0) {
puts("No new mail.");
} else if (nmsg > 0) {
mdot = newfileinfo(msgCount - nmsg);
dot = &message[mdot - 1];
} else {
puts("\"inc\" command failed...");
}
return(0);
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: cmd2.c,v 1.2 1996/06/11 12:53:33 deraadt Exp $ */
/* $NetBSD: cmd2.c,v 1.5 1996/06/08 19:48:13 christos Exp $ */
/* $OpenBSD: cmd2.c,v 1.3 1997/07/13 21:21:09 millert Exp $ */
/* $NetBSD: cmd2.c,v 1.7 1997/05/17 19:55:10 pk Exp $ */
/*
* Copyright (c) 1980, 1993
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)cmd2.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: cmd2.c,v 1.2 1996/06/11 12:53:33 deraadt Exp $";
static char rcsid[] = "$OpenBSD: cmd2.c,v 1.3 1997/07/13 21:21:09 millert Exp $";
#endif
#endif /* not lint */
@ -70,7 +70,7 @@ next(v)
if (*msgvec != NULL) {
/*
* If some messages were supplied, find the
* If some messages were supplied, find the
* first applicable one following dot using
* wrap around.
*/
@ -99,7 +99,7 @@ next(v)
if (*ip2 == NULL)
ip2 = msgvec;
} while (ip2 != ip);
printf("No messages applicable\n");
puts("No messages applicable");
return(1);
}
@ -120,7 +120,7 @@ next(v)
if ((mp->m_flag & (MDELETED|MSAVED)) == 0)
break;
if (mp >= &message[msgCount]) {
printf("At EOF\n");
puts("At EOF");
return(0);
}
dot = mp;
@ -144,7 +144,7 @@ save(v)
{
char *str = v;
return save1(str, 1, "save", saveignore);
return(save1(str, 1, "save", saveignore));
}
/*
@ -156,7 +156,7 @@ copycmd(v)
{
char *str = v;
return save1(str, 0, "copy", saveignore);
return(save1(str, 0, "copy", saveignore));
}
/*
@ -176,7 +176,7 @@ save1(str, mark, cmd, ignore)
int f, *msgvec;
FILE *obuf;
msgvec = (int *) salloc((msgCount + 2) * sizeof *msgvec);
msgvec = (int *) salloc((msgCount + 2) * sizeof(*msgvec));
if ((file = snarf(str, &f)) == NOSTR)
return(1);
if (!f) {
@ -198,7 +198,7 @@ save1(str, mark, cmd, ignore)
else
disp = "[New file]";
if ((obuf = Fopen(file, "a")) == NULL) {
perror(NOSTR);
warn(NOSTR);
return(1);
}
for (ip = msgvec; *ip && ip-msgvec < msgCount; ip++) {
@ -206,7 +206,7 @@ save1(str, mark, cmd, ignore)
touch(mp);
if (send(mp, obuf, ignore, NOSTR) < 0) {
perror(file);
Fclose(obuf);
(void)Fclose(obuf);
return(1);
}
if (mark)
@ -215,7 +215,7 @@ save1(str, mark, cmd, ignore)
fflush(obuf);
if (ferror(obuf))
perror(file);
Fclose(obuf);
(void)Fclose(obuf);
printf("%s\n", disp);
return(0);
}
@ -230,7 +230,7 @@ swrite(v)
{
char *str = v;
return save1(str, 1, "write", ignoreall);
return(save1(str, 1, "write", ignoreall));
}
/*
@ -267,7 +267,7 @@ snarf(linebuf, flag)
while (cp > linebuf && !isspace(*cp))
cp--;
if (*cp == '\0') {
printf("No file specified.\n");
puts("No file specified.");
return(NOSTR);
}
if (isspace(*cp))
@ -286,7 +286,7 @@ delete(v)
{
int *msgvec = v;
delm(msgvec);
return 0;
return(0);
}
/*
@ -308,9 +308,9 @@ deltype(v)
list[1] = NULL;
return(type(list));
}
printf("At EOF\n");
puts("At EOF");
} else
printf("No more messages\n");
puts("No more messages");
return(0);
}
@ -372,7 +372,7 @@ undeletecmd(v)
dot = mp;
mp->m_flag &= ~MDELETED;
}
return 0;
return(0);
}
/*
@ -393,14 +393,14 @@ core(v)
abort();
_exit(1);
}
printf("Okie dokie");
fputs("Okie dokie", stdout);
fflush(stdout);
wait_child(pid);
if (wait_status.w_coredump)
printf(" -- Core dumped.\n");
puts(" -- Core dumped.");
else
printf(" -- Can't dump core.\n");
return 0;
puts(" -- Can't dump core.");
return(0);
}
/*
@ -418,7 +418,7 @@ clobber(v)
else
times = (atoi(argv[0]) + 511) / 512;
clob1(times);
return 0;
return(0);
}
/*
@ -448,7 +448,7 @@ retfield(v)
{
char **list = v;
return ignore1(list, ignore + 1, "retained");
return(ignore1(list, ignore + 1, "retained"));
}
/*
@ -461,7 +461,7 @@ igfield(v)
{
char **list = v;
return ignore1(list, ignore, "ignored");
return(ignore1(list, ignore, "ignored"));
}
int
@ -470,7 +470,7 @@ saveretfield(v)
{
char **list = v;
return ignore1(list, saveignore + 1, "retained");
return(ignore1(list, saveignore + 1, "retained"));
}
int
@ -479,7 +479,7 @@ saveigfield(v)
{
char **list = v;
return ignore1(list, saveignore, "ignored");
return(ignore1(list, saveignore, "ignored"));
}
int
@ -488,27 +488,27 @@ ignore1(list, tab, which)
struct ignoretab *tab;
char *which;
{
char field[BUFSIZ];
char field[LINESIZE];
register int h;
register struct ignore *igp;
char **ap;
if (*list == NOSTR)
return igshow(tab, which);
return(igshow(tab, which));
for (ap = list; *ap != 0; ap++) {
istrcpy(field, *ap);
if (member(field, tab))
continue;
h = hash(field);
igp = (struct ignore *) calloc(1, sizeof (struct ignore));
igp = (struct ignore *) calloc(1, sizeof(struct ignore));
igp->i_field = calloc((unsigned) strlen(field) + 1,
sizeof (char));
sizeof(char));
strcpy(igp->i_field, field);
igp->i_link = tab->i_head[h];
tab->i_head[h] = igp;
tab->i_count++;
}
return 0;
return(0);
}
/*
@ -525,18 +525,18 @@ igshow(tab, which)
if (tab->i_count == 0) {
printf("No fields currently being %s.\n", which);
return 0;
return(0);
}
ring = (char **) salloc((tab->i_count + 1) * sizeof (char *));
ring = (char **) salloc((tab->i_count + 1) * sizeof(char *));
ap = ring;
for (h = 0; h < HSHSIZE; h++)
for (igp = tab->i_head[h]; igp != 0; igp = igp->i_link)
*ap++ = igp->i_field;
*ap = 0;
qsort(ring, tab->i_count, sizeof (char *), igcomp);
qsort(ring, tab->i_count, sizeof(char *), igcomp);
for (ap = ring; *ap != 0; ap++)
printf("%s\n", *ap);
return 0;
puts(*ap);
return(0);
}
/*
@ -546,5 +546,5 @@ static int
igcomp(l, r)
const void *l, *r;
{
return (strcmp(*(char **)l, *(char **)r));
return(strcmp(*(char **)l, *(char **)r));
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: cmd3.c,v 1.4 1997/05/30 08:51:35 deraadt Exp $ */
/* $NetBSD: cmd3.c,v 1.5 1996/06/08 19:48:14 christos Exp $ */
/* $OpenBSD: cmd3.c,v 1.5 1997/07/13 21:21:09 millert Exp $ */
/* $NetBSD: cmd3.c,v 1.8 1997/07/09 05:29:49 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)cmd3.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)cmd3.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: cmd3.c,v 1.4 1997/05/30 08:51:35 deraadt Exp $";
static char rcsid[] = "$OpenBSD: cmd3.c,v 1.5 1997/07/13 21:21:09 millert Exp $";
#endif
#endif /* not lint */
@ -67,13 +67,13 @@ shell(v)
(void) strcpy(cmd, str);
if (bangexp(cmd) < 0)
return 1;
return(1);
if ((shell = value("SHELL")) == NOSTR)
shell = _PATH_CSHELL;
(void) run_command(shell, 0, -1, -1, "-c", cmd, NOSTR);
(void) signal(SIGINT, sigint);
printf("!\n");
return 0;
puts("!");
return(0);
}
/*
@ -92,7 +92,7 @@ dosh(v)
(void) run_command(shell, 0, -1, -1, NOSTR, NOSTR, NOSTR);
(void) signal(SIGINT, sigint);
putchar('\n');
return 0;
return(0);
}
/*
@ -118,7 +118,7 @@ bangexp(str)
if (*cp == '!') {
if (n < strlen(lastbang)) {
overf:
printf("Command buffer overflow\n");
puts("Command buffer overflow");
return(-1);
}
changed++;
@ -145,8 +145,8 @@ overf:
fflush(stdout);
}
strcpy(str, bangbuf);
strncpy(lastbang, bangbuf, 128);
lastbang[128-1] = 0;
strncpy(lastbang, bangbuf, sizeof(lastbang) - 1);
lastbang[sizeof(lastbang) - 1] = '\0';
return(0);
}
@ -162,12 +162,12 @@ help(v)
register FILE *f;
if ((f = Fopen(_PATH_HELP, "r")) == NULL) {
perror(_PATH_HELP);
warn(_PATH_HELP);
return(1);
}
while ((c = getc(f)) != EOF)
putchar(c);
Fclose(f);
(void)Fclose(f);
return(0);
}
@ -187,10 +187,10 @@ schdir(v)
if ((cp = expand(*arglist)) == NOSTR)
return(1);
if (chdir(cp) < 0) {
perror(cp);
warn(cp);
return(1);
}
return 0;
return(0);
}
int
@ -199,9 +199,9 @@ respond(v)
{
int *msgvec = v;
if (value("Replyall") == NOSTR)
return (_respond(msgvec));
return(_respond(msgvec));
else
return (_Respond(msgvec));
return(_Respond(msgvec));
}
/*
@ -219,7 +219,7 @@ _respond(msgvec)
struct header head;
if (msgvec[1] != 0) {
printf("Sorry, can't reply to multiple messages at once\n");
puts("Sorry, can't reply to multiple messages at once");
return(1);
}
mp = &message[msgvec[0] - 1];
@ -246,7 +246,7 @@ _respond(msgvec)
np = cat(np, extract(rcv, GTO));
else if (np == NIL) {
if (replyto != NOSTR)
printf("Empty reply-to field -- replying to author\n");
puts("Empty reply-to field -- replying to author");
np = extract(rcv, GTO);
}
head.h_to = np;
@ -279,15 +279,15 @@ reedit(subj)
char *newsubj;
if (subj == NOSTR)
return NOSTR;
return(NOSTR);
if ((subj[0] == 'r' || subj[0] == 'R') &&
(subj[1] == 'e' || subj[1] == 'E') &&
subj[2] == ':')
return subj;
return(subj);
newsubj = salloc(strlen(subj) + 5);
strcpy(newsubj, "Re: ");
strcpy(newsubj + 4, subj);
return newsubj;
return(newsubj);
}
/*
@ -303,7 +303,7 @@ preserve(v)
register int *ip, mesg;
if (edit) {
printf("Cannot \"preserve\" in edit mode\n");
puts("Cannot \"preserve\" in edit mode");
return(1);
}
for (ip = msgvec; *ip != NULL; ip++) {
@ -385,7 +385,7 @@ set(v)
for (h = 0, s = 1; h < HSHSIZE; h++)
for (vp = variables[h]; vp != NOVAR; vp = vp->v_link)
s++;
ap = (char **) salloc(s * sizeof *ap);
ap = (char **) salloc(s * sizeof(*ap));
for (h = 0, p = ap; h < HSHSIZE; h++)
for (vp = variables[h]; vp != NOVAR; vp = vp->v_link)
*p++ = vp->v_name;
@ -407,7 +407,7 @@ set(v)
else
cp++;
if (equal(varbuf, "")) {
printf("Non-null variable name required\n");
puts("Non-null variable name required");
errs++;
continue;
}
@ -473,7 +473,7 @@ group(v)
for (h = 0, s = 1; h < HSHSIZE; h++)
for (gh = groups[h]; gh != NOGRP; gh = gh->g_link)
s++;
ap = (char **) salloc(s * sizeof *ap);
ap = (char **) salloc(s * sizeof(*ap));
for (h = 0, p = ap; h < HSHSIZE; h++)
for (gh = groups[h]; gh != NOGRP; gh = gh->g_link)
*p++ = gh->g_name;
@ -490,7 +490,7 @@ group(v)
gname = *argv;
h = hash(gname);
if ((gh = findgroup(gname)) == NOGRP) {
gh = (struct grouphead *) calloc(sizeof *gh, 1);
gh = (struct grouphead *) calloc(sizeof(*gh), 1);
gh->g_name = vcopy(gname);
gh->g_list = NOGE;
gh->g_link = groups[h];
@ -504,7 +504,7 @@ group(v)
*/
for (ap = argv+1; *ap != NOSTR; ap++) {
gp = (struct group *) calloc(sizeof *gp, 1);
gp = (struct group *) calloc(sizeof(*gp), 1);
gp->ge_name = vcopy(*ap);
gp->ge_link = gh->g_list;
gh->g_list = gp;
@ -549,7 +549,7 @@ int
null(v)
void *v;
{
return 0;
return(0);
}
/*
@ -563,13 +563,13 @@ file(v)
char **argv = v;
if (argv[0] == NOSTR) {
newfileinfo();
return 0;
newfileinfo(0);
return(0);
}
if (setfile(*argv) < 0)
return 1;
return(1);
announce();
return 0;
return(0);
}
/*
@ -588,11 +588,11 @@ echo(v)
if ((cp = expand(cp)) != NOSTR) {
if (ap != argv)
putchar(' ');
printf("%s", cp);
fputs(cp, stdout);
}
}
putchar('\n');
return 0;
return(0);
}
int
@ -601,9 +601,9 @@ Respond(v)
{
int *msgvec = v;
if (value("Replyall") == NOSTR)
return (_Respond(msgvec));
return(_Respond(msgvec));
else
return (_respond(msgvec));
return(_respond(msgvec));
}
/*
@ -630,7 +630,7 @@ _Respond(msgvec)
head.h_to = cat(head.h_to, extract(cp, GTO));
}
if (head.h_to == NIL)
return 0;
return(0);
mp = &message[msgvec[0] - 1];
if ((head.h_subject = hfield("subject", mp)) == NOSTR)
head.h_subject = hfield("subj", mp);
@ -639,7 +639,7 @@ _Respond(msgvec)
head.h_bcc = NIL;
head.h_smopts = NIL;
mail1(&head, 1);
return 0;
return(0);
}
/*
@ -654,7 +654,7 @@ ifcmd(v)
register char *cp;
if (cond != CANY) {
printf("Illegal nested \"if\"\n");
puts("Illegal nested \"if\"");
return(1);
}
cond = CANY;
@ -686,7 +686,7 @@ elsecmd(v)
switch (cond) {
case CANY:
printf("\"Else\" without matching \"if\"\n");
puts("\"Else\" without matching \"if\"");
return(1);
case CSEND:
@ -698,7 +698,7 @@ elsecmd(v)
break;
default:
printf("Mail's idea of conditions is screwed up\n");
puts("mail's idea of conditions is screwed up");
cond = CANY;
break;
}
@ -714,7 +714,7 @@ endifcmd(v)
{
if (cond == CANY) {
printf("\"Endif\" without matching \"if\"\n");
puts("\"Endif\" without matching \"if\"");
return(1);
}
cond = CANY;
@ -738,14 +738,14 @@ alternates(v)
return(0);
for (ap = altnames; *ap; ap++)
printf("%s ", *ap);
printf("\n");
putchar('\n');
return(0);
}
if (altnames != 0)
free((char *) altnames);
altnames = (char **) calloc((unsigned) c, sizeof (char *));
altnames = (char **) calloc((unsigned) c, sizeof(char *));
for (ap = namelist, ap2 = altnames; *ap; ap++, ap2++) {
cp = (char *) calloc((unsigned) strlen(*ap) + 1, sizeof (char));
cp = (char *) calloc((unsigned) strlen(*ap) + 1, sizeof(char));
strcpy(cp, *ap);
*ap2 = cp;
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: cmdtab.c,v 1.3 1996/06/11 12:53:35 deraadt Exp $ */
/* $NetBSD: cmdtab.c,v 1.6 1996/06/08 19:48:15 christos Exp $ */
/* $OpenBSD: cmdtab.c,v 1.4 1997/07/13 21:21:10 millert Exp $ */
/* $NetBSD: cmdtab.c,v 1.7 1996/12/28 07:10:59 tls Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)cmdtab.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)cmdtab.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: cmdtab.c,v 1.3 1996/06/11 12:53:35 deraadt Exp $";
static char rcsid[] = "$OpenBSD: cmdtab.c,v 1.4 1997/07/13 21:21:10 millert Exp $";
#endif
#endif /* not lint */
@ -120,5 +120,6 @@ const struct cmd cmdtab[] = {
{ "core", core, M|NOLIST, 0, 0 },
{ "#", null, M|NOLIST, 0, 0 },
{ "clobber", clobber, M|RAWLIST, 0, 1 },
{ "inc", inc, T|NOLIST, 0, 0 },
{ 0, 0, 0, 0, 0 }
};

View File

@ -1,5 +1,5 @@
/* $OpenBSD: collect.c,v 1.5 1997/04/13 20:32:06 deraadt Exp $ */
/* $NetBSD: collect.c,v 1.6 1996/06/08 19:48:16 christos Exp $ */
/* $OpenBSD: collect.c,v 1.6 1997/07/13 21:21:10 millert Exp $ */
/* $NetBSD: collect.c,v 1.9 1997/07/09 05:25:45 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)collect.c 8.2 (Berkeley) 4/19/94";
#else
static char rcsid[] = "$OpenBSD: collect.c,v 1.5 1997/04/13 20:32:06 deraadt Exp $";
static char rcsid[] = "$OpenBSD: collect.c,v 1.6 1997/07/13 21:21:10 millert Exp $";
#endif
#endif /* not lint */
@ -87,11 +87,14 @@ collect(hp, printheaders)
extern char *tempMail;
char getsub;
int omask;
int longline, lastlong, rc; /* Can deal with lines > LINESIZE */
#if __GNUC__
/* Avoid longjmp clobbering */
(void) &escape;
(void) &eofcount;
(void) &getsub;
(void) &longline;
#endif
collf = NULL;
@ -115,7 +118,7 @@ collect(hp, printheaders)
noreset++;
if ((collf = Fopen(tempMail, "w+")) == NULL) {
perror(tempMail);
warn(tempMail);
goto err;
}
unlink(tempMail);
@ -140,6 +143,8 @@ collect(hp, printheaders)
escape = ESCAPE;
eofcount = 0;
hadintr = 0;
lastlong = 0;
longline = 0;
if (!setjmp(colljmp)) {
if (getsub)
@ -153,11 +158,11 @@ collect(hp, printheaders)
cont:
if (hadintr) {
fflush(stdout);
fprintf(stderr,
"\n(Interrupt -- one more to kill letter)\n");
fputs("\n(Interrupt -- one more to kill letter)\n",
stderr);
} else {
if (isatty(0)) {
printf("(continue)\n");
puts("(continue)");
fflush(stdout);
}
}
@ -169,19 +174,22 @@ cont:
if (c < 0) {
if (value("interactive") != NOSTR &&
value("ignoreeof") != NOSTR && ++eofcount < 25) {
printf("Use \".\" to terminate letter\n");
puts("Use \".\" to terminate letter");
continue;
}
break;
}
lastlong = longline;
longline = (c == LINESIZE - 1);
eofcount = 0;
hadintr = 0;
if (linebuf[0] == '.' && linebuf[1] == '\0' &&
value("interactive") != NOSTR &&
value("interactive") != NOSTR && !lastlong &&
(value("dot") != NOSTR || value("ignoreeof") != NOSTR))
break;
if (linebuf[0] != escape || value("interactive") == NOSTR) {
if (putline(collf, linebuf) < 0)
if (linebuf[0] != escape || value("interactive") == NOSTR ||
lastlong) {
if (putline(collf, linebuf, !longline) < 0)
goto err;
continue;
}
@ -193,12 +201,12 @@ cont:
* Otherwise, it's an error.
*/
if (c == escape) {
if (putline(collf, &linebuf[1]) < 0)
if (putline(collf, &linebuf[1], !longline) < 0)
goto err;
else
break;
}
printf("Unknown tilde escape.\n");
puts("Unknown tilde escape.");
break;
case 'C':
/*
@ -280,7 +288,7 @@ cont:
while (isspace(*cp))
cp++;
if (*cp == '\0') {
printf("Interpolate what file?\n");
puts("Interpolate what file?");
break;
}
cp = expand(cp);
@ -291,22 +299,24 @@ cont:
break;
}
if ((fbuf = Fopen(cp, "r")) == NULL) {
perror(cp);
warn(cp);
break;
}
printf("\"%s\" ", cp);
fflush(stdout);
lc = 0;
cc = 0;
while (readline(fbuf, linebuf, LINESIZE) >= 0) {
lc++;
if ((t = putline(collf, linebuf)) < 0) {
Fclose(fbuf);
while ((rc = readline(fbuf, linebuf, LINESIZE)) >= 0) {
if (rc != LINESIZE - 1)
lc++;
if ((t = putline(collf, linebuf,
rc != LINESIZE-1)) < 0) {
(void)Fclose(fbuf);
goto err;
}
cc += t;
}
Fclose(fbuf);
(void)Fclose(fbuf);
printf("%d/%d\n", lc, cc);
break;
case 'w':
@ -317,7 +327,7 @@ cont:
while (*cp == ' ' || *cp == '\t')
cp++;
if (*cp == '\0') {
fprintf(stderr, "Write what file!?\n");
fputs("Write what file!?\n", stderr);
break;
}
if ((cp = expand(cp)) == NOSTR)
@ -340,12 +350,12 @@ cont:
goto cont;
case '?':
if ((fbuf = Fopen(_PATH_TILDE, "r")) == NULL) {
perror(_PATH_TILDE);
warn(_PATH_TILDE);
break;
}
while ((t = getc(fbuf)) != EOF)
(void) putchar(t);
Fclose(fbuf);
(void)Fclose(fbuf);
break;
case 'p':
/*
@ -353,7 +363,7 @@ cont:
* message without altering anything.
*/
rewind(collf);
printf("-------\nMessage contains:\n");
puts("-------\nMessage contains:");
puthead(hp, stdout, GTO|GSUBJECT|GCC|GBCC|GNL);
while ((t = getc(collf)) != EOF)
(void) putchar(t);
@ -381,7 +391,7 @@ cont:
goto out;
err:
if (collf != NULL) {
Fclose(collf);
(void)Fclose(collf);
collf = NULL;
}
out:
@ -395,7 +405,7 @@ out:
signal(SIGTTOU, savettou);
signal(SIGTTIN, savettin);
sigsetmask(omask);
return collf;
return(collf);
}
/*
@ -420,11 +430,11 @@ exwrite(name, fp, f)
if (stat(name, &junk) >= 0 && (junk.st_mode & S_IFMT) == S_IFREG) {
if (!f)
fprintf(stderr, "%s: ", name);
fprintf(stderr, "File exists\n");
fputs("File exists\n", stderr);
return(-1);
}
if ((of = Fopen(name, "w")) == NULL) {
perror(NOSTR);
warn(NOSTR);
return(-1);
}
lc = 0;
@ -435,12 +445,12 @@ exwrite(name, fp, f)
lc++;
(void) putc(c, of);
if (ferror(of)) {
perror(name);
Fclose(of);
warn(name);
(void)Fclose(of);
return(-1);
}
}
Fclose(of);
(void)Fclose(of);
printf("%d/%ld\n", lc, cc);
fflush(stdout);
return(0);
@ -461,7 +471,7 @@ mesedit(fp, c)
if (nf != NULL) {
fseek(nf, 0L, 2);
collf = nf;
Fclose(fp);
(void)Fclose(fp);
}
(void) signal(SIGINT, sigint);
}
@ -483,7 +493,7 @@ mespipe(fp, cmd)
char *shell;
if ((nf = Fopen(tempEdit, "w+")) == NULL) {
perror(tempEdit);
warn(tempEdit);
goto out;
}
(void) unlink(tempEdit);
@ -495,12 +505,12 @@ mespipe(fp, cmd)
shell = _PATH_CSHELL;
if (run_command(shell,
0, fileno(fp), fileno(nf), "-c", cmd, NOSTR) < 0) {
(void) Fclose(nf);
(void)Fclose(nf);
goto out;
}
if (fsize(nf) == 0) {
fprintf(stderr, "No bytes from \"%s\" !?\n", cmd);
(void) Fclose(nf);
(void)Fclose(nf);
goto out;
}
/*
@ -508,7 +518,7 @@ mespipe(fp, cmd)
*/
(void) fseek(nf, 0L, 2);
collf = nf;
(void) Fclose(fp);
(void)Fclose(fp);
out:
(void) signal(SIGINT, sigint);
}
@ -532,7 +542,7 @@ forward(ms, fp, f)
struct ignoretab *ig;
char *tabst;
msgvec = (int *) salloc((msgCount+1) * sizeof *msgvec);
msgvec = (int *) salloc((msgCount+1) * sizeof(*msgvec));
if (msgvec == (int *) NOSTR)
return(0);
if (getmsglist(ms, msgvec, 0) < 0)
@ -540,7 +550,7 @@ forward(ms, fp, f)
if (*msgvec == 0) {
*msgvec = first(0, MMNORM);
if (*msgvec == NULL) {
printf("No appropriate messages\n");
puts("No appropriate messages");
return(0);
}
msgvec[1] = NULL;
@ -550,18 +560,18 @@ forward(ms, fp, f)
else if ((tabst = value("indentprefix")) == NOSTR)
tabst = "\t";
ig = isupper(f) ? NULL : ignore;
printf("Interpolating:");
fputs("Interpolating:", stdout);
for (; *msgvec != 0; msgvec++) {
struct message *mp = message + *msgvec - 1;
touch(mp);
printf(" %d", *msgvec);
if (send(mp, fp, ig, tabst) < 0) {
perror(tempMail);
warn(tempMail);
return(-1);
}
}
printf("\n");
putchar('\n');
return(0);
}
@ -649,6 +659,6 @@ savedeadletter(fp)
return;
while ((c = getc(fp)) != EOF)
(void) putc(c, dbuf);
Fclose(dbuf);
(void)Fclose(dbuf);
rewind(fp);
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: def.h,v 1.4 1997/03/29 03:01:45 millert Exp $ */
/* $NetBSD: def.h,v 1.8 1996/06/08 19:48:18 christos Exp $ */
/* $OpenBSD: def.h,v 1.5 1997/07/13 21:21:10 millert Exp $ */
/* $NetBSD: def.h,v 1.9 1996/12/28 07:11:00 tls Exp $ */
/*
* Copyright (c) 1980, 1993
* The Regents of the University of California. All rights reserved.
@ -32,8 +32,8 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)def.h 8.2 (Berkeley) 3/21/94
* $NetBSD: def.h,v 1.8 1996/06/08 19:48:18 christos Exp $
* @(#)def.h 8.4 (Berkeley) 4/20/95
* $OpenBSD: def.h,v 1.5 1997/07/13 21:21:10 millert Exp $
*/
/*
@ -46,13 +46,14 @@
#include <sys/stat.h>
#include <sys/time.h>
#include <ctype.h>
#include <err.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "pathnames.h"
#define APPEND /* New mail goes to end of mailbox */
@ -71,8 +72,8 @@
struct message {
short m_flag; /* flags, see below */
int m_block; /* block number of this message */
int m_offset; /* offset in block of message */
int m_block; /* block number of this message */
int m_size; /* Bytes in the message */
int m_lines; /* Lines in the message */
};

View File

@ -1,4 +1,4 @@
/* $OpenBSD: dotlock.c,v 1.1 1996/06/11 12:53:37 deraadt Exp $ */
/* $OpenBSD: dotlock.c,v 1.2 1997/07/13 21:21:11 millert Exp $ */
/* $NetBSD: dotlock.c,v 1.1 1996/06/08 19:48:19 christos Exp $ */
/*
@ -31,7 +31,7 @@
*/
#ifndef lint
static char rcsid[] = "$OpenBSD: dotlock.c,v 1.1 1996/06/11 12:53:37 deraadt Exp $";
static char rcsid[] = "$OpenBSD: dotlock.c,v 1.2 1997/07/13 21:21:11 millert Exp $";
#endif
#include <sys/types.h>
@ -90,7 +90,7 @@ create_exclusive(fname)
else
ptr++;
(void) snprintf(path, sizeof(path), "%.*s.%s.%x",
(void) snprintf(path, sizeof(path), "%.*s.%s.%x",
ptr - fname, fname, hostname, cookie);
/*
@ -99,13 +99,13 @@ create_exclusive(fname)
for (ntries = 0; ntries < 5; ntries++) {
fd = open(path, O_WRONLY|O_CREAT|O_TRUNC|O_EXCL|O_SYNC, 0);
if (fd != -1) {
(void) close(fd);
(void)close(fd);
break;
}
else if (errno == EEXIST)
continue;
else
return -1;
return(-1);
}
/*
@ -129,15 +129,15 @@ create_exclusive(fname)
*/
if (st.st_nlink != 2) {
errno = EEXIST;
return -1;
return(-1);
}
return 0;
return(0);
bad:
serrno = errno;
(void) unlink(path);
errno = serrno;
return -1;
return(-1);
}
int
@ -166,13 +166,13 @@ dot_lock(fname, pollinterval, fp, msg)
(void) sigprocmask(SIG_BLOCK, &nset, &oset);
if (create_exclusive(path) != -1) {
(void) sigprocmask(SIG_SETMASK, &oset, NULL);
return 0;
return(0);
}
else
(void) sigprocmask(SIG_SETMASK, &oset, NULL);
if (errno != EEXIST)
return -1;
return(-1);
if (fp && msg)
(void) fputs(msg, fp);
@ -180,7 +180,7 @@ dot_lock(fname, pollinterval, fp, msg)
if (pollinterval) {
if (pollinterval == -1) {
errno = EEXIST;
return -1;
return(-1);
}
sleep(pollinterval);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: edit.c,v 1.2 1996/06/11 12:53:38 deraadt Exp $ */
/* $OpenBSD: edit.c,v 1.3 1997/07/13 21:21:11 millert Exp $ */
/* $NetBSD: edit.c,v 1.5 1996/06/08 19:48:20 christos Exp $ */
/*
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)edit.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: edit.c,v 1.2 1996/06/11 12:53:38 deraadt Exp $";
static char rcsid[] = "$OpenBSD: edit.c,v 1.3 1997/07/13 21:21:11 millert Exp $";
#endif
#endif /* not lint */
@ -61,7 +61,7 @@ editor(v)
{
int *msgvec = v;
return edit1(msgvec, 'e');
return(edit1(msgvec, 'e'));
}
/*
@ -73,7 +73,7 @@ visual(v)
{
int *msgvec = v;
return edit1(msgvec, 'v');
return(edit1(msgvec, 'v'));
}
/*
@ -103,7 +103,7 @@ edit1(msgvec, type)
char *p;
printf("Edit message %d [ynq]? ", msgvec[i]);
if (fgets(buf, sizeof buf, stdin) == 0)
if (fgets(buf, sizeof(buf), stdin) == 0)
break;
for (p = buf; *p == ' ' || *p == '\t'; p++)
;
@ -132,12 +132,12 @@ edit1(msgvec, type)
break;
}
if (ferror(otf))
perror("/tmp");
(void) Fclose(fp);
warn("/tmp");
(void)Fclose(fp);
}
(void) signal(SIGINT, sigint);
}
return 0;
return(0);
}
/*
@ -160,11 +160,11 @@ run_editor(fp, size, type, readonly)
extern char *tempEdit;
if ((t = creat(tempEdit, readonly ? 0400 : 0600)) < 0) {
perror(tempEdit);
warn(tempEdit);
goto out;
}
if ((nf = Fdopen(t, "w")) == NULL) {
perror(tempEdit);
warn(tempEdit);
(void) unlink(tempEdit);
goto out;
}
@ -181,13 +181,13 @@ run_editor(fp, size, type, readonly)
modtime = statb.st_mtime;
if (ferror(nf)) {
(void) Fclose(nf);
perror(tempEdit);
warn(tempEdit);
(void) unlink(tempEdit);
nf = NULL;
goto out;
}
if (Fclose(nf) < 0) {
perror(tempEdit);
warn(tempEdit);
(void) unlink(tempEdit);
nf = NULL;
goto out;
@ -208,7 +208,7 @@ run_editor(fp, size, type, readonly)
goto out;
}
if (stat(tempEdit, &statb) < 0) {
perror(tempEdit);
warn(tempEdit);
goto out;
}
if (modtime == statb.st_mtime) {
@ -219,11 +219,11 @@ run_editor(fp, size, type, readonly)
* Now switch to new file.
*/
if ((nf = Fopen(tempEdit, "a+")) == NULL) {
perror(tempEdit);
warn(tempEdit);
(void) unlink(tempEdit);
goto out;
}
(void) unlink(tempEdit);
out:
return nf;
return(nf);
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: extern.h,v 1.5 1997/05/30 08:51:37 deraadt Exp $ */
/* $NetBSD: extern.h,v 1.4 1996/06/08 19:48:21 christos Exp $ */
/* $OpenBSD: extern.h,v 1.6 1997/07/13 21:21:12 millert Exp $ */
/* $NetBSD: extern.h,v 1.7 1997/07/09 05:22:00 mikel Exp $ */
/*-
* Copyright (c) 1992, 1993
@ -33,8 +33,8 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)extern.h 8.1 (Berkeley) 6/6/93
* $NetBSD: extern.h,v 1.4 1996/06/08 19:48:21 christos Exp $
* @(#)extern.h 8.2 (Berkeley) 4/20/95
* $OpenBSD: extern.h,v 1.6 1997/07/13 21:21:12 millert Exp $
*/
struct name;
@ -158,6 +158,8 @@ struct ignoretab;
int ignore1 __P((char *[], struct ignoretab *, char *));
int igshow __P((struct ignoretab *, char *));
void intr __P((int));
int inc __P((void *));
int incfile __P((void));
int isdate __P((char []));
int isdir __P((char []));
int isfileaddr __P((char *));
@ -173,7 +175,7 @@ struct var *
int mail __P((struct name *,
struct name *, struct name *, struct name *, char *));
void mail1 __P((struct header *, int));
void makemessage __P((FILE *));
void makemessage __P((FILE *, int));
void mark __P((int));
int markall __P((char [], int));
int matchsender __P((char *, int));
@ -185,7 +187,7 @@ void mespipe __P((FILE *, char []));
int messize __P((void *));
int metamess __P((int, int));
int more __P((void *));
int newfileinfo __P((void));
int newfileinfo __P((int));
int next __P((void *));
int null __P((void *));
void panic __P((const char *, ...))
@ -200,7 +202,7 @@ void prettyprint __P((struct name *));
void printgroup __P((char []));
void printhead __P((int));
int puthead __P((struct header *, FILE *, int));
int putline __P((FILE *, char *));
int putline __P((FILE *, char *, int));
int pversion __P((void *));
void quit __P((void));
int quitcmd __P((void *));
@ -230,7 +232,7 @@ int sendmail __P((void *));
int set __P((void *));
int setfile __P((char *));
void setmsize __P((int));
void setptr __P((FILE *));
void setptr __P((FILE *, off_t));
void setscreensize __P((void));
int shell __P((void *));
void sigchild __P((int));
@ -264,3 +266,5 @@ int visual __P((void *));
int wait_child __P((int));
int wait_command __P((int));
int writeback __P((FILE *));
extern char *__progname;

View File

@ -1,5 +1,5 @@
/* $OpenBSD: fio.c,v 1.5 1997/05/30 08:51:39 deraadt Exp $ */
/* $NetBSD: fio.c,v 1.5 1996/06/08 19:48:22 christos Exp $ */
/* $OpenBSD: fio.c,v 1.6 1997/07/13 21:21:12 millert Exp $ */
/* $NetBSD: fio.c,v 1.8 1997/07/07 22:57:55 phil Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)fio.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)fio.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: fio.c,v 1.5 1997/05/30 08:51:39 deraadt Exp $";
static char rcsid[] = "$OpenBSD: fio.c,v 1.6 1997/07/13 21:21:12 millert Exp $";
#endif
#endif /* not lint */
@ -61,58 +61,63 @@ static char rcsid[] = "$OpenBSD: fio.c,v 1.5 1997/05/30 08:51:39 deraadt Exp $";
* Set up the input pointers while copying the mail file into /tmp.
*/
void
setptr(ibuf)
setptr(ibuf, offset)
register FILE *ibuf;
off_t offset;
{
extern char *tmpdir;
register int c, count;
register char *cp, *cp2;
struct message this;
FILE *mestmp;
off_t offset;
int maybe, inhead;
char linebuf[LINESIZE], pathbuf[PATHSIZE];
int omsgCount;
/* Get temporary file. */
(void)snprintf(pathbuf, sizeof pathbuf, "%s/mail.XXXXXXXXXX", tmpdir);
if ((c = mkstemp(pathbuf)) == -1 ||
(mestmp = Fdopen(c, "r+")) == NULL) {
(void)fprintf(stderr, "mail: can't open %s\n", pathbuf);
exit(1);
}
(void)snprintf(pathbuf, sizeof(pathbuf), "%s/mail.XXXXXXXXXX", tmpdir);
if ((c = mkstemp(pathbuf)) == -1 || (mestmp = Fdopen(c, "r+")) == NULL)
err(1, "can't open %s", pathbuf);
(void)unlink(pathbuf);
msgCount = 0;
if (offset == 0) {
msgCount = 0;
} else {
/* Seek into the file to get to the new messages */
(void) fseek(ibuf, offset, 0);
/*
* We need to make "offset" a pointer to the end of
* the temp file that has the copy of the mail file.
* If any messages have been edited, this will be
* different from the offset into the mail file.
*/
(void) fseek(otf, 0L, SEEK_END);
offset = ftell(otf);
}
omsgCount = msgCount;
maybe = 1;
inhead = 0;
offset = 0;
this.m_flag = MUSED|MNEW;
this.m_size = 0;
this.m_lines = 0;
this.m_block = 0;
this.m_offset = 0;
for (;;) {
if (fgets(linebuf, LINESIZE, ibuf) == NULL) {
if (append(&this, mestmp)) {
perror("temporary file");
exit(1);
}
makemessage(mestmp);
if (fgets(linebuf, sizeof(linebuf), ibuf) == NULL) {
if (append(&this, mestmp))
err(1, "temporary file");
makemessage(mestmp, omsgCount);
return;
}
count = strlen(linebuf);
(void) fwrite(linebuf, sizeof *linebuf, count, otf);
if (ferror(otf)) {
perror("/tmp");
exit(1);
}
linebuf[count - 1] = 0;
(void) fwrite(linebuf, sizeof(*linebuf), count, otf);
if (ferror(otf))
err(1, "/tmp");
linebuf[count - 1] = '\0';
if (maybe && linebuf[0] == 'F' && ishead(linebuf)) {
msgCount++;
if (append(&this, mestmp)) {
perror("temporary file");
exit(1);
}
if (append(&this, mestmp))
err(1, "temporary file");
this.m_flag = MUSED|MNEW;
this.m_size = 0;
this.m_lines = 0;
@ -150,21 +155,25 @@ setptr(ibuf)
/*
* Drop the passed line onto the passed output buffer.
* If a write error occurs, return -1, else the count of
* characters written, including the newline.
* characters written, including the newline if requested.
*/
int
putline(obuf, linebuf)
putline(obuf, linebuf, outlf)
FILE *obuf;
char *linebuf;
int outlf;
{
register int c;
c = strlen(linebuf);
(void) fwrite(linebuf, sizeof *linebuf, c, obuf);
(void) putc('\n', obuf);
(void) fwrite(linebuf, sizeof(*linebuf), c, obuf);
if (outlf) {
(void) putc('\n', obuf);
c++;
}
if (ferror(obuf))
return (-1);
return (c + 1);
return(-1);
return(c);
}
/*
@ -182,11 +191,12 @@ readline(ibuf, linebuf, linesize)
clearerr(ibuf);
if (fgets(linebuf, linesize, ibuf) == NULL)
return -1;
return(-1);
n = strlen(linebuf);
if (n > 0 && linebuf[n - 1] == '\n')
linebuf[--n] = '\0';
return n;
return(n);
}
/*
@ -200,10 +210,10 @@ setinput(mp)
fflush(otf);
if (fseek(itf, (long)positionof(mp->m_block, mp->m_offset), 0) < 0) {
perror("fseek");
warn("fseek");
panic("temporary file seek");
}
return (itf);
return(itf);
}
/*
@ -211,24 +221,31 @@ setinput(mp)
* a dynamically allocated message structure.
*/
void
makemessage(f)
makemessage(f, omsgCount)
FILE *f;
int omsgCount;
{
register size = (msgCount + 1) * sizeof (struct message);
register size = (msgCount + 1) * sizeof(struct message);
if (message != 0)
free((char *) message);
if ((message = (struct message *) malloc((unsigned) size)) == 0)
panic("Insufficient memory for %d messages", msgCount);
dot = message;
size -= sizeof (struct message);
if (omsgCount) {
message = (struct message *)realloc(message, (unsigned) size);
if (message == 0)
panic("Insufficient memory for %d messages\n", msgCount);
} else {
if (message != 0)
free((char *) message);
if ((message = (struct message *) malloc((unsigned) size)) == 0)
panic("Insufficient memory for %d messages", msgCount);
dot = message;
}
size -= (omsgCount + 1) * sizeof(struct message);
fflush(f);
(void) lseek(fileno(f), (off_t)sizeof *message, 0);
if (read(fileno(f), (char *) message, size) != size)
(void) lseek(fileno(f), (off_t)sizeof(*message), 0);
if (read(fileno(f), (void *) &message[omsgCount], size) != size)
panic("Message temporary file corrupted");
message[msgCount].m_size = 0;
message[msgCount].m_lines = 0;
Fclose(f);
(void)Fclose(f);
}
/*
@ -240,7 +257,7 @@ append(mp, f)
struct message *mp;
FILE *f;
{
return fwrite((char *) mp, sizeof *mp, 1, f) != 1;
return(fwrite((char *) mp, sizeof(*mp), 1, f) != 1);
}
/*
@ -301,8 +318,8 @@ fsize(iob)
struct stat sbuf;
if (fstat(fileno(iob), &sbuf) < 0)
return 0;
return sbuf.st_size;
return(0);
return(sbuf.st_size);
}
/*
@ -336,73 +353,73 @@ expand(name)
*/
switch (*name) {
case '%':
findmail(name[1] ? name + 1 : myname, xname, sizeof xname);
return savestr(xname);
findmail(name[1] ? name + 1 : myname, xname, sizeof(xname));
return(savestr(xname));
case '#':
if (name[1] != 0)
break;
if (prevfile[0] == 0) {
printf("No previous file\n");
return NOSTR;
puts("No previous file");
return(NOSTR);
}
return savestr(prevfile);
return(savestr(prevfile));
case '&':
if (name[1] == 0 && (name = value("MBOX")) == NOSTR)
name = "~/mbox";
/* fall through */
}
if (name[0] == '+' && getfold(cmdbuf, sizeof cmdbuf) >= 0) {
snprintf(xname, sizeof xname, "%s/%s", cmdbuf, name + 1);
if (name[0] == '+' && getfold(cmdbuf, sizeof(cmdbuf)) >= 0) {
snprintf(xname, sizeof(xname), "%s/%s", cmdbuf, name + 1);
name = savestr(xname);
}
/* catch the most common shell meta character */
if (name[0] == '~' && (name[1] == '/' || name[1] == '\0')) {
snprintf(xname, sizeof xname, "%s%s", homedir, name + 1);
snprintf(xname, sizeof(xname), "%s%s", homedir, name + 1);
name = savestr(xname);
}
if (!anyof(name, "~{[*?$`'\"\\"))
return name;
return(name);
if (pipe(pivec) < 0) {
perror("pipe");
return name;
warn("pipe");
return(name);
}
snprintf(cmdbuf, sizeof cmdbuf, "echo %s", name);
snprintf(cmdbuf, sizeof(cmdbuf), "echo %s", name);
if ((shell = value("SHELL")) == NOSTR)
shell = _PATH_CSHELL;
pid = start_command(shell, 0, -1, pivec[1], "-c", cmdbuf, NOSTR);
if (pid < 0) {
close(pivec[0]);
close(pivec[1]);
return NOSTR;
(void)close(pivec[0]);
(void)close(pivec[1]);
return(NOSTR);
}
close(pivec[1]);
l = read(pivec[0], xname, BUFSIZ);
close(pivec[0]);
(void)close(pivec[1]);
l = read(pivec[0], xname, PATHSIZE);
(void)close(pivec[0]);
if (wait_child(pid) < 0 && wait_status.w_termsig != SIGPIPE) {
fprintf(stderr, "\"%s\": Expansion failed.\n", name);
return NOSTR;
return(NOSTR);
}
if (l < 0) {
perror("read");
return NOSTR;
warn("read");
return(NOSTR);
}
if (l == 0) {
fprintf(stderr, "\"%s\": No match.\n", name);
return NOSTR;
return(NOSTR);
}
if (l == BUFSIZ) {
if (l == PATHSIZE) {
fprintf(stderr, "\"%s\": Expansion buffer overflow.\n", name);
return NOSTR;
return(NOSTR);
}
xname[l] = 0;
xname[l] = '\0';
for (cp = &xname[l-1]; *cp == '\n' && cp > xname; cp--)
;
cp[1] = '\0';
if (strchr(xname, ' ') && stat(xname, &sbuf) < 0) {
fprintf(stderr, "\"%s\": Ambiguous.\n", name);
return NOSTR;
return(NOSTR);
}
return savestr(xname);
return(savestr(xname));
}
/*
@ -416,13 +433,13 @@ getfold(name, namelen)
char *folder;
if ((folder = value("folder")) == NOSTR)
return (-1);
return(-1);
if (*folder == '/') {
strncpy(name, folder, namelen-1);
name[namelen-1] = '\0';
} else
snprintf(name, namelen, "%s/%s", homedir, folder);
return (0);
return(0);
}
/*
@ -438,8 +455,8 @@ getdeadletter()
else if (*cp != '/') {
char buf[PATHSIZE];
(void) snprintf(buf, sizeof buf, "~/%s", cp);
(void) snprintf(buf, sizeof(buf), "~/%s", cp);
cp = expand(buf);
}
return cp;
return(cp);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: getname.c,v 1.2 1996/06/11 12:53:40 deraadt Exp $ */
/* $OpenBSD: getname.c,v 1.3 1997/07/13 21:21:13 millert Exp $ */
/* $NetBSD: getname.c,v 1.4 1996/06/08 19:48:23 christos Exp $ */
/*
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)getname.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: getname.c,v 1.2 1996/06/11 12:53:40 deraadt Exp $";
static char rcsid[] = "$OpenBSD: getname.c,v 1.3 1997/07/13 21:21:13 millert Exp $";
#endif
#endif /* not lint */
@ -58,8 +58,8 @@ getname(uid)
struct passwd *pw;
if ((pw = getpwuid(uid)) == NULL)
return NOSTR;
return pw->pw_name;
return(NOSTR);
return(pw->pw_name);
}
/*
@ -73,6 +73,6 @@ getuserid(name)
struct passwd *pw;
if ((pw = getpwnam(name)) == NULL)
return -1;
return pw->pw_uid;
return(-1);
return(pw->pw_uid);
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: head.c,v 1.2 1996/06/11 12:53:42 deraadt Exp $ */
/* $NetBSD: head.c,v 1.5 1996/06/08 19:48:26 christos Exp $ */
/* $OpenBSD: head.c,v 1.3 1997/07/13 21:21:13 millert Exp $ */
/* $NetBSD: head.c,v 1.6 1996/12/28 07:11:03 tls Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)head.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)head.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: head.c,v 1.2 1996/06/11 12:53:42 deraadt Exp $";
static char rcsid[] = "$OpenBSD: head.c,v 1.3 1997/07/13 21:21:13 millert Exp $";
#endif
#endif /* not lint */
@ -67,20 +67,20 @@ ishead(linebuf)
cp = linebuf;
if (*cp++ != 'F' || *cp++ != 'r' || *cp++ != 'o' || *cp++ != 'm' ||
*cp++ != ' ')
return (0);
return(0);
parse(linebuf, &hl, parbuf);
if (hl.l_from == NOSTR || hl.l_date == NOSTR) {
fail(linebuf, "No from or date field");
return (0);
return(0);
}
if (!isdate(hl.l_date)) {
fail(linebuf, "Date field not legal date");
return (0);
return(0);
}
/*
* I guess we got it!
*/
return (1);
return(1);
}
/*ARGSUSED*/
@ -149,7 +149,7 @@ copyin(src, space)
while ((*cp++ = *src++) != '\0')
;
*space = cp;
return (top);
return(top);
}
/*
@ -170,18 +170,21 @@ copyin(src, space)
* 'N' A new line
*/
char ctype[] = "Aaa Aaa O0 00:00:00 0000";
char ctype_without_secs[] = "Aaa Aaa O0 00:00 0000";
char tmztype[] = "Aaa Aaa O0 00:00:00 AAA 0000";
char tmztype_without_secs[] = "Aaa Aaa O0 00:00 AAA 0000";
/*
* Yuck. If the mail file is created by Sys V (Solaris),
* there are no seconds in the time...
*/
char SysV_ctype[] = "Aaa Aaa O0 00:00 0000";
char SysV_tmztype[] = "Aaa Aaa O0 00:00 AAA 0000";
int
isdate(date)
char date[];
{
return cmatch(date, ctype_without_secs) ||
cmatch(date, tmztype_without_secs) ||
cmatch(date, ctype) || cmatch(date, tmztype);
return(cmatch(date, ctype) || cmatch(date, tmztype)
|| cmatch(date, SysV_tmztype) || cmatch(date, SysV_ctype));
}
/*
@ -197,37 +200,37 @@ cmatch(cp, tp)
switch (*tp++) {
case 'a':
if (!islower(*cp++))
return 0;
return(0);
break;
case 'A':
if (!isupper(*cp++))
return 0;
return(0);
break;
case ' ':
if (*cp++ != ' ')
return 0;
return(0);
break;
case '0':
if (!isdigit(*cp++))
return 0;
return(0);
break;
case 'O':
if (*cp != ' ' && !isdigit(*cp))
return 0;
return(0);
cp++;
break;
case ':':
if (*cp++ != ':')
return 0;
return(0);
break;
case 'N':
if (*cp++ != '\n')
return 0;
return(0);
break;
}
if (*cp || *tp)
return 0;
return (1);
return(0);
return(1);
}
/*
@ -243,7 +246,7 @@ nextword(wp, wbuf)
if (wp == NOSTR) {
*wbuf = 0;
return (NOSTR);
return(NOSTR);
}
while ((c = *wp++) && c != ' ' && c != '\t') {
*wbuf++ = c;
@ -260,6 +263,6 @@ nextword(wp, wbuf)
for (; c == ' ' || c == '\t'; c = *wp++)
;
if (c == 0)
return (NOSTR);
return (wp - 1);
return(NOSTR);
return(wp - 1);
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: lex.c,v 1.5 1997/05/30 08:51:40 deraadt Exp $ */
/* $NetBSD: lex.c,v 1.7 1996/06/08 19:48:28 christos Exp $ */
/* $OpenBSD: lex.c,v 1.6 1997/07/13 21:21:13 millert Exp $ */
/* $NetBSD: lex.c,v 1.10 1997/05/17 19:55:13 pk Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)lex.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)lex.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: lex.c,v 1.5 1997/05/30 08:51:40 deraadt Exp $";
static char rcsid[] = "$OpenBSD: lex.c,v 1.6 1997/07/13 21:21:13 millert Exp $";
#endif
#endif /* not lint */
@ -75,36 +75,36 @@ setfile(name)
extern int errno;
if ((name = expand(name)) == NOSTR)
return -1;
return(-1);
if ((ibuf = Fopen(name, "r")) == NULL) {
if (!isedit && errno == ENOENT)
goto nomail;
perror(name);
warn(name);
return(-1);
}
if (fstat(fileno(ibuf), &stb) < 0) {
perror("fstat");
Fclose(ibuf);
return (-1);
warn("fstat");
(void)Fclose(ibuf);
return(-1);
}
switch (stb.st_mode & S_IFMT) {
case S_IFDIR:
Fclose(ibuf);
(void)Fclose(ibuf);
errno = EISDIR;
perror(name);
return (-1);
warn(name);
return(-1);
case S_IFREG:
break;
default:
Fclose(ibuf);
(void)Fclose(ibuf);
errno = EINVAL;
perror(name);
return (-1);
warn(name);
return(-1);
}
/*
@ -127,10 +127,10 @@ setfile(name)
if ((i = open(name, 1)) < 0)
readonly++;
else
close(i);
(void)close(i);
if (shudclob) {
fclose(itf);
fclose(otf);
(void)fclose(itf);
(void)fclose(otf);
}
shudclob = 1;
edit = isedit;
@ -138,30 +138,63 @@ setfile(name)
if (name != mailname)
strcpy(mailname, name);
mailsize = fsize(ibuf);
if ((otf = fopen(tempMesg, "w")) == NULL) {
perror(tempMesg);
exit(1);
}
if ((otf = fopen(tempMesg, "w")) == NULL)
err(1, tempMesg);
(void) fcntl(fileno(otf), F_SETFD, 1);
if ((itf = fopen(tempMesg, "r")) == NULL) {
perror(tempMesg);
exit(1);
}
if ((itf = fopen(tempMesg, "r")) == NULL)
err(1, tempMesg);
(void) fcntl(fileno(itf), F_SETFD, 1);
rm(tempMesg);
setptr(ibuf);
setptr(ibuf, 0);
setmsize(msgCount);
Fclose(ibuf);
/*
* New mail may have arrived while we were reading
* the mail file, so reset mailsize to be where
* we really are in the file...
*/
mailsize = ftell(ibuf);
(void)Fclose(ibuf);
relsesigs();
sawcom = 0;
if (!edit && msgCount == 0) {
nomail:
fprintf(stderr, "No mail for %s\n", who);
return -1;
return(-1);
}
return(0);
}
/*
* Incorporate any new mail that has arrived since we first
* started reading mail.
*/
int
incfile()
{
int newsize;
int omsgCount = msgCount;
FILE *ibuf;
ibuf = Fopen(mailname, "r");
if (ibuf == NULL)
return(-1);
holdsigs();
newsize = fsize(ibuf);
if (newsize == 0)
return(-1); /* mail box is now empty??? */
if (newsize < mailsize)
return(-1); /* mail box has shrunk??? */
if (newsize == mailsize)
return(0); /* no new mail */
setptr(ibuf, mailsize);
setmsize(msgCount);
mailsize = ftell(ibuf);
(void)Fclose(ibuf);
relsesigs();
return(msgCount - omsgCount);
}
int *msgvec;
int reset_on_stop; /* do a reset() if stopped */
@ -196,6 +229,8 @@ commands()
* string space, and flush the output.
*/
if (!sourcing && value("interactive") != NOSTR) {
if ((value("autoinc") != NOSTR) && (incfile() > 0))
puts("New mail has arrived.");
reset_on_stop = 1;
printf(prompt);
}
@ -231,7 +266,7 @@ commands()
if (value("interactive") != NOSTR &&
value("ignoreeof") != NOSTR &&
++eofloop < 25) {
printf("Use \"quit\" to quit.\n");
puts("Use \"quit\" to quit.");
continue;
}
break;
@ -275,7 +310,7 @@ execute(linebuf, contxt)
;
if (*cp == '!') {
if (sourcing) {
printf("Can't \"!\" while sourcing\n");
puts("Can't \"!\" while sourcing");
goto out;
}
shell(cp+1);
@ -344,7 +379,7 @@ execute(linebuf, contxt)
* legal message.
*/
if (msgvec == 0) {
printf("Illegal use of \"message list\"\n");
puts("Illegal use of \"message list\"");
break;
}
if ((c = getmsglist(cp, msgvec, com->c_msgflag)) < 0)
@ -355,7 +390,7 @@ execute(linebuf, contxt)
msgvec[1] = NULL;
}
if (*msgvec == NULL) {
printf("No applicable messages\n");
puts("No applicable messages");
break;
}
e = (*com->c_func)(msgvec);
@ -367,7 +402,7 @@ execute(linebuf, contxt)
* if none exist.
*/
if (msgvec == 0) {
printf("Illegal use of \"message list\"\n");
puts("Illegal use of \"message list\"");
break;
}
if (getmsglist(cp, msgvec, com->c_msgflag) < 0)
@ -390,7 +425,7 @@ execute(linebuf, contxt)
* A vector of strings, in shell style.
*/
if ((c = getrawlist(cp, arglist,
sizeof arglist / sizeof *arglist)) < 0)
sizeof(arglist) / sizeof(*arglist))) < 0)
break;
if (c < com->c_minargs) {
printf("%s requires at least %d arg(s)\n",
@ -424,12 +459,12 @@ out:
*/
if (e) {
if (e < 0)
return 1;
return(1);
if (loading)
return 1;
return(1);
if (sourcing)
unstack();
return 0;
return(0);
}
if (com == NULL)
return(0);
@ -455,7 +490,7 @@ setmsize(sz)
if (msgvec != 0)
free((char *) msgvec);
msgvec = (int *) calloc((unsigned) (sz + 1), sizeof *msgvec);
msgvec = (int *) calloc((unsigned) (sz + 1), sizeof(*msgvec));
}
/*
@ -520,10 +555,10 @@ intr(s)
close_all_files();
if (image >= 0) {
close(image);
(void)close(image);
image = -1;
}
fprintf(stderr, "Interrupt\n");
fputs("Interrupt\n", stderr);
reset(0);
}
@ -571,7 +606,7 @@ announce()
{
int vec[2], mdot;
mdot = newfileinfo();
mdot = newfileinfo(0);
vec[0] = mdot;
vec[1] = 0;
dot = &message[mdot - 1];
@ -587,23 +622,24 @@ announce()
* Return a likely place to set dot.
*/
int
newfileinfo()
newfileinfo(omsgCount)
int omsgCount;
{
register struct message *mp;
register int u, n, mdot, d, s;
char fname[PATHSIZE+1], zname[PATHSIZE+1], *ename;
char fname[PATHSIZE], zname[PATHSIZE], *ename;
for (mp = &message[0]; mp < &message[msgCount]; mp++)
for (mp = &message[omsgCount]; mp < &message[msgCount]; mp++)
if (mp->m_flag & MNEW)
break;
if (mp >= &message[msgCount])
for (mp = &message[0]; mp < &message[msgCount]; mp++)
for (mp = &message[omsgCount]; mp < &message[msgCount]; mp++)
if ((mp->m_flag & MREAD) == 0)
break;
if (mp < &message[msgCount])
mdot = mp - &message[0] + 1;
else
mdot = 1;
mdot = omsgCount + 1;
s = d = 0;
for (mp = &message[0], n = 0, u = 0; mp < &message[msgCount]; mp++) {
if (mp->m_flag & MNEW)
@ -616,16 +652,17 @@ newfileinfo()
s++;
}
ename = mailname;
if (getfold(fname, sizeof fname) >= 0) {
strcat(fname, "/");
if (getfold(fname, sizeof(fname)) >= 0) {
strncat(fname, "/", sizeof(fname) - strlen(fname) - 1);
if (strncmp(fname, mailname, strlen(fname)) == 0) {
snprintf(zname, sizeof zname, "+%s", mailname + strlen(fname));
snprintf(zname, sizeof(zname), "+%s",
mailname + strlen(fname));
ename = zname;
}
}
printf("\"%s\": ", ename);
if (msgCount == 1)
printf("1 message");
fputs("1 message", stdout);
else
printf("%d messages", msgCount);
if (n > 0)
@ -637,8 +674,8 @@ newfileinfo()
if (s > 0)
printf(" %d saved", s);
if (readonly)
printf(" [Read only]");
printf("\n");
fputs(" [Read only]", stdout);
putchar('\n');
return(mdot);
}
@ -676,5 +713,5 @@ load(name)
loading = 0;
sourcing = 0;
input = oldin;
Fclose(in);
(void)Fclose(in);
}

View File

@ -1,5 +1,5 @@
/* $OpenBSD: list.c,v 1.4 1997/05/30 08:51:42 deraadt Exp $ */
/* $NetBSD: list.c,v 1.4 1996/06/08 19:48:30 christos Exp $ */
/* $OpenBSD: list.c,v 1.5 1997/07/13 21:21:14 millert Exp $ */
/* $NetBSD: list.c,v 1.7 1997/07/09 05:23:36 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)list.c 8.2 (Berkeley) 4/19/94";
static char sccsid[] = "@(#)list.c 8.4 (Berkeley) 5/1/95";
#else
static char rcsid[] = "$OpenBSD: list.c,v 1.4 1997/05/30 08:51:42 deraadt Exp $";
static char rcsid[] = "$OpenBSD: list.c,v 1.5 1997/07/13 21:21:14 millert Exp $";
#endif
#endif /* not lint */
@ -68,7 +68,7 @@ getmsglist(buf, vector, flags)
if (msgCount == 0) {
*vector = 0;
return 0;
return(0);
}
if (markall(buf, flags) < 0)
return(-1);
@ -145,7 +145,7 @@ markall(buf, f)
case TNUMBER:
number:
if (star) {
printf("No numbers mixed with *\n");
puts("No numbers mixed with *");
return(-1);
}
mc++;
@ -172,14 +172,14 @@ number:
case TPLUS:
if (beg != 0) {
printf("Non-numeric second argument\n");
puts("Non-numeric second argument");
return(-1);
}
i = valdot;
do {
i++;
if (i > msgCount) {
printf("Referencing beyond EOF\n");
puts("Referencing beyond EOF");
return(-1);
}
} while ((message[i - 1].m_flag & MDELETED) != f);
@ -192,7 +192,7 @@ number:
do {
i--;
if (i <= 0) {
printf("Referencing before 1\n");
puts("Referencing before 1");
return(-1);
}
} while ((message[i - 1].m_flag & MDELETED) != f);
@ -202,7 +202,7 @@ number:
case TSTRING:
if (beg != 0) {
printf("Non-numeric second argument\n");
puts("Non-numeric second argument");
return(-1);
}
other++;
@ -229,14 +229,14 @@ number:
case TSTAR:
if (other) {
printf("Can't mix \"*\" with anything\n");
puts("Can't mix \"*\" with anything");
return(-1);
}
star++;
break;
case TERROR:
return -1;
return(-1);
}
tok = scan(&bufp);
}
@ -250,7 +250,7 @@ number:
mc++;
}
if (mc == 0) {
printf("No applicable messages.\n");
puts("No applicable messages.");
return(-1);
}
return(0);
@ -306,7 +306,7 @@ number:
namelist[0]);
for (np = &namelist[1]; *np != NOSTR; np++)
printf(", %s", *np);
printf("}\n");
puts("}");
return(-1);
}
}
@ -334,11 +334,11 @@ number:
if (mp >= &message[msgCount]) {
register struct coltab *colp;
printf("No messages satisfy");
fputs("No messages satisfy", stdout);
for (colp = &coltab[0]; colp->co_char; colp++)
if (colp->co_bit & colmod)
printf(" :%c", colp->co_char);
printf("\n");
putchar('\n');
return(-1);
}
}
@ -408,8 +408,7 @@ getrawlist(line, argv, argc)
if (*cp == '\0')
break;
if (argn >= argc - 1) {
printf(
"Too many elements in the list; excess discarded.\n");
puts("Too many elements in the list; excess discarded.");
break;
}
cp2 = linebuf;
@ -480,7 +479,7 @@ getrawlist(line, argv, argc)
argv[argn++] = savestr(linebuf);
}
argv[argn] = NOSTR;
return argn;
return(argn);
}
/*
@ -597,7 +596,7 @@ scan(sp)
}
if (quotec && c == 0) {
fprintf(stderr, "Missing %c\n", quotec);
return TERROR;
return(TERROR);
}
*sp = --cp;
*cp2 = '\0';
@ -639,16 +638,16 @@ first(f, m)
register struct message *mp;
if (msgCount == 0)
return 0;
return(0);
f &= MDELETED;
m &= MDELETED;
for (mp = dot; mp < &message[msgCount]; mp++)
if ((mp->m_flag & m) == f)
return mp - message + 1;
return(mp - message + 1);
for (mp = dot-1; mp >= &message[0]; mp--)
if ((mp->m_flag & m) == f)
return mp - message + 1;
return 0;
return(mp - message + 1);
return(0);
}
/*
@ -663,7 +662,7 @@ matchsender(str, mesg)
register char *cp, *cp2, *backup;
if (!*str) /* null string matches nothing instead of everything */
return 0;
return(0);
backup = cp2 = nameof(&message[mesg - 1], 0);
cp = str;
while (*cp2) {
@ -677,6 +676,47 @@ matchsender(str, mesg)
return(*cp == 0);
}
/*
* See if the passed name received the passed message number. Return true
* if so.
*/
static char *to_fields[] = { "to", "cc", "bcc", NULL };
int
matchto(str, mesg)
char *str;
{
register struct message *mp;
register char *cp, *cp2, *backup, **to;
str++;
if (*str == 0) /* null string matches nothing instead of everything */
return(0);
mp = &message[mesg-1];
for (to = to_fields; *to; to++) {
cp = str;
cp2 = hfield(*to, mp);
if (cp2 != NOSTR) {
backup = cp2;
while (*cp2) {
if (*cp == 0)
return(1);
if (raise(*cp++) != raise(*cp2++)) {
cp2 = ++backup;
cp = str;
}
}
if (*cp == 0)
return(1);
}
}
return(0);
}
/*
* See if the given string matches inside the subject field of the
* given message. For the purpose of the scan, we ignore case differences.
@ -695,13 +735,12 @@ matchsubj(str, mesg)
register char *cp, *cp2, *backup;
str++;
if (strlen(str) == 0)
if (*str == '\0')
str = lastscan;
else {
strncpy(lastscan, str, sizeof lastscan-1);
lastscan[sizeof lastscan-1] = '\0';
strncpy(lastscan, str, sizeof(lastscan) - 1);
lastscan[sizeof(lastscan) - 1] = '\0';
}
mp = &message[mesg-1];
/*
@ -709,8 +748,12 @@ matchsubj(str, mesg)
*/
if (value("searchheaders") && (cp = strchr(str, ':'))) {
/* Check for special case "/To:" */
if (raise(str[0]) == 'T' && raise(str[1]) == 'O' &&
str[2] == ':')
return(matchto(cp, mesg));
*cp++ = '\0';
cp2 = hfield(str, mp);
cp2 = hfield(*str ? str : "subject", mp);
cp[-1] = ':';
str = cp;
} else {
@ -780,7 +823,7 @@ metamess(meta, f)
for (mp = &message[0]; mp < &message[msgCount]; mp++)
if ((mp->m_flag & MDELETED) == f)
return(mp - &message[0] + 1);
printf("No applicable messages\n");
puts("No applicable messages");
return(-1);
case '$':
@ -790,11 +833,11 @@ metamess(meta, f)
for (mp = &message[msgCount-1]; mp >= &message[0]; mp--)
if ((mp->m_flag & MDELETED) == f)
return(mp - &message[0] + 1);
printf("No applicable messages\n");
puts("No applicable messages");
return(-1);
case '.':
/*
/*
* Current message.
*/
m = dot - &message[0] + 1;

View File

@ -1,4 +1,5 @@
.\" $OpenBSD: mail.1,v 1.4 1997/01/13 20:36:23 deraadt Exp $
.\" $OpenBSD: mail.1,v 1.5 1997/07/13 21:21:14 millert Exp $
.\"
.\" Copyright (c) 1980, 1990, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
@ -30,9 +31,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" from: @(#)mail.1 8.2 (Berkeley) 12/30/93
.\" @(#)mail.1 8.8 (Berkeley) 4/28/95
.\"
.Dd December 30, 1993
.Dd April 28, 1995
.Dt MAIL 1
.Os BSD 4
.Sh NAME
@ -447,6 +448,7 @@ argument is given, the previous 18\-message group is printed.
.It Ic help
A synonym for
.Ic \&?
.ne li
.It Ic hold
.Pf ( Ic ho ,
also
@ -472,6 +474,13 @@ and
.Ic Print
commands can be used to print a message in its entirety, including
ignored fields.
.It Ic inc
Incorporate any new messages that have arrived while mail
is being read.
The new messages are added to the end of the message list,
and the current message is reset to be the first new mail message.
This does not renumber the existing message list, nor does
does it cause any changes made so far to be saved.
If
.Ic ignore
is executed with no arguments, it lists the current set of
@ -588,6 +597,7 @@ saving a message by
.Ic save
or when automatically saving to
.Ar mbox .
.pl +1
.It Ic saveretain
.Ic Saveretain
is to
@ -715,6 +725,7 @@ Message headers currently being ignored (by the
or
.Ic retain
command) are not included.
.ne li
.It Ic \&~F Ns Ar messages
Identical to
.Ic \&~f ,
@ -806,11 +817,18 @@ Causes
to prompt you for the subject of each message you send.
If
you respond with simply a newline, no subject field will be sent.
.ne li
.It Ar askcc
Causes you to be prompted for additional carbon copy recipients at the
end of each message.
Responding with a newline indicates your
satisfaction with the current list.
.It Ar autoinc
Causes new mail to be automatically incorporated when it arrives.
Setting this is similar to issuing the
.Ic inc
command at each prompt, except that the current message is not
reset when new mail arrives.
.It Ar askbcc
Causes you to be prompted for additional blind carbon copy recipients at the
end of each message.
@ -891,6 +909,13 @@ Suppresses the printing of the version when first invoked.
If this option is set, then a message-list specifier in the form ``/x:y''
will expand to all messages containing the substring ``y'' in the header
field ``x''. The string search is case insensitive.
If ``x'' is ommitted, it will default to the ``Subject'' header field.
The form ``/to:y'' is a special case, and will expand
to all messages containing the substring ``y'' in the ``To'', ``Cc''
or ``Bcc'' header fields.
The check for "to" is case sensitive, so that
``/To:y'' can be used to limit the search for ``y'' to just
the ``To:'' field.
.It Ar verbose
Setting the option
.Ar verbose
@ -939,6 +964,7 @@ Pathname of the text editor to use in the
command and
.Ic \&~v
escape.
.ne li
.It Va crt
The valued option
.Va crt
@ -1001,6 +1027,9 @@ Post office.
User's old mail.
.It ~/.mailrc
File giving initial mail commands.
This can be overridden by setting the
.Ev MAILRC
environment variable.
.It Pa /tmp/R*
Temporary files.
.It Pa /usr/share/misc/mail.*help

View File

@ -1,5 +1,5 @@
/* $OpenBSD: main.c,v 1.4 1997/01/15 23:42:50 millert Exp $ */
/* $NetBSD: main.c,v 1.5 1996/06/08 19:48:31 christos Exp $ */
/* $OpenBSD: main.c,v 1.5 1997/07/13 21:21:15 millert Exp $ */
/* $NetBSD: main.c,v 1.7 1997/05/13 06:15:57 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -42,9 +42,9 @@ static char copyright[] =
#ifndef lint
#if 0
static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)main.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: main.c,v 1.4 1997/01/15 23:42:50 millert Exp $";
static char rcsid[] = "$OpenBSD: main.c,v 1.5 1997/07/13 21:21:15 millert Exp $";
#endif
#endif /* not lint */
@ -72,6 +72,7 @@ main(argc, argv)
char *ef;
char nosrc = 0;
sig_t prevint;
char *rc;
/*
* Set up a reasonable environment.
@ -103,11 +104,9 @@ main(argc, argv)
* articles have been read/deleted for netnews.
*/
Tflag = optarg;
if ((i = creat(Tflag, 0600)) < 0) {
perror(Tflag);
exit(1);
}
close(i);
if ((i = creat(Tflag, 0600)) < 0)
err(1, Tflag);
(void)close(i);
break;
case 'u':
/*
@ -185,12 +184,11 @@ main(argc, argv)
bcc = cat(bcc, nalloc(optarg, GBCC));
break;
case '?':
fputs("\
Usage: mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...\n\
fprintf(stderr, "\
Usage: %s [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...\n\
[- sendmail-options ...]\n\
mail [-iInNv] -f [name]\n\
mail [-iInNv] [-u user]\n",
stderr);
%s [-iInNv] -f [name]\n\
%s [-iInNv] [-u user]\n", __progname, __progname, __progname);
exit(1);
}
}
@ -201,14 +199,10 @@ Usage: mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...\n\
/*
* Check for inconsistent arguments.
*/
if (to == NIL && (subject != NOSTR || cc != NIL || bcc != NIL)) {
fputs("You must specify direct recipients with -s, -c, or -b.\n", stderr);
exit(1);
}
if (ef != NOSTR && to != NIL) {
fprintf(stderr, "Cannot give -f and people to send to.\n");
exit(1);
}
if (to == NIL && (subject != NOSTR || cc != NIL || bcc != NIL))
errx(1, "You must specify direct recipients with -s, -c, or -b");
if (ef != NOSTR && to != NIL)
errx(1, "Cannot give -f and people to send to");
tinit();
setscreensize();
input = stdin;
@ -220,7 +214,9 @@ Usage: mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...\n\
* Expand returns a savestr, but load only uses the file name
* for fopen, so it's safe to do this.
*/
load(expand("~/.mailrc"));
if ((rc = getenv("MAILRC")) == 0)
rc = "~/.mailrc";
load(expand(rc));
if (!rcvmode) {
mail(to, cc, bcc, smopts, subject);
/*
@ -266,7 +262,7 @@ hdrstop(signo)
{
fflush(stdout);
fprintf(stderr, "\nInterrupt\n");
fputs("\nInterrupt\n", stderr);
longjmp(hdrjmp, 1);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: names.c,v 1.3 1997/01/17 07:12:50 millert Exp $ */
/* $OpenBSD: names.c,v 1.4 1997/07/13 21:21:15 millert Exp $ */
/* $NetBSD: names.c,v 1.5 1996/06/08 19:48:32 christos Exp $ */
/*
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)names.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: names.c,v 1.3 1997/01/17 07:12:50 millert Exp $";
static char rcsid[] = "$OpenBSD: names.c,v 1.4 1997/07/13 21:21:15 millert Exp $";
#endif
#endif /* not lint */
@ -64,7 +64,7 @@ nalloc(str, ntype)
{
register struct name *np;
np = (struct name *) salloc(sizeof *np);
np = (struct name *) salloc(sizeof(*np));
np->n_flink = NIL;
np->n_blink = NIL;
np->n_type = ntype;
@ -104,7 +104,7 @@ extract(line, ntype)
char nbuf[BUFSIZ];
if (line == NOSTR || *line == '\0')
return NIL;
return(NIL);
top = NIL;
np = NIL;
cp = line;
@ -117,7 +117,7 @@ extract(line, ntype)
t->n_blink = np;
np = t;
}
return top;
return(top);
}
/*
@ -139,7 +139,7 @@ detract(np, ntype)
ntype &= ~GCOMMA;
s = 0;
if (debug && comma)
fprintf(stderr, "detract asked to insert commas\n");
fputs("detract asked to insert commas\n", stderr);
for (p = np; p != NIL; p = p->n_flink) {
if (ntype && (p->n_type & GMASK) != ntype)
continue;
@ -179,7 +179,7 @@ yankword(ap, wbuf)
cp = ap;
for (;;) {
if (*cp == '\0')
return NOSTR;
return(NOSTR);
if (*cp == '(') {
register int nesting = 0;
@ -207,7 +207,7 @@ yankword(ap, wbuf)
for (cp2 = wbuf; *cp && !strchr(" \t,(", *cp); *cp2++ = *cp++)
;
*cp2 = '\0';
return cp;
return(cp);
}
/*
@ -254,16 +254,16 @@ outof(names, fo, hp)
if (image < 0) {
if ((fout = Fopen(tempEdit, "a")) == NULL) {
perror(tempEdit);
warn(tempEdit);
senderr++;
goto cant;
}
image = open(tempEdit, 2);
(void) unlink(tempEdit);
if (image < 0) {
perror(tempEdit);
warn(tempEdit);
senderr++;
(void) Fclose(fout);
(void)Fclose(fout);
goto cant;
}
(void) fcntl(image, F_SETFD, 1);
@ -275,8 +275,8 @@ outof(names, fo, hp)
(void) putc('\n', fout);
(void) fflush(fout);
if (ferror(fout))
perror(tempEdit);
(void) Fclose(fout);
warn(tempEdit);
(void)Fclose(fout);
}
/*
@ -313,28 +313,30 @@ outof(names, fo, hp)
} else {
int f;
if ((fout = Fopen(fname, "a")) == NULL) {
perror(fname);
warn(fname);
senderr++;
goto cant;
}
if ((f = dup(image)) < 0) {
perror("dup");
warn("dup");
fin = NULL;
} else
fin = Fdopen(f, "r");
if (fin == NULL) {
fprintf(stderr, "Can't reopen image\n");
(void) Fclose(fout);
fputs("Can't reopen image\n", stderr);
(void)Fclose(fout);
senderr++;
goto cant;
}
rewind(fin);
while ((c = getc(fin)) != EOF)
(void) putc(c, fout);
if (ferror(fout))
senderr++, perror(fname);
(void) Fclose(fout);
(void) Fclose(fin);
if (ferror(fout)) {
senderr++;
warn(fname);
}
(void)Fclose(fout);
(void)Fclose(fin);
}
cant:
/*
@ -346,7 +348,7 @@ cant:
np = np->n_flink;
}
if (image >= 0) {
(void) close(image);
(void)close(image);
image = -1;
}
return(top);
@ -364,14 +366,14 @@ isfileaddr(name)
register char *cp;
if (*name == '+')
return 1;
return(1);
for (cp = name; *cp; cp++) {
if (*cp == '!' || *cp == '%' || *cp == '@')
return 0;
return(0);
if (*cp == '/')
return 1;
return(1);
}
return 0;
return(0);
}
/*
@ -508,7 +510,7 @@ unpack(np)
verbose = value("verbose") != NOSTR;
if (verbose)
extra++;
top = (char **) salloc((t + extra) * sizeof *top);
top = (char **) salloc((t + extra) * sizeof(*top));
ap = top;
*ap++ = "send-mail";
*ap++ = "-i";
@ -651,7 +653,7 @@ count(np)
for (c = 0; np != NIL; np = np->n_flink)
if ((np->n_type & GDEL) == 0)
c++;
return c;
return(c);
}
/*
@ -680,7 +682,7 @@ delname(np, name)
p->n_blink->n_flink = p->n_flink;
p->n_flink->n_blink = p->n_blink;
}
return np;
return(np);
}
/*
@ -700,6 +702,6 @@ prettyprint(name)
fprintf(stderr, "%s(%d) ", np->n_name, np->n_type);
np = np->n_flink;
}
fprintf(stderr, "\n");
putc('\n', stderr);
}
*/

View File

@ -1,5 +1,5 @@
/* $OpenBSD: popen.c,v 1.5 1997/05/30 08:51:43 deraadt Exp $ */
/* $NetBSD: popen.c,v 1.4 1996/06/08 19:48:35 christos Exp $ */
/* $OpenBSD: popen.c,v 1.6 1997/07/13 21:21:15 millert Exp $ */
/* $NetBSD: popen.c,v 1.6 1997/05/13 06:48:42 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)popen.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: popen.c,v 1.5 1997/05/30 08:51:43 deraadt Exp $";
static char rcsid[] = "$OpenBSD: popen.c,v 1.6 1997/07/13 21:21:15 millert Exp $";
#endif
#endif /* not lint */
@ -81,7 +81,7 @@ Fopen(file, mode)
register_file(fp, 0, 0);
(void) fcntl(fileno(fp), F_SETFD, 1);
}
return fp;
return(fp);
}
FILE *
@ -95,7 +95,7 @@ Fdopen(fd, mode)
register_file(fp, 0, 0);
(void) fcntl(fileno(fp), F_SETFD, 1);
}
return fp;
return(fp);
}
int
@ -103,7 +103,7 @@ Fclose(fp)
FILE *fp;
{
unregister_file(fp);
return fclose(fp);
return(fclose(fp));
}
FILE *
@ -118,7 +118,7 @@ Popen(cmd, mode)
FILE *fp;
if (pipe(p) < 0)
return NULL;
return(NULL);
(void) fcntl(p[READ], F_SETFD, 1);
(void) fcntl(p[WRITE], F_SETFD, 1);
if (*mode == 'r') {
@ -132,14 +132,14 @@ Popen(cmd, mode)
}
sigemptyset(&nset);
if ((pid = start_command(cmd, &nset, fd0, fd1, NOSTR, NOSTR, NOSTR)) < 0) {
close(p[READ]);
close(p[WRITE]);
return NULL;
(void)close(p[READ]);
(void)close(p[WRITE]);
return(NULL);
}
(void) close(hisside);
(void)close(hisside);
if ((fp = fdopen(myside, mode)) != NULL)
register_file(fp, 1, pid);
return fp;
return(fp);
}
int
@ -151,14 +151,14 @@ Pclose(ptr)
i = file_pid(ptr);
unregister_file(ptr);
(void) fclose(ptr);
(void)fclose(ptr);
sigemptyset(&nset);
sigaddset(&nset, SIGINT);
sigaddset(&nset, SIGHUP);
sigprocmask(SIG_BLOCK, &nset, &oset);
i = wait_child(i);
sigprocmask(SIG_SETMASK, &oset, NULL);
return i;
return(i);
}
void
@ -167,9 +167,9 @@ close_all_files()
while (fp_head)
if (fp_head->pipe)
(void) Pclose(fp_head->fp);
(void)Pclose(fp_head->fp);
else
(void) Fclose(fp_head->fp);
(void)Fclose(fp_head->fp);
}
void
@ -179,7 +179,7 @@ register_file(fp, pipe, pid)
{
struct fp *fpp;
if ((fpp = (struct fp *) malloc(sizeof *fpp)) == NULL)
if ((fpp = (struct fp *) malloc(sizeof(*fpp))) == NULL)
panic("Out of memory");
fpp->fp = fp;
fpp->pipe = pipe;
@ -211,7 +211,7 @@ file_pid(fp)
for (p = fp_head; p; p = p->link)
if (p->fp == fp)
return (p->pid);
return(p->pid);
panic("Invalid file pointer");
/*NOTREACHED*/
}
@ -234,8 +234,8 @@ run_command(cmd, mask, infd, outfd, a0, a1, a2)
int pid;
if ((pid = start_command(cmd, mask, infd, outfd, a0, a1, a2)) < 0)
return -1;
return wait_command(pid);
return(-1);
return(wait_command(pid));
}
/*VARARGS4*/
@ -249,12 +249,12 @@ start_command(cmd, mask, infd, outfd, a0, a1, a2)
int pid;
if ((pid = vfork()) < 0) {
perror("fork");
return -1;
warn("fork");
return(-1);
}
if (pid == 0) {
char *argv[100];
int i = getrawlist(cmd, argv, sizeof argv / sizeof *argv);
int i = getrawlist(cmd, argv, sizeof(argv)/ sizeof(*argv));
if ((argv[i++] = a0) != NOSTR &&
(argv[i++] = a1) != NOSTR &&
@ -262,10 +262,10 @@ start_command(cmd, mask, infd, outfd, a0, a1, a2)
argv[i] = NOSTR;
prepare_child(mask, infd, outfd);
execvp(argv[0], argv);
perror(argv[0]);
warn(argv[0]);
_exit(1);
}
return pid;
return(pid);
}
void
@ -284,13 +284,15 @@ prepare_child(nset, infd, outfd)
dup2(infd, 0);
if (outfd >= 0)
dup2(outfd, 1);
if (nset) {
if (nset == NULL)
return;
if (nset != NULL) {
for (i = 1; i < NSIG; i++)
if (sigismember(nset, i))
(void) signal(i, SIG_IGN);
if (!sigismember(nset, SIGINT))
(void) signal(SIGINT, SIG_DFL);
}
if (nset == NULL || !sigismember(nset, SIGINT))
(void) signal(SIGINT, SIG_DFL);
sigfillset(&fset);
(void) sigprocmask(SIG_UNBLOCK, &fset, NULL);
}
@ -301,10 +303,10 @@ wait_command(pid)
{
if (wait_child(pid) < 0) {
printf("Fatal error in process.\n");
return -1;
puts("Fatal error in process.");
return(-1);
}
return 0;
return(0);
}
static struct child *
@ -317,12 +319,12 @@ findchild(pid)
cpp = &(*cpp)->link)
;
if (*cpp == NULL) {
*cpp = (struct child *) malloc(sizeof (struct child));
*cpp = (struct child *) malloc(sizeof(struct child));
(*cpp)->pid = pid;
(*cpp)->done = (*cpp)->free = 0;
(*cpp)->link = NULL;
}
return *cpp;
return(*cpp);
}
static void
@ -377,7 +379,7 @@ wait_child(pid)
wait_status = cp->status;
delchild(cp);
sigprocmask(SIG_SETMASK, &oset, NULL);
return wait_status.w_status ? -1 : 0;
return(wait_status.w_status ? -1 : 0);
}
/*
@ -415,12 +417,12 @@ handle_spool_locks(action)
if (action == 0) {
/* Clear the lock */
if (lockfp == NULL) {
fprintf(stderr,
"handle_spool_locks: no spool lock to remove.\n");
return (-1);
fputs("handle_spool_locks: no spool lock to remove.\n",
stderr);
return(-1);
}
(void)kill(lock_pid, SIGTERM);
Pclose(lockfp);
(void)Pclose(lockfp);
lockfp = NULL;
} else if (action == 1) {
/* Create the lock */
@ -430,7 +432,7 @@ handle_spool_locks(action)
if ((lockfp = Popen(cmd, "r")) == NULL || getc(lockfp) != '1') {
lockfp = NULL;
free(cmd);
return (0);
return(0);
}
lock_pid = fp_head->pid; /* new entries added at head */
@ -438,10 +440,10 @@ handle_spool_locks(action)
} else {
fprintf(stderr, "handle_spool_locks: unknown action %d\n",
action);
return (-1);
return(-1);
}
return (1);
return(1);
}
int

View File

@ -1,5 +1,5 @@
/* $OpenBSD: quit.c,v 1.3 1997/03/29 03:01:47 millert Exp $ */
/* $NetBSD: quit.c,v 1.5 1996/06/08 19:48:37 christos Exp $ */
/* $OpenBSD: quit.c,v 1.4 1997/07/13 21:21:16 millert Exp $ */
/* $NetBSD: quit.c,v 1.6 1996/12/28 07:11:07 tls Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)quit.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)quit.c 8.2 (Berkeley) 4/28/95";
#else
static char rcsid[] = "$OpenBSD: quit.c,v 1.3 1997/03/29 03:01:47 millert Exp $";
static char rcsid[] = "$OpenBSD: quit.c,v 1.4 1997/07/13 21:21:16 millert Exp $";
#endif
#endif /* not lint */
@ -64,8 +64,8 @@ quitcmd(v)
* Otherwise, return -1 to abort command loop.
*/
if (sourcing)
return 1;
return -1;
return(1);
return(-1);
}
/*
@ -113,17 +113,17 @@ quit()
if (fbuf == NULL)
goto newmail;
if (flock(fileno(fbuf), LOCK_EX) == -1) {
perror("Unable to lock mailbox");
Fclose(fbuf);
warn("Unable to lock mailbox");
(void)Fclose(fbuf);
return;
}
if (!spool_lock()) {
Fclose(fbuf);
(void)Fclose(fbuf);
return; /* mail.local printed error for us */
}
rbuf = NULL;
if (fstat(fileno(fbuf), &minfo) >= 0 && minfo.st_size > mailsize) {
printf("New mail has arrived.\n");
puts("New mail has arrived.");
rbuf = Fopen(tempResid, "w");
if (rbuf == NULL || fbuf == NULL)
goto newmail;
@ -140,7 +140,7 @@ quit()
(void) putc(c, rbuf);
}
#endif
Fclose(rbuf);
(void)Fclose(rbuf);
if ((rbuf = Fopen(tempResid, "r")) == NULL)
goto newmail;
rm(tempResid);
@ -188,18 +188,18 @@ quit()
}
}
if (Tflag != NOSTR)
Fclose(readstat);
(void)Fclose(readstat);
if (p == msgCount && !modify && !anystat) {
printf("Held %d message%s in %s\n",
p, p == 1 ? "" : "s", mailname);
Fclose(fbuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
if (c == 0) {
if (p != 0) {
writeback(rbuf);
Fclose(fbuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
@ -217,16 +217,16 @@ quit()
mcount = c;
if (value("append") == NOSTR) {
if ((obuf = Fopen(tempQuit, "w")) == NULL) {
perror(tempQuit);
Fclose(fbuf);
warn(tempQuit);
(void)Fclose(fbuf);
spool_unlock();
return;
}
if ((ibuf = Fopen(tempQuit, "r")) == NULL) {
perror(tempQuit);
warn(tempQuit);
rm(tempQuit);
Fclose(obuf);
Fclose(fbuf);
(void)Fclose(obuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
@ -234,30 +234,30 @@ quit()
if ((abuf = Fopen(mbox, "r")) != NULL) {
while ((c = getc(abuf)) != EOF)
(void) putc(c, obuf);
Fclose(abuf);
(void)Fclose(abuf);
}
if (ferror(obuf)) {
perror(tempQuit);
Fclose(ibuf);
Fclose(obuf);
Fclose(fbuf);
warn(tempQuit);
(void)Fclose(ibuf);
(void)Fclose(obuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
Fclose(obuf);
close(creat(mbox, 0600));
(void)Fclose(obuf);
(void)close(creat(mbox, 0600));
if ((obuf = Fopen(mbox, "r+")) == NULL) {
perror(mbox);
Fclose(ibuf);
Fclose(fbuf);
warn(mbox);
(void)Fclose(ibuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
}
else {
if ((obuf = Fopen(mbox, "a")) == NULL) {
perror(mbox);
Fclose(fbuf);
warn(mbox);
(void)Fclose(fbuf);
spool_unlock();
return;
}
@ -266,10 +266,10 @@ quit()
for (mp = &message[0]; mp < &message[msgCount]; mp++)
if (mp->m_flag & MBOX)
if (send(mp, obuf, saveignore, NOSTR) < 0) {
perror(mbox);
Fclose(ibuf);
Fclose(obuf);
Fclose(fbuf);
warn(mbox);
(void)Fclose(ibuf);
(void)Fclose(obuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
@ -289,20 +289,20 @@ quit()
break;
c = getc(ibuf);
}
Fclose(ibuf);
(void)Fclose(ibuf);
fflush(obuf);
}
trunc(obuf);
if (ferror(obuf)) {
perror(mbox);
Fclose(obuf);
Fclose(fbuf);
warn(mbox);
(void)Fclose(obuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
Fclose(obuf);
(void)Fclose(obuf);
if (mcount == 1)
printf("Saved 1 message in mbox\n");
puts("Saved 1 message in mbox");
else
printf("Saved %d messages in mbox\n", mcount);
@ -313,7 +313,7 @@ quit()
if (p != 0) {
writeback(rbuf);
Fclose(fbuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
@ -330,23 +330,23 @@ cream:
goto newmail;
while ((c = getc(rbuf)) != EOF)
(void) putc(c, abuf);
Fclose(rbuf);
(void)Fclose(rbuf);
trunc(abuf);
Fclose(abuf);
(void)Fclose(abuf);
alter(mailname);
Fclose(fbuf);
(void)Fclose(fbuf);
spool_unlock();
return;
}
demail();
Fclose(fbuf);
(void)Fclose(fbuf);
spool_unlock();
return;
newmail:
printf("Thou hast new mail.\n");
puts("Thou hast new mail.");
if (fbuf != NULL) {
Fclose(fbuf);
(void)Fclose(fbuf);
spool_unlock();
}
}
@ -367,7 +367,7 @@ writeback(res)
p = 0;
if ((obuf = Fopen(mailname, "r+")) == NULL) {
perror(mailname);
warn(mailname);
return(-1);
}
#ifndef APPEND
@ -379,8 +379,8 @@ writeback(res)
if ((mp->m_flag&MPRESERVE)||(mp->m_flag&MTOUCH)==0) {
p++;
if (send(mp, obuf, (struct ignoretab *)0, NOSTR) < 0) {
perror(mailname);
Fclose(obuf);
warn(mailname);
(void)Fclose(obuf);
return(-1);
}
}
@ -392,13 +392,13 @@ writeback(res)
fflush(obuf);
trunc(obuf);
if (ferror(obuf)) {
perror(mailname);
Fclose(obuf);
warn(mailname);
(void)Fclose(obuf);
return(-1);
}
if (res != NULL)
Fclose(res);
Fclose(obuf);
(void)Fclose(res);
(void)Fclose(obuf);
alter(mailname);
if (p == 1)
printf("Held 1 message in %s\n", mailname);
@ -443,7 +443,7 @@ edstop()
}
}
if (Tflag != NOSTR)
Fclose(readstat);
(void)Fclose(readstat);
if (!gotcha || Tflag != NOSTR)
goto done;
ibuf = NULL;
@ -454,13 +454,13 @@ edstop()
"mboxXXXXXXXXXX");
if ((fd = mkstemp(tempname)) == -1 ||
(obuf = Fdopen(fd, "w")) == NULL) {
perror(tempname);
warn(tempname);
relsesigs();
reset(0);
}
if ((ibuf = Fopen(mailname, "r")) == NULL) {
perror(mailname);
Fclose(obuf);
warn(mailname);
(void)Fclose(obuf);
rm(tempname);
relsesigs();
reset(0);
@ -468,10 +468,10 @@ edstop()
fseek(ibuf, (long)mailsize, 0);
while ((c = getc(ibuf)) != EOF)
(void) putc(c, obuf);
Fclose(ibuf);
Fclose(obuf);
(void)Fclose(ibuf);
(void)Fclose(obuf);
if ((ibuf = Fopen(tempname, "r")) == NULL) {
perror(tempname);
warn(tempname);
rm(tempname);
relsesigs();
reset(0);
@ -481,7 +481,7 @@ edstop()
printf("\"%s\" ", mailname);
fflush(stdout);
if ((obuf = Fopen(mailname, "r+")) == NULL) {
perror(mailname);
warn(mailname);
relsesigs();
reset(0);
}
@ -492,7 +492,7 @@ edstop()
continue;
c++;
if (send(mp, obuf, (struct ignoretab *) NULL, NOSTR) < 0) {
perror(mailname);
warn(mailname);
relsesigs();
reset(0);
}
@ -501,20 +501,20 @@ edstop()
if (ibuf != NULL) {
while ((c = getc(ibuf)) != EOF)
(void) putc(c, obuf);
Fclose(ibuf);
(void)Fclose(ibuf);
}
fflush(obuf);
if (ferror(obuf)) {
perror(mailname);
warn(mailname);
relsesigs();
reset(0);
}
Fclose(obuf);
(void)Fclose(obuf);
if (gotcha) {
rm(mailname);
printf("removed\n");
puts("removed");
} else
printf("complete\n");
puts("complete");
fflush(stdout);
done:

View File

@ -1,4 +1,4 @@
/* $OpenBSD: send.c,v 1.2 1996/06/11 12:53:50 deraadt Exp $ */
/* $OpenBSD: send.c,v 1.3 1997/07/13 21:21:16 millert Exp $ */
/* $NetBSD: send.c,v 1.6 1996/06/08 19:48:39 christos Exp $ */
/*
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)send.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: send.c,v 1.2 1996/06/11 12:53:50 deraadt Exp $";
static char rcsid[] = "$OpenBSD: send.c,v 1.3 1997/07/13 21:21:16 millert Exp $";
#endif
#endif /* not lint */
@ -94,11 +94,11 @@ send(mp, obuf, doign, prefix)
* Process headers first
*/
while (count > 0 && ishead) {
if (fgets(line, LINESIZE, ibuf) == NULL)
if (fgets(line, sizeof(line), ibuf) == NULL)
break;
count -= length = strlen(line);
if (firstline) {
/*
/*
* First line is the From line, so no headers
* there to worry about
*/
@ -183,11 +183,11 @@ send(mp, obuf, doign, prefix)
if (length > 1)
fputs(prefix, obuf);
else
(void) fwrite(prefix, sizeof *prefix,
(void) fwrite(prefix, sizeof(*prefix),
prefixlen, obuf);
(void) fwrite(line, sizeof *line, length, obuf);
(void) fwrite(line, sizeof(*line), length, obuf);
if (ferror(obuf))
return -1;
return(-1);
}
}
/*
@ -197,7 +197,7 @@ send(mp, obuf, doign, prefix)
count--; /* skip final blank line */
if (prefix != NOSTR)
while (count > 0) {
if (fgets(line, LINESIZE, ibuf) == NULL) {
if (fgets(line, sizeof(line), ibuf) == NULL) {
c = 0;
break;
}
@ -209,26 +209,26 @@ send(mp, obuf, doign, prefix)
if (c > 1)
fputs(prefix, obuf);
else
(void) fwrite(prefix, sizeof *prefix,
(void) fwrite(prefix, sizeof(*prefix),
prefixlen, obuf);
(void) fwrite(line, sizeof *line, c, obuf);
(void) fwrite(line, sizeof(*line), c, obuf);
if (ferror(obuf))
return -1;
return(-1);
}
else
while (count > 0) {
c = count < LINESIZE ? count : LINESIZE;
if ((c = fread(line, sizeof *line, c, ibuf)) <= 0)
if ((c = fread(line, sizeof(*line), c, ibuf)) <= 0)
break;
count -= c;
if (fwrite(line, sizeof *line, c, obuf) != c)
return -1;
if (fwrite(line, sizeof(*line), c, obuf) != c)
return(-1);
}
if (doign == ignoreall && c > 0 && line[c - 1] != '\n')
/* no final blank line */
if ((c = getc(ibuf)) != EOF && putc(c, obuf) == EOF)
return -1;
return 0;
return(-1);
return(0);
}
/*
@ -322,14 +322,14 @@ mail1(hp, printheaders)
if (value("askbcc") != NOSTR)
grabh(hp, GBCC);
} else {
printf("EOT\n");
puts("EOT");
(void) fflush(stdout);
}
if (fsize(mtf) == 0)
if (hp->h_subject == NOSTR)
printf("No message, no subject; hope that's ok\n");
puts("No message, no subject; hope that's ok");
else
printf("Null message body; hope that's ok\n");
puts("Null message body; hope that's ok");
/*
* Now, take the user names from the combined
* to and cc lists and do all the alias
@ -338,7 +338,7 @@ mail1(hp, printheaders)
senderr = 0;
to = usermap(cat(hp->h_bcc, cat(hp->h_to, hp->h_cc)));
if (to == NIL) {
printf("No recipients specified\n");
puts("No recipients specified");
senderr++;
}
/*
@ -353,17 +353,17 @@ mail1(hp, printheaders)
goto out;
fixhead(hp, to);
if ((mtf = infix(hp, mtf)) == NULL) {
fprintf(stderr, ". . . message lost, sorry.\n");
fputs(". . . message lost, sorry.\n", stderr);
return;
}
namelist = unpack(cat(hp->h_smopts, to));
if (debug) {
char **t;
printf("Sendmail arguments:");
fputs("Sendmail arguments:", stdout);
for (t = namelist; *t != NOSTR; t++)
printf(" \"%s\"", *t);
printf("\n");
putchar('\n');
goto out;
}
if ((cp = value("record")) != NOSTR)
@ -375,7 +375,7 @@ mail1(hp, printheaders)
*/
pid = fork();
if (pid == -1) {
perror("fork");
warn("fork");
savedeadletter(mtf);
goto out;
}
@ -394,7 +394,7 @@ mail1(hp, printheaders)
else
cp = _PATH_SENDMAIL;
execv(cp, namelist);
perror(cp);
warn(cp);
_exit(1);
}
if (value("verbose") != NOSTR)
@ -402,7 +402,7 @@ mail1(hp, printheaders)
else
free_child(pid);
out:
(void) Fclose(mtf);
(void)Fclose(mtf);
}
/*
@ -445,12 +445,12 @@ infix(hp, fi)
register int c;
if ((nfo = Fopen(tempMail, "w")) == NULL) {
perror(tempMail);
warn(tempMail);
return(fi);
}
if ((nfi = Fopen(tempMail, "r")) == NULL) {
perror(tempMail);
(void) Fclose(nfo);
warn(tempMail);
(void)Fclose(nfo);
return(fi);
}
(void) rm(tempMail);
@ -461,20 +461,20 @@ infix(hp, fi)
c = getc(fi);
}
if (ferror(fi)) {
perror("read");
warn("read");
rewind(fi);
return(fi);
}
(void) fflush(nfo);
if (ferror(nfo)) {
perror(tempMail);
(void) Fclose(nfo);
(void) Fclose(nfi);
warn(tempMail);
(void)Fclose(nfo);
(void)Fclose(nfi);
rewind(fi);
return(fi);
}
(void) Fclose(nfo);
(void) Fclose(fi);
(void)Fclose(nfo);
(void)Fclose(fi);
rewind(nfi);
return(nfi);
}
@ -555,18 +555,18 @@ savemail(name, fi)
time_t now;
if ((fo = Fopen(name, "a")) == NULL) {
perror(name);
return (-1);
warn(name);
return(-1);
}
(void) time(&now);
fprintf(fo, "From %s %s", myname, ctime(&now));
while ((i = fread(buf, 1, sizeof buf, fi)) > 0)
while ((i = fread(buf, 1, sizeof(buf), fi)) > 0)
(void) fwrite(buf, 1, i, fo);
(void) putc('\n', fo);
(void) fflush(fo);
if (ferror(fo))
perror(name);
(void) Fclose(fo);
warn(name);
(void)Fclose(fo);
rewind(fi);
return (0);
return(0);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: strings.c,v 1.2 1996/06/11 12:53:50 deraadt Exp $ */
/* $OpenBSD: strings.c,v 1.3 1997/07/13 21:21:17 millert Exp $ */
/* $NetBSD: strings.c,v 1.5 1996/06/08 19:48:40 christos Exp $ */
/*
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)strings.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: strings.c,v 1.2 1996/06/11 12:53:50 deraadt Exp $";
static char rcsid[] = "$OpenBSD: strings.c,v 1.3 1997/07/13 21:21:17 millert Exp $";
#endif
#endif /* not lint */
@ -71,8 +71,8 @@ salloc(size)
int index;
s = size;
s += (sizeof (char *) - 1);
s &= ~(sizeof (char *) - 1);
s += (sizeof(char *) - 1);
s &= ~(sizeof(char *) - 1);
index = 0;
for (sp = &stringdope[0]; sp < &stringdope[NSPACE]; sp++) {
if (sp->s_topFree == NOSTR && (STRINGSIZE << index) >= s)

View File

@ -1,4 +1,4 @@
/* $OpenBSD: temp.c,v 1.5 1997/03/29 03:01:47 millert Exp $ */
/* $OpenBSD: temp.c,v 1.6 1997/07/13 21:21:17 millert Exp $ */
/* $NetBSD: temp.c,v 1.5 1996/06/08 19:48:42 christos Exp $ */
/*
@ -38,12 +38,11 @@
#if 0
static char sccsid[] = "@(#)temp.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: temp.c,v 1.5 1997/03/29 03:01:47 millert Exp $";
static char rcsid[] = "$OpenBSD: temp.c,v 1.6 1997/07/13 21:21:17 millert Exp $";
#endif
#endif /* not lint */
#include "rcv.h"
#include <errno.h>
#include "extern.h"
/*
@ -87,11 +86,8 @@ tinit()
* do a spreserve() after us.
*/
if (myname != NOSTR) {
if (getuserid(myname) < 0) {
printf("\"%s\" is not a user of this system\n",
myname);
exit(1);
}
if (getuserid(myname) < 0)
errx(1, "\"%s\" is not a user of this system", myname);
} else {
if ((cp = username()) == NOSTR) {
myname = "nobody";

View File

@ -1,5 +1,5 @@
/* $OpenBSD: tty.c,v 1.2 1996/06/11 12:53:52 deraadt Exp $ */
/* $NetBSD: tty.c,v 1.5 1996/06/08 19:48:43 christos Exp $ */
/* $OpenBSD: tty.c,v 1.3 1997/07/13 21:21:17 millert Exp $ */
/* $NetBSD: tty.c,v 1.7 1997/07/09 05:25:46 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -36,9 +36,9 @@
#ifndef lint
#if 0
static char sccsid[] = "@(#)tty.c 8.1 (Berkeley) 6/6/93";
static char sccsid[] = "@(#)tty.c 8.2 (Berkeley) 4/20/95";
#else
static char rcsid[] = "$OpenBSD: tty.c,v 1.2 1996/06/11 12:53:52 deraadt Exp $";
static char rcsid[] = "$OpenBSD: tty.c,v 1.3 1997/07/13 21:21:17 millert Exp $";
#endif
#endif /* not lint */
@ -73,6 +73,8 @@ grabh(hp, gflags)
sig_t saveint;
#ifndef TIOCSTI
sig_t savequit;
#else
int extproc, flag;
#endif
sig_t savetstp;
sig_t savettou;
@ -80,6 +82,9 @@ grabh(hp, gflags)
int errs;
#ifdef __GNUC__
/* Avoid longjmp clobbering */
#ifdef TIOCSTI
(void) &extproc;
#endif
(void) &saveint;
#endif
@ -91,7 +96,7 @@ grabh(hp, gflags)
ttyset = 0;
#endif
if (tcgetattr(fileno(stdin), &ttybuf) < 0) {
perror("tcgetattr");
warn("tcgetattr");
return(-1);
}
c_erase = ttybuf.c_cc[VERASE];
@ -104,6 +109,14 @@ grabh(hp, gflags)
if ((savequit = signal(SIGQUIT, SIG_IGN)) == SIG_DFL)
signal(SIGQUIT, SIG_DFL);
#else
# ifdef TIOCEXT
extproc = ((ttybuf.c_lflag & EXTPROC) ? 1 : 0);
if (extproc) {
flag = 0;
if (ioctl(fileno(stdin), TIOCEXT, &flag) < 0)
warn("TIOCEXT: off");
}
# endif /* TIOCEXT */
if (setjmp(intjmp))
goto out;
saveint = signal(SIGINT, ttyint);
@ -149,6 +162,14 @@ out:
if (ttyset)
tcsetattr(fileno(stdin), TCSADRAIN, &ttybuf);
signal(SIGQUIT, savequit);
#else
# ifdef TIOCEXT
if (extproc) {
flag = 1;
if (ioctl(fileno(stdin), TIOCEXT, &flag) < 0)
warn("TIOCEXT: on");
}
# endif /* TIOCEXT */
#endif
signal(SIGINT, saveint);
return(errs);
@ -177,7 +198,7 @@ readtty(pr, src)
fputs(pr, stdout);
fflush(stdout);
if (src != NOSTR && strlen(src) > BUFSIZ - 2) {
printf("too long to edit\n");
puts("too long to edit");
return(src);
}
#ifndef TIOCSTI

View File

@ -1,5 +1,5 @@
/* $OpenBSD: v7.local.c,v 1.6 1997/06/16 20:57:06 millert Exp $ */
/* $NetBSD: v7.local.c,v 1.7 1996/06/08 19:48:44 christos Exp $ */
/* $OpenBSD: v7.local.c,v 1.7 1997/07/13 21:21:18 millert Exp $ */
/* $NetBSD: v7.local.c,v 1.8 1997/05/13 06:15:58 mikel Exp $ */
/*
* Copyright (c) 1980, 1993
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)v7.local.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: v7.local.c,v 1.6 1997/06/16 20:57:06 millert Exp $";
static char rcsid[] = "$OpenBSD: v7.local.c,v 1.7 1997/07/13 21:21:18 millert Exp $";
#endif
#endif /* not lint */
@ -82,7 +82,7 @@ demail()
{
if (value("keep") != NOSTR || rm(mailname) < 0)
close(creat(mailname, 0600));
(void)close(creat(mailname, 0600));
}
/*
@ -95,11 +95,11 @@ username()
uid_t uid;
if ((np = getenv("USER")) != NOSTR)
return np;
return(np);
if ((np = getenv("LOGNAME")) != NOSTR)
return np;
return(np);
if ((np = getname(uid = getuid())) != NOSTR)
return np;
return(np);
printf("Cannot associate a name with uid %u\n", (unsigned)uid);
return NOSTR;
return(NOSTR);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vars.c,v 1.2 1996/06/11 12:53:53 deraadt Exp $ */
/* $OpenBSD: vars.c,v 1.3 1997/07/13 21:21:18 millert Exp $ */
/* $NetBSD: vars.c,v 1.4 1996/06/08 19:48:45 christos Exp $ */
/*
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)vars.c 8.1 (Berkeley) 6/6/93";
#else
static char rcsid[] = "$OpenBSD: vars.c,v 1.2 1996/06/11 12:53:53 deraadt Exp $";
static char rcsid[] = "$OpenBSD: vars.c,v 1.3 1997/07/13 21:21:18 millert Exp $";
#endif
#endif /* not lint */
@ -64,7 +64,7 @@ assign(name, value)
h = hash(name);
vp = lookup(name);
if (vp == NOVAR) {
vp = (struct var *) calloc(sizeof *vp, 1);
vp = (struct var *) calloc(sizeof(*vp), 1);
vp->v_name = vcopy(name);
vp->v_link = variables[h];
variables[h] = vp;
@ -100,12 +100,12 @@ vcopy(str)
unsigned len;
if (*str == '\0')
return "";
return("");
len = strlen(str) + 1;
if ((new = malloc(len)) == NULL)
panic("Out of memory");
bcopy(str, new, (int) len);
return new;
return(new);
}
/*
@ -193,5 +193,5 @@ hash(name)
}
if (h < 0 && (h = -h) < 0)
h = 0;
return (h % HSHSIZE);
return(h % HSHSIZE);
}