mirror of
https://github.com/openbsd/src.git
synced 2024-12-22 16:42:56 -08:00
from christos;
- Fix PR/105: Implement dot locking protocol and check return value of flock. - Fix PR/2247: Don't call unknown users "ubluit". Issue an error message. - Fix/add prototypes. - Fix warnings. - Use POSIX signal mask calls.
This commit is contained in:
parent
34e3ab7268
commit
7eb34045c5
@ -1,10 +1,10 @@
|
||||
# $OpenBSD: Makefile,v 1.2 1996/03/27 19:32:29 niklas Exp $
|
||||
# from: @(#)Makefile 8.2 (Berkeley) 1/25/94
|
||||
# $OpenBSD: Makefile,v 1.3 1996/06/11 12:53:31 deraadt Exp $
|
||||
# $NetBSD: Makefile,v 1.8 1996/06/08 19:48:09 christos Exp $
|
||||
|
||||
PROG= mail
|
||||
SRCS= version.c aux.c cmd1.c cmd2.c cmd3.c cmdtab.c collect.c edit.c fio.c \
|
||||
getname.c head.c v7.local.c lex.c list.c main.c names.c popen.c \
|
||||
quit.c send.c strings.c temp.c tty.c vars.c
|
||||
SRCS= version.c aux.c cmd1.c cmd2.c cmd3.c cmdtab.c collect.c dotlock.c \
|
||||
edit.c fio.c getname.c head.c v7.local.c lex.c list.c main.c names.c \
|
||||
popen.c quit.c send.c strings.c temp.c tty.c vars.c
|
||||
SFILES= mail.help mail.tildehelp
|
||||
EFILES= mail.rc
|
||||
LINKS= ${BINDIR}/mail ${BINDIR}/Mail ${BINDIR}/mail ${BINDIR}/mailx
|
||||
|
@ -1,5 +1,4 @@
|
||||
# from: @(#)Makefile 8.1 (Berkeley) 6/8/93
|
||||
# $Id: Makefile,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $
|
||||
# $OpenBSD: Makefile,v 1.2 1996/06/11 12:54:17 deraadt Exp $
|
||||
|
||||
DIR= usd/07.mail
|
||||
SRCS= mail0.nr mail1.nr mail2.nr mail3.nr mail4.nr mail5.nr mail6.nr \
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail0.nr,v 1.2 1996/06/11 12:54:18 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail1.nr,v 1.2 1996/06/11 12:54:18 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail2.nr,v 1.2 1996/06/11 12:54:19 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail3.nr,v 1.2 1996/06/11 12:54:20 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail4.nr,v 1.2 1996/06/11 12:54:20 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail5.nr,v 1.2 1996/06/11 12:54:21 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail6.nr,v 1.2 1996/06/11 12:54:22 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail7.nr,v 1.2 1996/06/11 12:54:23 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail8.nr,v 1.2 1996/06/11 12:54:24 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: mail9.nr,v 1.2 1996/06/11 12:54:24 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,5 @@
|
||||
.\" $OpenBSD: maila.nr,v 1.2 1996/06/11 12:54:25 deraadt Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1980, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: aux.c,v 1.2 1996/06/11 12:53:32 deraadt Exp $ */
|
||||
/* $NetBSD: aux.c,v 1.4 1996/06/08 19:48:10 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)aux.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: aux.c,v 1.1.1.1 1995/10/18 08:45:37 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)aux.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: aux.c,v 1.2 1996/06/11 12:53:32 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -44,6 +50,7 @@ static char rcsid[] = "$Id: aux.c,v 1.1.1.1 1995/10/18 08:45:37 deraadt Exp $";
|
||||
*
|
||||
* Auxiliary functions.
|
||||
*/
|
||||
static char *save2str __P((char *, char *));
|
||||
|
||||
/*
|
||||
* Return a pointer to a dynamic copy of the argument.
|
||||
@ -63,7 +70,7 @@ savestr(str)
|
||||
/*
|
||||
* Make a copy of new argument incorporating old one.
|
||||
*/
|
||||
char *
|
||||
static char *
|
||||
save2str(str, old)
|
||||
char *str, *old;
|
||||
{
|
||||
@ -180,7 +187,7 @@ hfield(field, mp)
|
||||
while (lc > 0) {
|
||||
if ((lc = gethfield(ibuf, linebuf, lc, &colon)) < 0)
|
||||
return oldhfield;
|
||||
if (hfield = ishfield(linebuf, colon, field))
|
||||
if ((hfield = ishfield(linebuf, colon, field)) != NULL)
|
||||
oldhfield = save2str(hfield, oldhfield);
|
||||
}
|
||||
return oldhfield;
|
||||
@ -304,9 +311,10 @@ struct sstack {
|
||||
* that they are no longer reading from a tty (in all probability).
|
||||
*/
|
||||
int
|
||||
source(arglist)
|
||||
char **arglist;
|
||||
source(v)
|
||||
void *v;
|
||||
{
|
||||
char **arglist = v;
|
||||
FILE *fi;
|
||||
char *cp;
|
||||
|
||||
@ -366,7 +374,6 @@ alter(name)
|
||||
{
|
||||
struct stat sb;
|
||||
struct timeval tv[2];
|
||||
time_t time();
|
||||
|
||||
if (stat(name, &sb))
|
||||
return;
|
||||
@ -465,7 +472,7 @@ skin(name)
|
||||
gotlt = 0;
|
||||
lastsp = 0;
|
||||
bufend = nbuf;
|
||||
for (cp = name, cp2 = bufend; c = *cp++; ) {
|
||||
for (cp = name, cp2 = bufend; (c = *cp++) != '\0'; ) {
|
||||
switch (c) {
|
||||
case '(':
|
||||
cp = skip_comment(cp);
|
||||
@ -477,13 +484,13 @@ skin(name)
|
||||
* Start of a "quoted-string".
|
||||
* Copy it in its entirety.
|
||||
*/
|
||||
while (c = *cp) {
|
||||
while ((c = *cp) != '\0') {
|
||||
cp++;
|
||||
if (c == '"')
|
||||
break;
|
||||
if (c != '\\')
|
||||
*cp2++ = c;
|
||||
else if (c = *cp) {
|
||||
else if ((c = *cp) != '\0') {
|
||||
*cp2++ = c;
|
||||
cp++;
|
||||
}
|
||||
@ -515,7 +522,7 @@ skin(name)
|
||||
if (c == '(')
|
||||
cp = skip_comment(cp);
|
||||
else if (c == '"')
|
||||
while (c = *cp) {
|
||||
while ((c = *cp) != '\0') {
|
||||
cp++;
|
||||
if (c == '"')
|
||||
break;
|
||||
@ -663,7 +670,7 @@ copy(s1, s2)
|
||||
register char *s1, *s2;
|
||||
{
|
||||
|
||||
while (*s2++ = *s1++)
|
||||
while ((*s2++ = *s1++) != '\0')
|
||||
;
|
||||
return s2 - 1;
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* $OpenBSD: cmd1.c,v 1.2 1996/03/27 19:32:30 niklas Exp $ */
|
||||
/* $OpenBSD: cmd1.c,v 1.3 1996/06/11 12:53:32 deraadt Exp $ */
|
||||
/* $NetBSD: cmd1.c,v 1.5 1996/06/08 19:48:11 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1993
|
||||
@ -34,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)cmd1.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$OpenBSD: cmd1.c,v 1.2 1996/03/27 19:32:30 niklas Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)cmd1.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: cmd1.c,v 1.3 1996/06/11 12:53:32 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -55,9 +59,10 @@ static char rcsid[] = "$OpenBSD: cmd1.c,v 1.2 1996/03/27 19:32:30 niklas Exp $";
|
||||
static int screen;
|
||||
|
||||
int
|
||||
headers(msgvec)
|
||||
int *msgvec;
|
||||
headers(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register int n, mesg, flag;
|
||||
register struct message *mp;
|
||||
int size;
|
||||
@ -96,9 +101,10 @@ headers(msgvec)
|
||||
* Scroll to the next/previous screen
|
||||
*/
|
||||
int
|
||||
scroll(arg)
|
||||
char arg[];
|
||||
scroll(v)
|
||||
void *v;
|
||||
{
|
||||
char *arg = v;
|
||||
register int s, size;
|
||||
int cur[1];
|
||||
|
||||
@ -150,9 +156,10 @@ screensize()
|
||||
* in the passed message list.
|
||||
*/
|
||||
int
|
||||
from(msgvec)
|
||||
int *msgvec;
|
||||
from(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register int *ip;
|
||||
|
||||
for (ip = msgvec; *ip != NULL; ip++)
|
||||
@ -214,7 +221,8 @@ printhead(mesg)
|
||||
* Print out the value of dot.
|
||||
*/
|
||||
int
|
||||
pdot()
|
||||
pdot(v)
|
||||
void *v;
|
||||
{
|
||||
printf("%d\n", dot - &message[0] + 1);
|
||||
return(0);
|
||||
@ -224,7 +232,8 @@ pdot()
|
||||
* Print out all the possible commands.
|
||||
*/
|
||||
int
|
||||
pcmdlist()
|
||||
pcmdlist(v)
|
||||
void *v;
|
||||
{
|
||||
extern const struct cmd cmdtab[];
|
||||
register const struct cmd *cp;
|
||||
@ -249,9 +258,10 @@ pcmdlist()
|
||||
* Paginate messages, honor ignored fields.
|
||||
*/
|
||||
int
|
||||
more(msgvec)
|
||||
int *msgvec;
|
||||
more(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
return (type1(msgvec, 1, 1));
|
||||
}
|
||||
|
||||
@ -259,9 +269,10 @@ more(msgvec)
|
||||
* Paginate messages, even printing ignored fields.
|
||||
*/
|
||||
int
|
||||
More(msgvec)
|
||||
int *msgvec;
|
||||
More(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
|
||||
return (type1(msgvec, 0, 1));
|
||||
}
|
||||
@ -270,9 +281,10 @@ More(msgvec)
|
||||
* Type out messages, honor ignored fields.
|
||||
*/
|
||||
int
|
||||
type(msgvec)
|
||||
int *msgvec;
|
||||
type(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
|
||||
return(type1(msgvec, 1, 0));
|
||||
}
|
||||
@ -281,9 +293,10 @@ type(msgvec)
|
||||
* Type out messages, even printing ignored fields.
|
||||
*/
|
||||
int
|
||||
Type(msgvec)
|
||||
int *msgvec;
|
||||
Type(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
|
||||
return(type1(msgvec, 0, 0));
|
||||
}
|
||||
@ -298,10 +311,15 @@ type1(msgvec, doign, page)
|
||||
int doign, page;
|
||||
{
|
||||
register *ip;
|
||||
register struct message *mp;
|
||||
register char *cp;
|
||||
struct message *mp;
|
||||
char *cp;
|
||||
int nlines;
|
||||
FILE *obuf;
|
||||
#if __GNUC__
|
||||
/* Avoid longjmp clobbering */
|
||||
(void) &cp;
|
||||
(void) &obuf;
|
||||
#endif
|
||||
|
||||
obuf = stdout;
|
||||
if (setjmp(pipestop))
|
||||
@ -362,9 +380,10 @@ brokpipe(signo)
|
||||
* and defaults to 5.
|
||||
*/
|
||||
int
|
||||
top(msgvec)
|
||||
int *msgvec;
|
||||
top(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register int *ip;
|
||||
register struct message *mp;
|
||||
int c, topl, lines, lineb;
|
||||
@ -404,9 +423,10 @@ top(msgvec)
|
||||
* get mboxed.
|
||||
*/
|
||||
int
|
||||
stouch(msgvec)
|
||||
int msgvec[];
|
||||
stouch(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register int *ip;
|
||||
|
||||
for (ip = msgvec; *ip != 0; ip++) {
|
||||
@ -421,9 +441,10 @@ stouch(msgvec)
|
||||
* Make sure all passed messages get mboxed.
|
||||
*/
|
||||
int
|
||||
mboxit(msgvec)
|
||||
int msgvec[];
|
||||
mboxit(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register int *ip;
|
||||
|
||||
for (ip = msgvec; *ip != 0; ip++) {
|
||||
@ -438,7 +459,8 @@ mboxit(msgvec)
|
||||
* List the folders the user currently has.
|
||||
*/
|
||||
int
|
||||
folders()
|
||||
folders(v)
|
||||
void *v;
|
||||
{
|
||||
char dirname[BUFSIZ];
|
||||
char *cmd;
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $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 $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)cmd2.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: cmd2.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
#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 $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -45,6 +51,7 @@ static char rcsid[] = "$Id: cmd2.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
*
|
||||
* More user commands.
|
||||
*/
|
||||
static int igcomp __P((const void *, const void *));
|
||||
|
||||
/*
|
||||
* If any arguments were given, go to the next applicable argument
|
||||
@ -52,9 +59,10 @@ static char rcsid[] = "$Id: cmd2.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
* If given as first command with no arguments, print first message.
|
||||
*/
|
||||
int
|
||||
next(msgvec)
|
||||
int *msgvec;
|
||||
next(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register struct message *mp;
|
||||
register int *ip, *ip2;
|
||||
int list[2], mdot;
|
||||
@ -131,9 +139,10 @@ hitit:
|
||||
* so we can discard when the user quits.
|
||||
*/
|
||||
int
|
||||
save(str)
|
||||
char str[];
|
||||
save(v)
|
||||
void *v;
|
||||
{
|
||||
char *str = v;
|
||||
|
||||
return save1(str, 1, "save", saveignore);
|
||||
}
|
||||
@ -142,9 +151,10 @@ save(str)
|
||||
* Copy a message to a file without affected its saved-ness
|
||||
*/
|
||||
int
|
||||
copycmd(str)
|
||||
char str[];
|
||||
copycmd(v)
|
||||
void *v;
|
||||
{
|
||||
char *str = v;
|
||||
|
||||
return save1(str, 0, "copy", saveignore);
|
||||
}
|
||||
@ -215,9 +225,10 @@ save1(str, mark, cmd, ignore)
|
||||
* file name, minus header and trailing blank line.
|
||||
*/
|
||||
int
|
||||
swrite(str)
|
||||
char str[];
|
||||
swrite(v)
|
||||
void *v;
|
||||
{
|
||||
char *str = v;
|
||||
|
||||
return save1(str, 1, "write", ignoreall);
|
||||
}
|
||||
@ -270,9 +281,10 @@ snarf(linebuf, flag)
|
||||
* Delete messages.
|
||||
*/
|
||||
int
|
||||
delete(msgvec)
|
||||
int msgvec[];
|
||||
delete(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
delm(msgvec);
|
||||
return 0;
|
||||
}
|
||||
@ -281,9 +293,10 @@ delete(msgvec)
|
||||
* Delete messages, then type the new dot.
|
||||
*/
|
||||
int
|
||||
deltype(msgvec)
|
||||
int msgvec[];
|
||||
deltype(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
int list[2];
|
||||
int lastdot;
|
||||
|
||||
@ -346,9 +359,10 @@ delm(msgvec)
|
||||
* Undelete the indicated messages.
|
||||
*/
|
||||
int
|
||||
undeletecmd(msgvec)
|
||||
int *msgvec;
|
||||
undeletecmd(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register struct message *mp;
|
||||
register *ip;
|
||||
|
||||
@ -365,7 +379,8 @@ undeletecmd(msgvec)
|
||||
* Interactively dump core on "core"
|
||||
*/
|
||||
int
|
||||
core()
|
||||
core(v)
|
||||
void *v;
|
||||
{
|
||||
int pid;
|
||||
extern union wait wait_status;
|
||||
@ -392,9 +407,10 @@ core()
|
||||
* Clobber as many bytes of stack as the user requests.
|
||||
*/
|
||||
int
|
||||
clobber(argv)
|
||||
char **argv;
|
||||
clobber(v)
|
||||
void *v;
|
||||
{
|
||||
char **argv = v;
|
||||
register int times;
|
||||
|
||||
if (argv[0] == 0)
|
||||
@ -427,9 +443,10 @@ clob1(n)
|
||||
* If no arguments, print the current list of retained fields.
|
||||
*/
|
||||
int
|
||||
retfield(list)
|
||||
char *list[];
|
||||
retfield(v)
|
||||
void *v;
|
||||
{
|
||||
char **list = v;
|
||||
|
||||
return ignore1(list, ignore + 1, "retained");
|
||||
}
|
||||
@ -439,25 +456,28 @@ retfield(list)
|
||||
* If no arguments, print the current list of ignored fields.
|
||||
*/
|
||||
int
|
||||
igfield(list)
|
||||
char *list[];
|
||||
igfield(v)
|
||||
void *v;
|
||||
{
|
||||
char **list = v;
|
||||
|
||||
return ignore1(list, ignore, "ignored");
|
||||
}
|
||||
|
||||
int
|
||||
saveretfield(list)
|
||||
char *list[];
|
||||
saveretfield(v)
|
||||
void *v;
|
||||
{
|
||||
char **list = v;
|
||||
|
||||
return ignore1(list, saveignore + 1, "retained");
|
||||
}
|
||||
|
||||
int
|
||||
saveigfield(list)
|
||||
char *list[];
|
||||
saveigfield(v)
|
||||
void *v;
|
||||
{
|
||||
char **list = v;
|
||||
|
||||
return ignore1(list, saveignore, "ignored");
|
||||
}
|
||||
@ -502,7 +522,6 @@ igshow(tab, which)
|
||||
register int h;
|
||||
struct ignore *igp;
|
||||
char **ap, **ring;
|
||||
int igcomp();
|
||||
|
||||
if (tab->i_count == 0) {
|
||||
printf("No fields currently being %s.\n", which);
|
||||
@ -523,7 +542,7 @@ igshow(tab, which)
|
||||
/*
|
||||
* Compare two names for sorting ignored field list.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
igcomp(l, r)
|
||||
const void *l, *r;
|
||||
{
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: cmd3.c,v 1.2 1996/06/11 12:53:34 deraadt Exp $ */
|
||||
/* $NetBSD: cmd3.c,v 1.5 1996/06/08 19:48:14 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)cmd3.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: cmd3.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: cmd3.c,v 1.2 1996/06/11 12:53:34 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -44,15 +50,17 @@ static char rcsid[] = "$Id: cmd3.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
*
|
||||
* Still more user commands.
|
||||
*/
|
||||
static int diction __P((const void *, const void *));
|
||||
|
||||
/*
|
||||
* Process a shell escape by saving signals, ignoring signals,
|
||||
* and forking a sh -c
|
||||
*/
|
||||
int
|
||||
shell(str)
|
||||
char *str;
|
||||
shell(v)
|
||||
void *v;
|
||||
{
|
||||
char *str = v;
|
||||
sig_t sigint = signal(SIGINT, SIG_IGN);
|
||||
char *shell;
|
||||
char cmd[BUFSIZ];
|
||||
@ -73,8 +81,8 @@ shell(str)
|
||||
*/
|
||||
/*ARGSUSED*/
|
||||
int
|
||||
dosh(str)
|
||||
char *str;
|
||||
dosh(v)
|
||||
void *v;
|
||||
{
|
||||
sig_t sigint = signal(SIGINT, SIG_IGN);
|
||||
char *shell;
|
||||
@ -147,7 +155,8 @@ overf:
|
||||
*/
|
||||
|
||||
int
|
||||
help()
|
||||
help(v)
|
||||
void *v;
|
||||
{
|
||||
register c;
|
||||
register FILE *f;
|
||||
@ -166,9 +175,10 @@ help()
|
||||
* Change user's working directory.
|
||||
*/
|
||||
int
|
||||
schdir(arglist)
|
||||
char **arglist;
|
||||
schdir(v)
|
||||
void *v;
|
||||
{
|
||||
char **arglist = v;
|
||||
char *cp;
|
||||
|
||||
if (*arglist == NOSTR)
|
||||
@ -184,9 +194,10 @@ schdir(arglist)
|
||||
}
|
||||
|
||||
int
|
||||
respond(msgvec)
|
||||
int *msgvec;
|
||||
respond(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
if (value("Replyall") == NOSTR)
|
||||
return (_respond(msgvec));
|
||||
else
|
||||
@ -284,9 +295,10 @@ reedit(subj)
|
||||
* back to the system mailbox.
|
||||
*/
|
||||
int
|
||||
preserve(msgvec)
|
||||
int *msgvec;
|
||||
preserve(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register struct message *mp;
|
||||
register int *ip, mesg;
|
||||
|
||||
@ -308,9 +320,10 @@ preserve(msgvec)
|
||||
* Mark all given messages as unread.
|
||||
*/
|
||||
int
|
||||
unread(msgvec)
|
||||
int msgvec[];
|
||||
unread(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register int *ip;
|
||||
|
||||
for (ip = msgvec; *ip != NULL; ip++) {
|
||||
@ -325,9 +338,10 @@ unread(msgvec)
|
||||
* Print the size of each message.
|
||||
*/
|
||||
int
|
||||
messize(msgvec)
|
||||
int *msgvec;
|
||||
messize(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
register struct message *mp;
|
||||
register int *ip, mesg;
|
||||
|
||||
@ -344,12 +358,12 @@ messize(msgvec)
|
||||
* by returning an error.
|
||||
*/
|
||||
int
|
||||
rexit(e)
|
||||
int e;
|
||||
rexit(v)
|
||||
void *v;
|
||||
{
|
||||
if (sourcing)
|
||||
return(1);
|
||||
exit(e);
|
||||
exit(0);
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
@ -358,9 +372,10 @@ rexit(e)
|
||||
* of csh.
|
||||
*/
|
||||
int
|
||||
set(arglist)
|
||||
char **arglist;
|
||||
set(v)
|
||||
void *v;
|
||||
{
|
||||
char **arglist = v;
|
||||
register struct var *vp;
|
||||
register char *cp, *cp2;
|
||||
char varbuf[BUFSIZ], **ap, **p;
|
||||
@ -405,9 +420,10 @@ set(arglist)
|
||||
* Unset a bunch of variable values.
|
||||
*/
|
||||
int
|
||||
unset(arglist)
|
||||
char **arglist;
|
||||
unset(v)
|
||||
void *v;
|
||||
{
|
||||
char **arglist = v;
|
||||
register struct var *vp, *vp2;
|
||||
int errs, h;
|
||||
char **ap;
|
||||
@ -443,9 +459,10 @@ unset(arglist)
|
||||
* Put add users to a group.
|
||||
*/
|
||||
int
|
||||
group(argv)
|
||||
char **argv;
|
||||
group(v)
|
||||
void *v;
|
||||
{
|
||||
char **argv = v;
|
||||
register struct grouphead *gh;
|
||||
register struct group *gp;
|
||||
register int h;
|
||||
@ -504,7 +521,6 @@ sort(list)
|
||||
char **list;
|
||||
{
|
||||
register char **ap;
|
||||
int diction();
|
||||
|
||||
for (ap = list; *ap != NOSTR; ap++)
|
||||
;
|
||||
@ -517,7 +533,7 @@ sort(list)
|
||||
* Do a dictionary order comparison of the arguments from
|
||||
* qsort.
|
||||
*/
|
||||
int
|
||||
static int
|
||||
diction(a, b)
|
||||
const void *a, *b;
|
||||
{
|
||||
@ -530,8 +546,8 @@ diction(a, b)
|
||||
|
||||
/*ARGSUSED*/
|
||||
int
|
||||
null(e)
|
||||
int e;
|
||||
null(v)
|
||||
void *v;
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -541,9 +557,10 @@ null(e)
|
||||
* the current file.
|
||||
*/
|
||||
int
|
||||
file(argv)
|
||||
register char **argv;
|
||||
file(v)
|
||||
void *v;
|
||||
{
|
||||
char **argv = v;
|
||||
|
||||
if (argv[0] == NOSTR) {
|
||||
newfileinfo();
|
||||
@ -559,9 +576,10 @@ file(argv)
|
||||
* Expand file names like echo
|
||||
*/
|
||||
int
|
||||
echo(argv)
|
||||
char **argv;
|
||||
echo(v)
|
||||
void *v;
|
||||
{
|
||||
char **argv = v;
|
||||
register char **ap;
|
||||
register char *cp;
|
||||
|
||||
@ -578,9 +596,10 @@ echo(argv)
|
||||
}
|
||||
|
||||
int
|
||||
Respond(msgvec)
|
||||
int *msgvec;
|
||||
Respond(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
if (value("Replyall") == NOSTR)
|
||||
return (_Respond(msgvec));
|
||||
else
|
||||
@ -628,9 +647,10 @@ _Respond(msgvec)
|
||||
* .mailrc and do some things if sending, others if receiving.
|
||||
*/
|
||||
int
|
||||
ifcmd(argv)
|
||||
char **argv;
|
||||
ifcmd(v)
|
||||
void *v;
|
||||
{
|
||||
char **argv = v;
|
||||
register char *cp;
|
||||
|
||||
if (cond != CANY) {
|
||||
@ -660,7 +680,8 @@ ifcmd(argv)
|
||||
* flip over the conditional flag.
|
||||
*/
|
||||
int
|
||||
elsecmd()
|
||||
elsecmd(v)
|
||||
void *v;
|
||||
{
|
||||
|
||||
switch (cond) {
|
||||
@ -688,7 +709,8 @@ elsecmd()
|
||||
* End of if statement. Just set cond back to anything.
|
||||
*/
|
||||
int
|
||||
endifcmd()
|
||||
endifcmd(v)
|
||||
void *v;
|
||||
{
|
||||
|
||||
if (cond == CANY) {
|
||||
@ -703,9 +725,10 @@ endifcmd()
|
||||
* Set the list of alternate names.
|
||||
*/
|
||||
int
|
||||
alternates(namelist)
|
||||
char **namelist;
|
||||
alternates(v)
|
||||
void *v;
|
||||
{
|
||||
char **namelist = v;
|
||||
register int c;
|
||||
register char **ap, **ap2, *cp;
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* $OpenBSD: cmdtab.c,v 1.2 1996/03/27 19:32:31 niklas Exp $ */
|
||||
/* $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 $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
@ -34,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)cmdtab.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$OpenBSD: cmdtab.c,v 1.2 1996/03/27 19:32:31 niklas Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)cmdtab.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: cmdtab.c,v 1.3 1996/06/11 12:53:35 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "def.h"
|
||||
@ -48,73 +52,73 @@ static char rcsid[] = "$OpenBSD: cmdtab.c,v 1.2 1996/03/27 19:32:31 niklas Exp $
|
||||
*/
|
||||
|
||||
const struct cmd cmdtab[] = {
|
||||
"next", next, NDMLIST, 0, MMNDEL,
|
||||
"alias", group, M|RAWLIST, 0, 1000,
|
||||
"print", type, MSGLIST, 0, MMNDEL,
|
||||
"type", type, MSGLIST, 0, MMNDEL,
|
||||
"Type", Type, MSGLIST, 0, MMNDEL,
|
||||
"Print", Type, MSGLIST, 0, MMNDEL,
|
||||
"visual", visual, I|MSGLIST, 0, MMNORM,
|
||||
"top", top, MSGLIST, 0, MMNDEL,
|
||||
"touch", stouch, W|MSGLIST, 0, MMNDEL,
|
||||
"preserve", preserve, W|MSGLIST, 0, MMNDEL,
|
||||
"delete", delete, W|P|MSGLIST, 0, MMNDEL,
|
||||
"dp", deltype, W|MSGLIST, 0, MMNDEL,
|
||||
"dt", deltype, W|MSGLIST, 0, MMNDEL,
|
||||
"undelete", undeletecmd, P|MSGLIST, MDELETED,MMNDEL,
|
||||
"unset", unset, M|RAWLIST, 1, 1000,
|
||||
"mail", sendmail, R|M|I|STRLIST, 0, 0,
|
||||
"mbox", mboxit, W|MSGLIST, 0, 0,
|
||||
"more", more, MSGLIST, 0, MMNDEL,
|
||||
"page", more, MSGLIST, 0, MMNDEL,
|
||||
"More", More, MSGLIST, 0, MMNDEL,
|
||||
"Page", More, MSGLIST, 0, MMNDEL,
|
||||
"unread", unread, MSGLIST, 0, MMNDEL,
|
||||
"!", shell, I|STRLIST, 0, 0,
|
||||
"copy", copycmd, M|STRLIST, 0, 0,
|
||||
"chdir", schdir, M|RAWLIST, 0, 1,
|
||||
"cd", schdir, M|RAWLIST, 0, 1,
|
||||
"save", save, STRLIST, 0, 0,
|
||||
"source", source, M|RAWLIST, 1, 1,
|
||||
"set", set, M|RAWLIST, 0, 1000,
|
||||
"shell", dosh, I|NOLIST, 0, 0,
|
||||
"version", pversion, M|NOLIST, 0, 0,
|
||||
"group", group, M|RAWLIST, 0, 1000,
|
||||
"write", swrite, STRLIST, 0, 0,
|
||||
"from", from, MSGLIST, 0, MMNORM,
|
||||
"file", file, T|M|RAWLIST, 0, 1,
|
||||
"folder", file, T|M|RAWLIST, 0, 1,
|
||||
"folders", folders, T|M|NOLIST, 0, 0,
|
||||
"?", help, M|NOLIST, 0, 0,
|
||||
"z", scroll, M|STRLIST, 0, 0,
|
||||
"headers", headers, MSGLIST, 0, MMNDEL,
|
||||
"help", help, M|NOLIST, 0, 0,
|
||||
"=", pdot, NOLIST, 0, 0,
|
||||
"Reply", Respond, R|I|MSGLIST, 0, MMNDEL,
|
||||
"Respond", Respond, R|I|MSGLIST, 0, MMNDEL,
|
||||
"reply", respond, R|I|MSGLIST, 0, MMNDEL,
|
||||
"respond", respond, R|I|MSGLIST, 0, MMNDEL,
|
||||
"edit", editor, I|MSGLIST, 0, MMNORM,
|
||||
"echo", echo, M|RAWLIST, 0, 1000,
|
||||
"quit", quitcmd, NOLIST, 0, 0,
|
||||
"list", pcmdlist, M|NOLIST, 0, 0,
|
||||
"xit", rexit, M|NOLIST, 0, 0,
|
||||
"exit", rexit, M|NOLIST, 0, 0,
|
||||
"size", messize, MSGLIST, 0, MMNDEL,
|
||||
"hold", preserve, W|MSGLIST, 0, MMNDEL,
|
||||
"if", ifcmd, F|M|RAWLIST, 1, 1,
|
||||
"else", elsecmd, F|M|RAWLIST, 0, 0,
|
||||
"endif", endifcmd, F|M|RAWLIST, 0, 0,
|
||||
"alternates", alternates, M|RAWLIST, 0, 1000,
|
||||
"ignore", igfield, M|RAWLIST, 0, 1000,
|
||||
"discard", igfield, M|RAWLIST, 0, 1000,
|
||||
"retain", retfield, M|RAWLIST, 0, 1000,
|
||||
"saveignore", saveigfield, M|RAWLIST, 0, 1000,
|
||||
"savediscard", saveigfield, M|RAWLIST, 0, 1000,
|
||||
"saveretain", saveretfield, M|RAWLIST, 0, 1000,
|
||||
/* "Header", Header, STRLIST, 0, 1000, */
|
||||
"core", core, M|NOLIST, 0, 0,
|
||||
"#", null, M|NOLIST, 0, 0,
|
||||
"clobber", clobber, M|RAWLIST, 0, 1,
|
||||
0, 0, 0, 0, 0
|
||||
{ "next", next, NDMLIST, 0, MMNDEL },
|
||||
{ "alias", group, M|RAWLIST, 0, 1000 },
|
||||
{ "print", type, MSGLIST, 0, MMNDEL },
|
||||
{ "type", type, MSGLIST, 0, MMNDEL },
|
||||
{ "Type", Type, MSGLIST, 0, MMNDEL },
|
||||
{ "Print", Type, MSGLIST, 0, MMNDEL },
|
||||
{ "visual", visual, I|MSGLIST, 0, MMNORM },
|
||||
{ "top", top, MSGLIST, 0, MMNDEL },
|
||||
{ "touch", stouch, W|MSGLIST, 0, MMNDEL },
|
||||
{ "preserve", preserve, W|MSGLIST, 0, MMNDEL },
|
||||
{ "delete", delete, W|P|MSGLIST, 0, MMNDEL },
|
||||
{ "dp", deltype, W|MSGLIST, 0, MMNDEL },
|
||||
{ "dt", deltype, W|MSGLIST, 0, MMNDEL },
|
||||
{ "undelete", undeletecmd, P|MSGLIST, MDELETED,MMNDEL },
|
||||
{ "unset", unset, M|RAWLIST, 1, 1000 },
|
||||
{ "mail", sendmail, R|M|I|STRLIST, 0, 0 },
|
||||
{ "mbox", mboxit, W|MSGLIST, 0, 0 },
|
||||
{ "more", more, MSGLIST, 0, MMNDEL },
|
||||
{ "page", more, MSGLIST, 0, MMNDEL },
|
||||
{ "More", More, MSGLIST, 0, MMNDEL },
|
||||
{ "Page", More, MSGLIST, 0, MMNDEL },
|
||||
{ "unread", unread, MSGLIST, 0, MMNDEL },
|
||||
{ "!", shell, I|STRLIST, 0, 0 },
|
||||
{ "copy", copycmd, M|STRLIST, 0, 0 },
|
||||
{ "chdir", schdir, M|RAWLIST, 0, 1 },
|
||||
{ "cd", schdir, M|RAWLIST, 0, 1 },
|
||||
{ "save", save, STRLIST, 0, 0 },
|
||||
{ "source", source, M|RAWLIST, 1, 1 },
|
||||
{ "set", set, M|RAWLIST, 0, 1000 },
|
||||
{ "shell", dosh, I|NOLIST, 0, 0 },
|
||||
{ "version", pversion, M|NOLIST, 0, 0 },
|
||||
{ "group", group, M|RAWLIST, 0, 1000 },
|
||||
{ "write", swrite, STRLIST, 0, 0 },
|
||||
{ "from", from, MSGLIST, 0, MMNORM },
|
||||
{ "file", file, T|M|RAWLIST, 0, 1 },
|
||||
{ "folder", file, T|M|RAWLIST, 0, 1 },
|
||||
{ "folders", folders, T|M|NOLIST, 0, 0 },
|
||||
{ "?", help, M|NOLIST, 0, 0 },
|
||||
{ "z", scroll, M|STRLIST, 0, 0 },
|
||||
{ "headers", headers, MSGLIST, 0, MMNDEL },
|
||||
{ "help", help, M|NOLIST, 0, 0 },
|
||||
{ "=", pdot, NOLIST, 0, 0 },
|
||||
{ "Reply", Respond, R|I|MSGLIST, 0, MMNDEL },
|
||||
{ "Respond", Respond, R|I|MSGLIST, 0, MMNDEL },
|
||||
{ "reply", respond, R|I|MSGLIST, 0, MMNDEL },
|
||||
{ "respond", respond, R|I|MSGLIST, 0, MMNDEL },
|
||||
{ "edit", editor, I|MSGLIST, 0, MMNORM },
|
||||
{ "echo", echo, M|RAWLIST, 0, 1000 },
|
||||
{ "quit", quitcmd, NOLIST, 0, 0 },
|
||||
{ "list", pcmdlist, M|NOLIST, 0, 0 },
|
||||
{ "xit", rexit, M|NOLIST, 0, 0 },
|
||||
{ "exit", rexit, M|NOLIST, 0, 0 },
|
||||
{ "size", messize, MSGLIST, 0, MMNDEL },
|
||||
{ "hold", preserve, W|MSGLIST, 0, MMNDEL },
|
||||
{ "if", ifcmd, F|M|RAWLIST, 1, 1 },
|
||||
{ "else", elsecmd, F|M|RAWLIST, 0, 0 },
|
||||
{ "endif", endifcmd, F|M|RAWLIST, 0, 0 },
|
||||
{ "alternates", alternates, M|RAWLIST, 0, 1000 },
|
||||
{ "ignore", igfield, M|RAWLIST, 0, 1000 },
|
||||
{ "discard", igfield, M|RAWLIST, 0, 1000 },
|
||||
{ "retain", retfield, M|RAWLIST, 0, 1000 },
|
||||
{ "saveignore", saveigfield, M|RAWLIST, 0, 1000 },
|
||||
{ "savediscard",saveigfield, M|RAWLIST, 0, 1000 },
|
||||
{ "saveretain", saveretfield, M|RAWLIST, 0, 1000 },
|
||||
/* { "Header", Header, STRLIST, 0, 1000 }, */
|
||||
{ "core", core, M|NOLIST, 0, 0 },
|
||||
{ "#", null, M|NOLIST, 0, 0 },
|
||||
{ "clobber", clobber, M|RAWLIST, 0, 1 },
|
||||
{ 0, 0, 0, 0, 0 }
|
||||
};
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: collect.c,v 1.2 1996/06/11 12:53:35 deraadt Exp $ */
|
||||
/* $NetBSD: collect.c,v 1.6 1996/06/08 19:48:16 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)collect.c 8.2 (Berkeley) 4/19/94";
|
||||
static char rcsid[] = "$Id: collect.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)collect.c 8.2 (Berkeley) 4/19/94";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: collect.c,v 1.2 1996/06/11 12:53:35 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -80,15 +86,23 @@ collect(hp, printheaders)
|
||||
char linebuf[LINESIZE], *cp;
|
||||
extern char *tempMail;
|
||||
char getsub;
|
||||
int omask;
|
||||
void collint(), collhup(), collstop();
|
||||
sigset_t oset, nset;
|
||||
#if __GNUC__
|
||||
/* Avoid longjmp clobbering */
|
||||
(void) &escape;
|
||||
(void) &eofcount;
|
||||
(void) &getsub;
|
||||
#endif
|
||||
|
||||
collf = NULL;
|
||||
/*
|
||||
* Start catching signals from here, but we're still die on interrupts
|
||||
* until we're in the main loop.
|
||||
*/
|
||||
omask = sigblock(sigmask(SIGINT) | sigmask(SIGHUP));
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGINT);
|
||||
sigaddset(&nset, SIGHUP);
|
||||
sigprocmask(SIG_BLOCK, &nset, &oset);
|
||||
if ((saveint = signal(SIGINT, SIG_IGN)) != SIG_IGN)
|
||||
signal(SIGINT, collint);
|
||||
if ((savehup = signal(SIGHUP, SIG_IGN)) != SIG_IGN)
|
||||
@ -100,7 +114,7 @@ collect(hp, printheaders)
|
||||
rm(tempMail);
|
||||
goto err;
|
||||
}
|
||||
sigsetmask(omask & ~(sigmask(SIGINT) | sigmask(SIGHUP)));
|
||||
sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
|
||||
noreset++;
|
||||
if ((collf = Fopen(tempMail, "w+")) == NULL) {
|
||||
@ -191,7 +205,7 @@ cont:
|
||||
/*
|
||||
* Dump core.
|
||||
*/
|
||||
core();
|
||||
core(NULL);
|
||||
break;
|
||||
case '!':
|
||||
/*
|
||||
@ -375,13 +389,16 @@ out:
|
||||
if (collf != NULL)
|
||||
rewind(collf);
|
||||
noreset--;
|
||||
sigblock(sigmask(SIGINT) | sigmask(SIGHUP));
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGINT);
|
||||
sigaddset(&nset, SIGHUP);
|
||||
sigprocmask(SIG_BLOCK, &nset, &oset);
|
||||
signal(SIGINT, saveint);
|
||||
signal(SIGHUP, savehup);
|
||||
signal(SIGTSTP, savetstp);
|
||||
signal(SIGTTOU, savettou);
|
||||
signal(SIGTTIN, savettin);
|
||||
sigsetmask(omask);
|
||||
sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
return collf;
|
||||
}
|
||||
|
||||
@ -561,10 +578,13 @@ collstop(s)
|
||||
int s;
|
||||
{
|
||||
sig_t old_action = signal(s, SIG_DFL);
|
||||
sigset_t nset;
|
||||
|
||||
sigsetmask(sigblock(0) & ~sigmask(s));
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, s);
|
||||
sigprocmask(SIG_UNBLOCK, &nset, NULL);
|
||||
kill(0, s);
|
||||
sigblock(sigmask(s));
|
||||
sigprocmask(SIG_BLOCK, &nset, NULL);
|
||||
signal(s, old_action);
|
||||
if (colljmp_p) {
|
||||
colljmp_p = 0;
|
||||
|
@ -1,3 +1,5 @@
|
||||
/* $OpenBSD: def.h,v 1.2 1996/06/11 12:53:36 deraadt Exp $ */
|
||||
/* $NetBSD: def.h,v 1.8 1996/06/08 19:48:18 christos Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -30,8 +32,8 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)def.h 8.2 (Berkeley) 3/21/94
|
||||
* $Id: def.h,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $
|
||||
* @(#)def.h 8.2 (Berkeley) 3/21/94
|
||||
* $NetBSD: def.h,v 1.8 1996/06/08 19:48:18 christos Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -105,7 +107,7 @@ struct message {
|
||||
*/
|
||||
struct cmd {
|
||||
char *c_name; /* Name of command */
|
||||
int (*c_func)(); /* Implementor of the command */
|
||||
int (*c_func) __P((void *));/* Implementor of the command */
|
||||
short c_argtype; /* Type of arglist (see below) */
|
||||
short c_msgflag; /* Required flags of messages */
|
||||
short c_msgmask; /* Relevant flags of messages */
|
||||
|
198
usr.bin/mail/dotlock.c
Normal file
198
usr.bin/mail/dotlock.c
Normal file
@ -0,0 +1,198 @@
|
||||
/* $OpenBSD: dotlock.c,v 1.1 1996/06/11 12:53:37 deraadt Exp $ */
|
||||
/* $NetBSD: dotlock.c,v 1.1 1996/06/08 19:48:19 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996 Christos Zoulas. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by Christos Zoulas.
|
||||
* 4. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char rcsid[] = "$OpenBSD: dotlock.c,v 1.1 1996/06/11 12:53:37 deraadt Exp $";
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
#ifndef O_SYNC
|
||||
#define O_SYNC 0
|
||||
#endif
|
||||
|
||||
static int create_exclusive __P((const char *));
|
||||
/*
|
||||
* Create a unique file. O_EXCL does not really work over NFS so we follow
|
||||
* the following trick: [Inspired by S.R. van den Berg]
|
||||
*
|
||||
* - make a mostly unique filename and try to create it.
|
||||
* - link the unique filename to our target
|
||||
* - get the link count of the target
|
||||
* - unlink the mostly unique filename
|
||||
* - if the link count was 2, then we are ok; else we've failed.
|
||||
*/
|
||||
static int
|
||||
create_exclusive(fname)
|
||||
const char *fname;
|
||||
{
|
||||
char path[MAXPATHLEN], hostname[MAXHOSTNAMELEN];
|
||||
const char *ptr;
|
||||
struct timeval tv;
|
||||
pid_t pid;
|
||||
size_t ntries, cookie;
|
||||
int fd, serrno;
|
||||
struct stat st;
|
||||
|
||||
(void) gettimeofday(&tv, NULL);
|
||||
(void) gethostname(hostname, MAXHOSTNAMELEN);
|
||||
pid = getpid();
|
||||
|
||||
cookie = pid ^ tv.tv_usec;
|
||||
|
||||
/*
|
||||
* We generate a semi-unique filename, from hostname.(pid ^ usec)
|
||||
*/
|
||||
if ((ptr = strrchr(fname, '/')) == NULL)
|
||||
ptr = fname;
|
||||
else
|
||||
ptr++;
|
||||
|
||||
(void) snprintf(path, sizeof(path), "%.*s.%s.%x",
|
||||
ptr - fname, fname, hostname, cookie);
|
||||
|
||||
/*
|
||||
* We try to create the unique filename.
|
||||
*/
|
||||
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);
|
||||
break;
|
||||
}
|
||||
else if (errno == EEXIST)
|
||||
continue;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* We link the path to the name
|
||||
*/
|
||||
if (link(path, fname) == -1)
|
||||
goto bad;
|
||||
|
||||
/*
|
||||
* Note that we stat our own exclusively created name, not the
|
||||
* destination, since the destination can be affected by others.
|
||||
*/
|
||||
if (stat(path, &st) == -1)
|
||||
goto bad;
|
||||
|
||||
(void) unlink(path);
|
||||
|
||||
/*
|
||||
* If the number of links was two (one for the unique file and one
|
||||
* for the lock), we've won the race
|
||||
*/
|
||||
if (st.st_nlink != 2) {
|
||||
errno = EEXIST;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
bad:
|
||||
serrno = errno;
|
||||
(void) unlink(path);
|
||||
errno = serrno;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
dot_lock(fname, pollinterval, fp, msg)
|
||||
const char *fname; /* Pathname to lock */
|
||||
int pollinterval; /* Interval to check for lock, -1 return */
|
||||
FILE *fp; /* File to print message */
|
||||
const char *msg; /* Message to print */
|
||||
{
|
||||
char path[MAXPATHLEN];
|
||||
sigset_t nset, oset;
|
||||
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGHUP);
|
||||
sigaddset(&nset, SIGINT);
|
||||
sigaddset(&nset, SIGQUIT);
|
||||
sigaddset(&nset, SIGTERM);
|
||||
sigaddset(&nset, SIGTTIN);
|
||||
sigaddset(&nset, SIGTTOU);
|
||||
sigaddset(&nset, SIGTSTP);
|
||||
sigaddset(&nset, SIGCHLD);
|
||||
|
||||
(void) snprintf(path, sizeof(path), "%s.lock", fname);
|
||||
|
||||
for (;;) {
|
||||
(void) sigprocmask(SIG_BLOCK, &nset, &oset);
|
||||
if (create_exclusive(path) != -1) {
|
||||
(void) sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
(void) sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
|
||||
if (errno != EEXIST)
|
||||
return -1;
|
||||
|
||||
if (fp && msg)
|
||||
(void) fputs(msg, fp);
|
||||
|
||||
if (pollinterval) {
|
||||
if (pollinterval == -1) {
|
||||
errno = EEXIST;
|
||||
return -1;
|
||||
}
|
||||
sleep(pollinterval);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
dot_unlock(fname)
|
||||
const char *fname;
|
||||
{
|
||||
char path[MAXPATHLEN];
|
||||
|
||||
(void) snprintf(path, sizeof(path), "%s.lock", fname);
|
||||
(void) unlink(path);
|
||||
}
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: edit.c,v 1.2 1996/06/11 12:53:38 deraadt Exp $ */
|
||||
/* $NetBSD: edit.c,v 1.5 1996/06/08 19:48:20 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)edit.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: edit.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
#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 $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -50,9 +56,10 @@ static char rcsid[] = "$Id: edit.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
* Edit a message list.
|
||||
*/
|
||||
int
|
||||
editor(msgvec)
|
||||
int *msgvec;
|
||||
editor(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
|
||||
return edit1(msgvec, 'e');
|
||||
}
|
||||
@ -61,9 +68,10 @@ editor(msgvec)
|
||||
* Invoke the visual editor on a message list.
|
||||
*/
|
||||
int
|
||||
visual(msgvec)
|
||||
int *msgvec;
|
||||
visual(v)
|
||||
void *v;
|
||||
{
|
||||
int *msgvec = v;
|
||||
|
||||
return edit1(msgvec, 'v');
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* $OpenBSD: extern.h,v 1.2 1996/03/27 19:32:32 niklas Exp $ */
|
||||
/* $OpenBSD: extern.h,v 1.3 1996/06/11 12:53:39 deraadt Exp $ */
|
||||
/* $NetBSD: extern.h,v 1.4 1996/06/08 19:48:21 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
@ -33,14 +34,18 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)extern.h 8.1 (Berkeley) 6/6/93
|
||||
* $NetBSD: extern.h,v 1.4 1996/06/08 19:48:21 christos Exp $
|
||||
*/
|
||||
|
||||
struct name;
|
||||
struct name *cat __P((struct name *, struct name *));
|
||||
struct name *delname __P((struct name *, char []));
|
||||
struct name *elide __P((struct name *));
|
||||
struct name *extract __P((char [], int));
|
||||
struct grouphead;
|
||||
struct name *gexpand __P((struct name *, struct grouphead *, int, int));
|
||||
struct name *nalloc __P((char [], int));
|
||||
struct header;
|
||||
struct name *outof __P((struct name *, FILE *, struct header *));
|
||||
struct name *put __P((struct name *, struct name *));
|
||||
struct name *tailof __P((struct name *));
|
||||
@ -55,6 +60,7 @@ char *detract __P((struct name *, int));
|
||||
char *expand __P((char *));
|
||||
char *getdeadletter __P((void));
|
||||
char *getname __P((int));
|
||||
struct message;
|
||||
char *hfield __P((char [], struct message *));
|
||||
FILE *infix __P((struct header *, FILE *));
|
||||
char *ishfield __P((char [], char[], char *));
|
||||
@ -75,14 +81,14 @@ char *value __P((char []));
|
||||
char *vcopy __P((char []));
|
||||
char *yankword __P((char *, char []));
|
||||
int Fclose __P((FILE *));
|
||||
int More __P((int *));
|
||||
int More __P((void *));
|
||||
int Pclose __P((FILE *));
|
||||
int Respond __P((int *));
|
||||
int Type __P((int *));
|
||||
int Respond __P((void *));
|
||||
int Type __P((void *));
|
||||
int _Respond __P((int []));
|
||||
int _respond __P((int *));
|
||||
void alter __P((char *));
|
||||
int alternates __P((char **));
|
||||
int alternates __P((void *));
|
||||
void announce __P((void));
|
||||
int anyof __P((char *, char *));
|
||||
int append __P((struct message *, FILE *));
|
||||
@ -94,43 +100,44 @@ void brokpipe __P((int));
|
||||
int charcount __P((char *, int));
|
||||
int check __P((int, int));
|
||||
void clob1 __P((int));
|
||||
int clobber __P((char **));
|
||||
int clobber __P((void *));
|
||||
void close_all_files __P((void));
|
||||
int cmatch __P((char *, char *));
|
||||
void collhup __P((int));
|
||||
void collint __P((int));
|
||||
void collstop __P((int));
|
||||
void commands __P((void));
|
||||
int copycmd __P((char []));
|
||||
int core __P((void));
|
||||
int copycmd __P((void *));
|
||||
int core __P((void *));
|
||||
int count __P((struct name *));
|
||||
int delete __P((int []));
|
||||
int delete __P((void *));
|
||||
int delm __P((int []));
|
||||
int deltype __P((int []));
|
||||
int deltype __P((void *));
|
||||
void demail __P((void));
|
||||
int diction __P((const void *, const void *));
|
||||
int dosh __P((char *));
|
||||
int echo __P((char **));
|
||||
int dosh __P((void *));
|
||||
int dot_lock __P((const char *, int, FILE *, const char *));
|
||||
void dot_unlock __P((const char *));
|
||||
int echo __P((void *));
|
||||
int edit1 __P((int *, int));
|
||||
int editor __P((int *));
|
||||
int editor __P((void *));
|
||||
void edstop __P((void));
|
||||
int elsecmd __P((void));
|
||||
int endifcmd __P((void));
|
||||
int elsecmd __P((void *));
|
||||
int endifcmd __P((void *));
|
||||
int evalcol __P((int));
|
||||
int execute __P((char [], int));
|
||||
int exwrite __P((char [], FILE *, int));
|
||||
void fail __P((char [], char []));
|
||||
int file __P((char **));
|
||||
int file __P((void *));
|
||||
struct grouphead *
|
||||
findgroup __P((char []));
|
||||
void findmail __P((char *, char *));
|
||||
int first __P((int, int));
|
||||
void fixhead __P((struct header *, struct name *));
|
||||
void fmt __P((char *, struct name *, FILE *, int));
|
||||
int folders __P((void));
|
||||
int folders __P((void *));
|
||||
int forward __P((char [], FILE *, int));
|
||||
void free_child __P((int));
|
||||
int from __P((int *));
|
||||
int from __P((void *));
|
||||
off_t fsize __P((FILE *));
|
||||
int getfold __P((char *));
|
||||
int gethfield __P((FILE *, char [], int, char **));
|
||||
@ -138,16 +145,16 @@ int getmsglist __P((char *, int *, int));
|
||||
int getrawlist __P((char [], char **, int));
|
||||
int getuserid __P((char []));
|
||||
int grabh __P((struct header *, int));
|
||||
int group __P((char **));
|
||||
int group __P((void *));
|
||||
void hangup __P((int));
|
||||
int hash __P((char *));
|
||||
void hdrstop __P((int));
|
||||
int headers __P((int *));
|
||||
int help __P((void));
|
||||
int headers __P((void *));
|
||||
int help __P((void *));
|
||||
void holdsigs __P((void));
|
||||
int ifcmd __P((char **));
|
||||
int igcomp __P((const void *, const void *));
|
||||
int igfield __P((char *[]));
|
||||
int ifcmd __P((void *));
|
||||
int igfield __P((void *));
|
||||
struct ignoretab;
|
||||
int ignore1 __P((char *[], struct ignoretab *, char *));
|
||||
int igshow __P((struct ignoretab *, char *));
|
||||
void intr __P((int));
|
||||
@ -171,85 +178,87 @@ void mark __P((int));
|
||||
int markall __P((char [], int));
|
||||
int matchsender __P((char *, int));
|
||||
int matchsubj __P((char *, int));
|
||||
int mboxit __P((int []));
|
||||
int mboxit __P((void *));
|
||||
int member __P((char *, struct ignoretab *));
|
||||
void mesedit __P((FILE *, int));
|
||||
void mespipe __P((FILE *, char []));
|
||||
int messize __P((int *));
|
||||
int messize __P((void *));
|
||||
int metamess __P((int, int));
|
||||
int more __P((int *));
|
||||
int more __P((void *));
|
||||
int newfileinfo __P((void));
|
||||
int next __P((int *));
|
||||
int null __P((int));
|
||||
void panic __P((const char *, ...));
|
||||
int next __P((void *));
|
||||
int null __P((void *));
|
||||
void panic __P((const char *, ...))
|
||||
__attribute__((__format__(__printf__,1,2),__noreturn__));
|
||||
struct headline;
|
||||
void parse __P((char [], struct headline *, char []));
|
||||
int pcmdlist __P((void));
|
||||
int pdot __P((void));
|
||||
void prepare_child __P((int, int, int));
|
||||
int preserve __P((int *));
|
||||
int pcmdlist __P((void *));
|
||||
int pdot __P((void *));
|
||||
void prepare_child __P((sigset_t *, int, int));
|
||||
int preserve __P((void *));
|
||||
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 pversion __P((int));
|
||||
int pversion __P((void *));
|
||||
void quit __P((void));
|
||||
int quitcmd __P((void));
|
||||
int quitcmd __P((void *));
|
||||
int raise __P((int));
|
||||
int readline __P((FILE *, char *, int));
|
||||
void register_file __P((FILE *, int, int));
|
||||
void regret __P((int));
|
||||
void relsesigs __P((void));
|
||||
int respond __P((int *));
|
||||
int retfield __P((char *[]));
|
||||
int rexit __P((int));
|
||||
int respond __P((void *));
|
||||
int retfield __P((void *));
|
||||
int rexit __P((void *));
|
||||
int rm __P((char *));
|
||||
int run_command __P((char *, int, int, int, char *, char *, char *));
|
||||
int save __P((char []));
|
||||
int run_command __P((char *, sigset_t *, int, int, char *, char *, char *));
|
||||
int save __P((void *));
|
||||
int save1 __P((char [], int, char *, struct ignoretab *));
|
||||
void savedeadletter __P((FILE *));
|
||||
int saveigfield __P((char *[]));
|
||||
int saveigfield __P((void *));
|
||||
int savemail __P((char [], FILE *));
|
||||
int saveretfield __P((char *[]));
|
||||
int saveretfield __P((void *));
|
||||
int scan __P((char **));
|
||||
void scaninit __P((void));
|
||||
int schdir __P((char **));
|
||||
int schdir __P((void *));
|
||||
int screensize __P((void));
|
||||
int scroll __P((char []));
|
||||
int scroll __P((void *));
|
||||
int send __P((struct message *, FILE *, struct ignoretab *, char *));
|
||||
int sendmail __P((char *));
|
||||
int set __P((char **));
|
||||
int sendmail __P((void *));
|
||||
int set __P((void *));
|
||||
int setfile __P((char *));
|
||||
void setmsize __P((int));
|
||||
void setptr __P((FILE *));
|
||||
void setscreensize __P((void));
|
||||
int shell __P((char *));
|
||||
int shell __P((void *));
|
||||
void sigchild __P((int));
|
||||
void sort __P((char **));
|
||||
int source __P((char **));
|
||||
int source __P((void *));
|
||||
void spreserve __P((void));
|
||||
void sreset __P((void));
|
||||
int start_command __P((char *, int, int, int, char *, char *, char *));
|
||||
int start_command __P((char *, sigset_t *, int, int, char *, char *, char *));
|
||||
void statusput __P((struct message *, FILE *, char *));
|
||||
void stop __P((int));
|
||||
int stouch __P((int []));
|
||||
int swrite __P((char []));
|
||||
int stouch __P((void *));
|
||||
int swrite __P((void *));
|
||||
void tinit __P((void));
|
||||
int top __P((int *));
|
||||
int top __P((void *));
|
||||
void touch __P((struct message *));
|
||||
void ttyint __P((int));
|
||||
void ttystop __P((int));
|
||||
int type __P((int *));
|
||||
int type __P((void *));
|
||||
int type1 __P((int *, int, int));
|
||||
int undeletecmd __P((int *));
|
||||
int undeletecmd __P((void *));
|
||||
void unmark __P((int));
|
||||
char **unpack __P((struct name *));
|
||||
int unread __P((int []));
|
||||
int unread __P((void *));
|
||||
void unregister_file __P((FILE *));
|
||||
int unset __P((char **));
|
||||
int unset __P((void *));
|
||||
int unstack __P((void));
|
||||
void vfree __P((char *));
|
||||
int visual __P((int *));
|
||||
int visual __P((void *));
|
||||
int wait_child __P((int));
|
||||
int wait_command __P((int));
|
||||
int writeback __P((FILE *));
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: fio.c,v 1.2 1996/06/11 12:53:39 deraadt Exp $ */
|
||||
/* $NetBSD: fio.c,v 1.5 1996/06/08 19:48:22 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)fio.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: fio.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)fio.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: fio.c,v 1.2 1996/06/11 12:53:39 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -122,7 +128,7 @@ setptr(ibuf)
|
||||
;
|
||||
if (cp[-1] != ':')
|
||||
break;
|
||||
while (c = *cp++)
|
||||
while ((c = *cp++) != '\0')
|
||||
if (c == 'R')
|
||||
this.m_flag |= MREAD;
|
||||
else if (c == 'O')
|
||||
@ -256,7 +262,7 @@ rm(name)
|
||||
}
|
||||
|
||||
static int sigdepth; /* depth of holdsigs() */
|
||||
static int omask;
|
||||
static sigset_t nset, oset;
|
||||
/*
|
||||
* Hold signals SIGHUP, SIGINT, and SIGQUIT.
|
||||
*/
|
||||
@ -264,8 +270,13 @@ void
|
||||
holdsigs()
|
||||
{
|
||||
|
||||
if (sigdepth++ == 0)
|
||||
omask = sigblock(sigmask(SIGHUP)|sigmask(SIGINT)|sigmask(SIGQUIT));
|
||||
if (sigdepth++ == 0) {
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGHUP);
|
||||
sigaddset(&nset, SIGINT);
|
||||
sigaddset(&nset, SIGQUIT);
|
||||
sigprocmask(SIG_BLOCK, &nset, &oset);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -276,7 +287,7 @@ relsesigs()
|
||||
{
|
||||
|
||||
if (--sigdepth == 0)
|
||||
sigsetmask(omask);
|
||||
sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: getname.c,v 1.2 1996/06/11 12:53:40 deraadt Exp $ */
|
||||
/* $NetBSD: getname.c,v 1.4 1996/06/08 19:48:23 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)getname.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: getname.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $";
|
||||
#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 $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -43,8 +49,7 @@ static char rcsid[] = "$Id: getname.c,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp
|
||||
/* Getname / getuserid for those with hashed passwd data base). */
|
||||
|
||||
/*
|
||||
* Search the passwd file for a uid. Return name through ref parameter
|
||||
* if found, indicating success with 0 return. Return -1 on error.
|
||||
* Search the passwd file for a uid. Return name on success, NOSTR on failure
|
||||
*/
|
||||
char *
|
||||
getname(uid)
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: glob.h,v 1.2 1996/06/11 12:53:41 deraadt Exp $ */
|
||||
/* $NetBSD: glob.h,v 1.4 1996/06/08 19:48:25 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -31,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)glob.h 8.1 (Berkeley) 6/6/93
|
||||
* $Id: glob.h,v 1.1.1.1 1995/10/18 08:45:38 deraadt Exp $
|
||||
* $NetBSD: glob.h,v 1.4 1996/06/08 19:48:25 christos Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $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 $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)head.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: head.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)head.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: head.c,v 1.2 1996/06/11 12:53:42 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -140,7 +146,7 @@ copyin(src, space)
|
||||
char *top;
|
||||
|
||||
top = cp = *space;
|
||||
while (*cp++ = *src++)
|
||||
while ((*cp++ = *src++) != '\0')
|
||||
;
|
||||
*space = cp;
|
||||
return (top);
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* $OpenBSD: lex.c,v 1.2 1996/03/27 19:32:33 niklas Exp $ */
|
||||
/* $OpenBSD: lex.c,v 1.3 1996/06/11 12:53:42 deraadt Exp $ */
|
||||
/* $NetBSD: lex.c,v 1.7 1996/06/08 19:48:28 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
@ -34,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)lex.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$OpenBSD: lex.c,v 1.2 1996/03/27 19:32:33 niklas Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)lex.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: lex.c,v 1.3 1996/06/11 12:53:42 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -171,7 +175,10 @@ commands()
|
||||
int eofloop = 0;
|
||||
register int n;
|
||||
char linebuf[LINESIZE];
|
||||
void intr(), stop(), hangup();
|
||||
#if __GNUC__
|
||||
/* Avoid longjmp clobbering */
|
||||
(void) &eofloop;
|
||||
#endif
|
||||
|
||||
if (!sourcing) {
|
||||
if (signal(SIGINT, SIG_IGN) != SIG_IGN)
|
||||
@ -249,7 +256,7 @@ execute(linebuf, contxt)
|
||||
{
|
||||
char word[LINESIZE];
|
||||
char *arglist[MAXARGC];
|
||||
const struct cmd *com;
|
||||
const struct cmd *com = NULL;
|
||||
register char *cp, *cp2;
|
||||
register int c;
|
||||
int muvec[2];
|
||||
@ -301,7 +308,7 @@ execute(linebuf, contxt)
|
||||
*/
|
||||
|
||||
if ((com->c_argtype & F) == 0)
|
||||
if (cond == CRCV && !rcvmode || cond == CSEND && rcvmode)
|
||||
if ((cond == CRCV && !rcvmode) || (cond == CSEND && rcvmode))
|
||||
return(0);
|
||||
|
||||
/*
|
||||
@ -424,6 +431,8 @@ out:
|
||||
unstack();
|
||||
return 0;
|
||||
}
|
||||
if (com == NULL)
|
||||
return(0);
|
||||
if (value("autoprint") != NOSTR && com->c_argtype & P)
|
||||
if ((dot->m_flag & MDELETED) == 0) {
|
||||
muvec[0] = dot - &message[0] + 1;
|
||||
@ -526,10 +535,13 @@ stop(s)
|
||||
int s;
|
||||
{
|
||||
sig_t old_action = signal(s, SIG_DFL);
|
||||
sigset_t nset;
|
||||
|
||||
sigsetmask(sigblock(0) & ~sigmask(s));
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, s);
|
||||
sigprocmask(SIG_UNBLOCK, &nset, NULL);
|
||||
kill(0, s);
|
||||
sigblock(sigmask(s));
|
||||
sigprocmask(SIG_BLOCK, &nset, NULL);
|
||||
signal(s, old_action);
|
||||
if (reset_on_stop) {
|
||||
reset_on_stop = 0;
|
||||
@ -636,8 +648,8 @@ newfileinfo()
|
||||
|
||||
/*ARGSUSED*/
|
||||
int
|
||||
pversion(e)
|
||||
int e;
|
||||
pversion(v)
|
||||
void *v;
|
||||
{
|
||||
extern char *version;
|
||||
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: list.c,v 1.2 1996/06/11 12:53:43 deraadt Exp $ */
|
||||
/* $NetBSD: list.c,v 1.4 1996/06/08 19:48:30 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)list.c 8.2 (Berkeley) 4/19/94";
|
||||
static char rcsid[] = "$Id: list.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)list.c 8.2 (Berkeley) 4/19/94";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: list.c,v 1.2 1996/06/11 12:53:43 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -101,12 +107,12 @@ struct coltab {
|
||||
int co_mask; /* m_status bits to mask */
|
||||
int co_equal; /* ... must equal this */
|
||||
} coltab[] = {
|
||||
'n', CMNEW, MNEW, MNEW,
|
||||
'o', CMOLD, MNEW, 0,
|
||||
'u', CMUNREAD, MREAD, 0,
|
||||
'd', CMDELETED, MDELETED, MDELETED,
|
||||
'r', CMREAD, MREAD, MREAD,
|
||||
0, 0, 0, 0
|
||||
{ 'n', CMNEW, MNEW, MNEW },
|
||||
{ 'o', CMOLD, MNEW, 0 },
|
||||
{ 'u', CMUNREAD, MREAD, 0 },
|
||||
{ 'd', CMDELETED, MDELETED, MDELETED },
|
||||
{ 'r', CMREAD, MREAD, MREAD },
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
static int lastcolmod;
|
||||
@ -454,8 +460,8 @@ getrawlist(line, argv, argc)
|
||||
if (c == '?')
|
||||
*cp2++ = '\177';
|
||||
/* null doesn't show up anyway */
|
||||
else if (c >= 'A' && c <= '_' ||
|
||||
c >= 'a' && c <= 'z')
|
||||
else if ((c >= 'A' && c <= '_') ||
|
||||
(c >= 'a' && c <= 'z'))
|
||||
*cp2++ = c & 037;
|
||||
else {
|
||||
*cp2++ = '^';
|
||||
@ -488,15 +494,15 @@ struct lex {
|
||||
char l_char;
|
||||
char l_token;
|
||||
} singles[] = {
|
||||
'$', TDOLLAR,
|
||||
'.', TDOT,
|
||||
'^', TUP,
|
||||
'*', TSTAR,
|
||||
'-', TDASH,
|
||||
'+', TPLUS,
|
||||
'(', TOPEN,
|
||||
')', TCLOSE,
|
||||
0, 0
|
||||
{ '$', TDOLLAR },
|
||||
{ '.', TDOT },
|
||||
{ '^', TUP },
|
||||
{ '*', TSTAR },
|
||||
{ '-', TDASH },
|
||||
{ '+', TPLUS },
|
||||
{ '(', TOPEN },
|
||||
{ ')', TCLOSE },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
int
|
||||
|
@ -1,3 +1,4 @@
|
||||
.\" $OpenBSD: mail.1,v 1.2 1996/06/11 12:53:44 deraadt Exp $
|
||||
.\" Copyright (c) 1980, 1990, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
.\"
|
||||
@ -30,7 +31,6 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" from: @(#)mail.1 8.2 (Berkeley) 12/30/93
|
||||
.\" $Id: mail.1,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $
|
||||
.\"
|
||||
.Dd December 30, 1993
|
||||
.Dt MAIL 1
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: main.c,v 1.2 1996/06/11 12:53:45 deraadt Exp $ */
|
||||
/* $NetBSD: main.c,v 1.5 1996/06/08 19:48:31 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -38,12 +41,16 @@ static char copyright[] =
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)main.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: main.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: main.c,v 1.2 1996/06/11 12:53:45 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include "extern.h"
|
||||
|
||||
/*
|
||||
@ -64,9 +71,7 @@ main(argc, argv)
|
||||
char *subject;
|
||||
char *ef;
|
||||
char nosrc = 0;
|
||||
void hdrstop();
|
||||
sig_t prevint;
|
||||
void sigchild();
|
||||
|
||||
/*
|
||||
* Set up a reasonable environment.
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: names.c,v 1.2 1996/06/11 12:53:45 deraadt Exp $ */
|
||||
/* $NetBSD: names.c,v 1.5 1996/06/08 19:48:32 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)names.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: names.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)names.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: names.c,v 1.2 1996/06/11 12:53:45 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -220,8 +226,8 @@ outof(names, fo, hp)
|
||||
{
|
||||
register int c;
|
||||
register struct name *np, *top;
|
||||
time_t now, time();
|
||||
char *date, *fname, *ctime();
|
||||
time_t now;
|
||||
char *date, *fname;
|
||||
FILE *fout, *fin;
|
||||
int ispipe;
|
||||
extern char *tempEdit;
|
||||
@ -282,6 +288,7 @@ outof(names, fo, hp)
|
||||
if (ispipe) {
|
||||
int pid;
|
||||
char *shell;
|
||||
sigset_t nset;
|
||||
|
||||
/*
|
||||
* XXX
|
||||
@ -292,8 +299,11 @@ outof(names, fo, hp)
|
||||
*/
|
||||
if ((shell = value("SHELL")) == NOSTR)
|
||||
shell = _PATH_CSHELL;
|
||||
pid = start_command(shell, sigmask(SIGHUP)|
|
||||
sigmask(SIGINT)|sigmask(SIGQUIT),
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGHUP);
|
||||
sigaddset(&nset, SIGINT);
|
||||
sigaddset(&nset, SIGQUIT);
|
||||
pid = start_command(shell, &nset,
|
||||
image, -1, "-c", fname, NOSTR);
|
||||
if (pid < 0) {
|
||||
senderr++;
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: pathnames.h,v 1.2 1996/06/11 12:53:46 deraadt Exp $ */
|
||||
/* $NetBSD: pathnames.h,v 1.4 1996/06/08 19:48:34 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -30,8 +33,8 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)pathnames.h 8.1 (Berkeley) 6/6/93
|
||||
* $Id: pathnames.h,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $
|
||||
* @(#)pathnames.h 8.1 (Berkeley) 6/6/93
|
||||
* $NetBSD: pathnames.h,v 1.4 1996/06/08 19:48:34 christos Exp $
|
||||
*/
|
||||
|
||||
#include <paths.h>
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: popen.c,v 1.2 1996/06/11 12:53:47 deraadt Exp $ */
|
||||
/* $NetBSD: popen.c,v 1.4 1996/06/08 19:48:35 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)popen.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: popen.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)popen.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: popen.c,v 1.2 1996/06/11 12:53:47 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -62,6 +68,7 @@ struct child {
|
||||
static struct child *child;
|
||||
static struct child *findchild __P((int));
|
||||
static void delchild __P((struct child *));
|
||||
static int file_pid __P((FILE *));
|
||||
|
||||
FILE *
|
||||
Fopen(file, mode)
|
||||
@ -106,6 +113,7 @@ Popen(cmd, mode)
|
||||
int p[2];
|
||||
int myside, hisside, fd0, fd1;
|
||||
int pid;
|
||||
sigset_t nset;
|
||||
FILE *fp;
|
||||
|
||||
if (pipe(p) < 0)
|
||||
@ -121,7 +129,8 @@ Popen(cmd, mode)
|
||||
hisside = fd0 = p[READ];
|
||||
fd1 = -1;
|
||||
}
|
||||
if ((pid = start_command(cmd, 0, fd0, fd1, NOSTR, NOSTR, NOSTR)) < 0) {
|
||||
sigemptyset(&nset);
|
||||
if ((pid = start_command(cmd, &nset, fd0, fd1, NOSTR, NOSTR, NOSTR)) < 0) {
|
||||
close(p[READ]);
|
||||
close(p[WRITE]);
|
||||
return NULL;
|
||||
@ -137,14 +146,17 @@ Pclose(ptr)
|
||||
FILE *ptr;
|
||||
{
|
||||
int i;
|
||||
int omask;
|
||||
sigset_t nset, oset;
|
||||
|
||||
i = file_pid(ptr);
|
||||
unregister_file(ptr);
|
||||
(void) fclose(ptr);
|
||||
omask = sigblock(sigmask(SIGINT)|sigmask(SIGHUP));
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGINT);
|
||||
sigaddset(&nset, SIGHUP);
|
||||
sigprocmask(SIG_BLOCK, &nset, &oset);
|
||||
i = wait_child(i);
|
||||
sigsetmask(omask);
|
||||
sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
return i;
|
||||
}
|
||||
|
||||
@ -181,7 +193,7 @@ unregister_file(fp)
|
||||
{
|
||||
struct fp **pp, *p;
|
||||
|
||||
for (pp = &fp_head; p = *pp; pp = &p->link)
|
||||
for (pp = &fp_head; (p = *pp) != NULL; pp = &p->link)
|
||||
if (p->fp == fp) {
|
||||
*pp = p->link;
|
||||
free((char *) p);
|
||||
@ -190,6 +202,7 @@ unregister_file(fp)
|
||||
panic("Invalid file pointer");
|
||||
}
|
||||
|
||||
static int
|
||||
file_pid(fp)
|
||||
FILE *fp;
|
||||
{
|
||||
@ -213,7 +226,8 @@ file_pid(fp)
|
||||
int
|
||||
run_command(cmd, mask, infd, outfd, a0, a1, a2)
|
||||
char *cmd;
|
||||
int mask, infd, outfd;
|
||||
sigset_t *mask;
|
||||
int infd, outfd;
|
||||
char *a0, *a1, *a2;
|
||||
{
|
||||
int pid;
|
||||
@ -227,7 +241,8 @@ run_command(cmd, mask, infd, outfd, a0, a1, a2)
|
||||
int
|
||||
start_command(cmd, mask, infd, outfd, a0, a1, a2)
|
||||
char *cmd;
|
||||
int mask, infd, outfd;
|
||||
sigset_t *mask;
|
||||
int infd, outfd;
|
||||
char *a0, *a1, *a2;
|
||||
{
|
||||
int pid;
|
||||
@ -253,10 +268,12 @@ start_command(cmd, mask, infd, outfd, a0, a1, a2)
|
||||
}
|
||||
|
||||
void
|
||||
prepare_child(mask, infd, outfd)
|
||||
int mask, infd, outfd;
|
||||
prepare_child(nset, infd, outfd)
|
||||
sigset_t *nset;
|
||||
int infd, outfd;
|
||||
{
|
||||
int i;
|
||||
sigset_t fset;
|
||||
|
||||
/*
|
||||
* All file descriptors other than 0, 1, and 2 are supposed to be
|
||||
@ -267,11 +284,12 @@ prepare_child(mask, infd, outfd)
|
||||
if (outfd >= 0)
|
||||
dup2(outfd, 1);
|
||||
for (i = 1; i <= NSIG; i++)
|
||||
if (mask & sigmask(i))
|
||||
if (sigismember(nset, i))
|
||||
(void) signal(i, SIG_IGN);
|
||||
if ((mask & sigmask(SIGINT)) == 0)
|
||||
if (!sigismember(nset, SIGINT))
|
||||
(void) signal(SIGINT, SIG_DFL);
|
||||
(void) sigsetmask(0);
|
||||
sigfillset(&fset);
|
||||
(void) sigprocmask(SIG_UNBLOCK, &fset, NULL);
|
||||
}
|
||||
|
||||
int
|
||||
@ -345,14 +363,17 @@ int
|
||||
wait_child(pid)
|
||||
int pid;
|
||||
{
|
||||
int mask = sigblock(sigmask(SIGCHLD));
|
||||
sigset_t nset, oset;
|
||||
register struct child *cp = findchild(pid);
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGCHLD);
|
||||
sigprocmask(SIG_BLOCK, &nset, &oset);
|
||||
|
||||
while (!cp->done)
|
||||
sigpause(mask);
|
||||
sigsuspend(&oset);
|
||||
wait_status = cp->status;
|
||||
delchild(cp);
|
||||
sigsetmask(mask);
|
||||
sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
return wait_status.w_status ? -1 : 0;
|
||||
}
|
||||
|
||||
@ -363,12 +384,15 @@ void
|
||||
free_child(pid)
|
||||
int pid;
|
||||
{
|
||||
int mask = sigblock(sigmask(SIGCHLD));
|
||||
sigset_t nset, oset;
|
||||
register struct child *cp = findchild(pid);
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGCHLD);
|
||||
sigprocmask(SIG_BLOCK, &nset, &oset);
|
||||
|
||||
if (cp->done)
|
||||
delchild(cp);
|
||||
else
|
||||
cp->free = 1;
|
||||
sigsetmask(mask);
|
||||
sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
}
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: quit.c,v 1.2 1996/06/11 12:53:48 deraadt Exp $ */
|
||||
/* $NetBSD: quit.c,v 1.5 1996/06/08 19:48:37 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)quit.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: quit.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)quit.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: quit.c,v 1.2 1996/06/11 12:53:48 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -50,7 +56,8 @@ static char rcsid[] = "$Id: quit.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
* The "quit" command.
|
||||
*/
|
||||
int
|
||||
quitcmd()
|
||||
quitcmd(v)
|
||||
void *v;
|
||||
{
|
||||
/*
|
||||
* If we are sourcing, then return 1 so execute() can handle it.
|
||||
@ -70,7 +77,7 @@ void
|
||||
quit()
|
||||
{
|
||||
int mcount, p, modify, autohold, anystat, holdbit, nohold;
|
||||
FILE *ibuf, *obuf, *fbuf, *rbuf, *readstat, *abuf;
|
||||
FILE *ibuf = NULL, *obuf, *fbuf, *rbuf, *readstat = NULL, *abuf;
|
||||
register struct message *mp;
|
||||
register int c;
|
||||
extern char *tempQuit, *tempResid;
|
||||
@ -105,7 +112,14 @@ quit()
|
||||
fbuf = Fopen(mailname, "r");
|
||||
if (fbuf == NULL)
|
||||
goto newmail;
|
||||
flock(fileno(fbuf), LOCK_EX);
|
||||
if (flock(fileno(fbuf), LOCK_EX) == -1) {
|
||||
nolock:
|
||||
perror("Unable to lock mailbox");
|
||||
Fclose(fbuf);
|
||||
return;
|
||||
}
|
||||
if (dot_lock(mailname, 1, stdout, ".") == -1)
|
||||
goto nolock;
|
||||
rbuf = NULL;
|
||||
if (fstat(fileno(fbuf), &minfo) >= 0 && minfo.st_size > mailsize) {
|
||||
printf("New mail has arrived.\n");
|
||||
@ -178,12 +192,14 @@ quit()
|
||||
printf("Held %d message%s in %s\n",
|
||||
p, p == 1 ? "" : "s", mailname);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
if (c == 0) {
|
||||
if (p != 0) {
|
||||
writeback(rbuf);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
goto cream;
|
||||
@ -202,6 +218,7 @@ quit()
|
||||
if ((obuf = Fopen(tempQuit, "w")) == NULL) {
|
||||
perror(tempQuit);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
if ((ibuf = Fopen(tempQuit, "r")) == NULL) {
|
||||
@ -209,6 +226,7 @@ quit()
|
||||
rm(tempQuit);
|
||||
Fclose(obuf);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
rm(tempQuit);
|
||||
@ -222,6 +240,7 @@ quit()
|
||||
Fclose(ibuf);
|
||||
Fclose(obuf);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
Fclose(obuf);
|
||||
@ -230,13 +249,15 @@ quit()
|
||||
perror(mbox);
|
||||
Fclose(ibuf);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (value("append") != NOSTR) {
|
||||
else {
|
||||
if ((obuf = Fopen(mbox, "a")) == NULL) {
|
||||
perror(mbox);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
fchmod(fileno(obuf), 0600);
|
||||
@ -248,6 +269,7 @@ quit()
|
||||
Fclose(ibuf);
|
||||
Fclose(obuf);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -274,6 +296,7 @@ quit()
|
||||
perror(mbox);
|
||||
Fclose(obuf);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
Fclose(obuf);
|
||||
@ -290,6 +313,7 @@ quit()
|
||||
if (p != 0) {
|
||||
writeback(rbuf);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -310,16 +334,20 @@ cream:
|
||||
Fclose(abuf);
|
||||
alter(mailname);
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
}
|
||||
demail();
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
return;
|
||||
|
||||
newmail:
|
||||
printf("Thou hast new mail.\n");
|
||||
if (fbuf != NULL)
|
||||
if (fbuf != NULL) {
|
||||
Fclose(fbuf);
|
||||
dot_unlock(mailname);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -388,7 +416,7 @@ edstop()
|
||||
extern char *tmpdir;
|
||||
register int gotcha, c;
|
||||
register struct message *mp;
|
||||
FILE *obuf, *ibuf, *readstat;
|
||||
FILE *obuf, *ibuf, *readstat = NULL;
|
||||
struct stat statb;
|
||||
char *tempname;
|
||||
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: rcv.h,v 1.2 1996/06/11 12:53:48 deraadt Exp $ */
|
||||
/* $NetBSD: rcv.h,v 1.4 1996/06/08 19:48:38 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -30,8 +33,8 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)rcv.h 8.1 (Berkeley) 6/6/93
|
||||
* $Id: rcv.h,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $
|
||||
* @(#)rcv.h 8.1 (Berkeley) 6/6/93
|
||||
* $NetBSD: rcv.h,v 1.4 1996/06/08 19:48:38 christos Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: send.c,v 1.2 1996/06/11 12:53:50 deraadt Exp $ */
|
||||
/* $NetBSD: send.c,v 1.6 1996/06/08 19:48:39 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)send.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: send.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#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 $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -62,11 +68,11 @@ send(mp, obuf, doign, prefix)
|
||||
long count;
|
||||
register FILE *ibuf;
|
||||
char line[LINESIZE];
|
||||
int ishead, infld, ignoring, dostat, firstline;
|
||||
int ishead, infld, ignoring = 0, dostat, firstline;
|
||||
register char *cp, *cp2;
|
||||
register int c;
|
||||
register int c = 0;
|
||||
int length;
|
||||
int prefixlen;
|
||||
int prefixlen = 0;
|
||||
|
||||
/*
|
||||
* Compute the prefix string, without trailing whitespace
|
||||
@ -273,9 +279,10 @@ mail(to, cc, bcc, smopts, subject)
|
||||
* the mail routine below.
|
||||
*/
|
||||
int
|
||||
sendmail(str)
|
||||
char *str;
|
||||
sendmail(v)
|
||||
void *v;
|
||||
{
|
||||
char *str = v;
|
||||
struct header head;
|
||||
|
||||
head.h_to = extract(str, GTO);
|
||||
@ -373,9 +380,15 @@ mail1(hp, printheaders)
|
||||
goto out;
|
||||
}
|
||||
if (pid == 0) {
|
||||
prepare_child(sigmask(SIGHUP)|sigmask(SIGINT)|sigmask(SIGQUIT)|
|
||||
sigmask(SIGTSTP)|sigmask(SIGTTIN)|sigmask(SIGTTOU),
|
||||
fileno(mtf), -1);
|
||||
sigset_t nset;
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, SIGHUP);
|
||||
sigaddset(&nset, SIGINT);
|
||||
sigaddset(&nset, SIGQUIT);
|
||||
sigaddset(&nset, SIGTSTP);
|
||||
sigaddset(&nset, SIGTTIN);
|
||||
sigaddset(&nset, SIGTTOU);
|
||||
prepare_child(&nset, fileno(mtf), -1);
|
||||
if ((cp = value("sendmail")) != NOSTR)
|
||||
cp = expand(cp);
|
||||
else
|
||||
@ -539,8 +552,7 @@ savemail(name, fi)
|
||||
register FILE *fo;
|
||||
char buf[BUFSIZ];
|
||||
register i;
|
||||
time_t now, time();
|
||||
char *ctime();
|
||||
time_t now;
|
||||
|
||||
if ((fo = Fopen(name, "a")) == NULL) {
|
||||
perror(name);
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: strings.c,v 1.2 1996/06/11 12:53:50 deraadt Exp $ */
|
||||
/* $NetBSD: strings.c,v 1.5 1996/06/08 19:48:40 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)strings.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: strings.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#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 $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: temp.c,v 1.2 1996/06/11 12:53:51 deraadt Exp $ */
|
||||
/* $NetBSD: temp.c,v 1.5 1996/06/08 19:48:42 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)temp.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: temp.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)temp.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: temp.c,v 1.2 1996/06/11 12:53:51 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
@ -57,7 +63,6 @@ void
|
||||
tinit()
|
||||
{
|
||||
register char *cp;
|
||||
int len;
|
||||
|
||||
if ((tmpdir = getenv("TMPDIR")) == NULL) {
|
||||
tmpdir = _PATH_TMP;
|
||||
@ -81,11 +86,9 @@ tinit()
|
||||
}
|
||||
} else {
|
||||
if ((cp = username()) == NOSTR) {
|
||||
myname = "ubluit";
|
||||
if (rcvmode) {
|
||||
printf("Who are you!?\n");
|
||||
myname = "nobody";
|
||||
if (rcvmode)
|
||||
exit(1);
|
||||
}
|
||||
} else
|
||||
myname = savestr(cp);
|
||||
}
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $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 $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)tty.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: tty.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)tty.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: tty.c,v 1.2 1996/06/11 12:53:52 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -44,6 +50,7 @@ static char rcsid[] = "$Id: tty.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
|
||||
#include "rcv.h"
|
||||
#include "extern.h"
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
static cc_t c_erase; /* Current erase char */
|
||||
static cc_t c_kill; /* Current kill char */
|
||||
@ -71,7 +78,10 @@ grabh(hp, gflags)
|
||||
sig_t savettou;
|
||||
sig_t savettin;
|
||||
int errs;
|
||||
void ttyint();
|
||||
#ifdef __GNUC__
|
||||
/* Avoid longjmp clobbering */
|
||||
(void) &saveint;
|
||||
#endif
|
||||
|
||||
savetstp = signal(SIGTSTP, SIG_DFL);
|
||||
savettou = signal(SIGTTOU, SIG_DFL);
|
||||
@ -157,8 +167,12 @@ readtty(pr, src)
|
||||
{
|
||||
char ch, canonb[BUFSIZ];
|
||||
int c;
|
||||
register char *cp, *cp2;
|
||||
void ttystop();
|
||||
char *cp, *cp2;
|
||||
#if __GNUC__
|
||||
/* Avoid longjmp clobbering */
|
||||
(void) &c;
|
||||
(void) &cp2;
|
||||
#endif
|
||||
|
||||
fputs(pr, stdout);
|
||||
fflush(stdout);
|
||||
@ -175,7 +189,7 @@ readtty(pr, src)
|
||||
fflush(stdout);
|
||||
#else
|
||||
cp = src == NOSTR ? "" : src;
|
||||
while (c = *cp++) {
|
||||
while ((c = *cp++) != '\0') {
|
||||
if ((c_erase != _POSIX_VDISABLE && c == c_erase) ||
|
||||
(c_kill != _POSIX_VDISABLE && c == c_kill)) {
|
||||
ch = '\\';
|
||||
@ -258,10 +272,13 @@ ttystop(s)
|
||||
int s;
|
||||
{
|
||||
sig_t old_action = signal(s, SIG_DFL);
|
||||
sigset_t nset;
|
||||
|
||||
sigsetmask(sigblock(0) & ~sigmask(s));
|
||||
sigemptyset(&nset);
|
||||
sigaddset(&nset, s);
|
||||
sigprocmask(SIG_BLOCK, &nset, NULL);
|
||||
kill(0, s);
|
||||
sigblock(sigmask(s));
|
||||
sigprocmask(SIG_UNBLOCK, &nset, NULL);
|
||||
signal(s, old_action);
|
||||
longjmp(rewrite, 1);
|
||||
}
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: v7.local.c,v 1.2 1996/06/11 12:53:53 deraadt Exp $ */
|
||||
/* $NetBSD: v7.local.c,v 1.7 1996/06/08 19:48:44 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)v7.local.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: v7.local.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)v7.local.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: v7.local.c,v 1.2 1996/06/11 12:53:53 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -83,8 +89,12 @@ char *
|
||||
username()
|
||||
{
|
||||
char *np;
|
||||
uid_t uid;
|
||||
|
||||
if ((np = getenv("USER")) != NOSTR)
|
||||
return np;
|
||||
return getname(getuid());
|
||||
if ((np = getname(uid = getuid())) != NOSTR)
|
||||
return np;
|
||||
printf("Cannot associate a name with uid %d\n", uid);
|
||||
return NOSTR;
|
||||
}
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: vars.c,v 1.2 1996/06/11 12:53:53 deraadt Exp $ */
|
||||
/* $NetBSD: vars.c,v 1.4 1996/06/08 19:48:45 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)vars.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: vars.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#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 $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include "rcv.h"
|
||||
|
@ -1,3 +1,6 @@
|
||||
/* $OpenBSD: version.c,v 1.2 1996/06/11 12:53:54 deraadt Exp $ */
|
||||
/* $NetBSD: version.c,v 1.4 1996/06/08 19:48:46 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -32,8 +35,11 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "from: @(#)version.c 8.1 (Berkeley) 6/6/93";
|
||||
static char rcsid[] = "$Id: version.c,v 1.1.1.1 1995/10/18 08:45:39 deraadt Exp $";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)version.c 8.1 (Berkeley) 6/6/93";
|
||||
#else
|
||||
static char rcsid[] = "$OpenBSD: version.c,v 1.2 1996/06/11 12:53:54 deraadt Exp $";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user