projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hash() could return negative values.
[unix-history]
/
usr
/
src
/
usr.bin
/
mail
/
cmd3.c
diff --git
a/usr/src/usr.bin/mail/cmd3.c
b/usr/src/usr.bin/mail/cmd3.c
index
a66c81d
..
269cd4a
100644
(file)
--- a/
usr/src/usr.bin/mail/cmd3.c
+++ b/
usr/src/usr.bin/mail/cmd3.c
@@
-9,7
+9,7
@@
* Still more user commands.
*/
* Still more user commands.
*/
-static char *SccsId = "@(#)cmd3.c 2.
5
%G%";
+static char *SccsId = "@(#)cmd3.c 2.
11
%G%";
/*
* Process a shell escape by saving signals, ignoring signals,
/*
* Process a shell escape by saving signals, ignoring signals,
@@
-33,6
+33,7
@@
shell(str)
sig[t-2] = sigset(t, SIG_IGN);
t = vfork();
if (t == 0) {
sig[t-2] = sigset(t, SIG_IGN);
t = vfork();
if (t == 0) {
+ sigchild();
for (t = 2; t < 4; t++)
if (sig[t-2] != SIG_IGN)
sigsys(t, SIG_DFL);
for (t = 2; t < 4; t++)
if (sig[t-2] != SIG_IGN)
sigsys(t, SIG_DFL);
@@
-66,6
+67,7
@@
dosh(str)
sig[t-2] = sigset(t, SIG_IGN);
t = vfork();
if (t == 0) {
sig[t-2] = sigset(t, SIG_IGN);
t = vfork();
if (t == 0) {
+ sigchild();
for (t = 2; t < 4; t++)
if (sig[t-2] != SIG_IGN)
sigsys(t, SIG_DFL);
for (t = 2; t < 4; t++)
if (sig[t-2] != SIG_IGN)
sigsys(t, SIG_DFL);
@@
-147,7
+149,7
@@
help()
register FILE *f;
if ((f = fopen(HELPFILE, "r")) == NULL) {
register FILE *f;
if ((f = fopen(HELPFILE, "r")) == NULL) {
- p
rintf("No help just now.\n"
);
+ p
error(HELPFILE
);
return(1);
}
while ((c = getc(f)) != EOF)
return(1);
}
while ((c = getc(f)) != EOF)
@@
-188,10
+190,10
@@
respond(msgvec)
int *msgvec;
{
struct message *mp;
int *msgvec;
{
struct message *mp;
- char *cp, buf[2 * LINESIZE], *rcv, *replyto, **ap;
+ char *cp, *cp2, *cp3, *rcv, *replyto;
+ char buf[2 * LINESIZE], **ap;
struct name *np;
struct header head;
struct name *np;
struct header head;
- char *netmap();
if (msgvec[1] != 0) {
printf("Sorry, can't reply to multiple messages at once\n");
if (msgvec[1] != 0) {
printf("Sorry, can't reply to multiple messages at once\n");
@@
-216,10
+218,10
@@
respond(msgvec)
* Delete my name from the reply list,
* and with it, all my alternate names.
*/
* Delete my name from the reply list,
* and with it, all my alternate names.
*/
- np = delname(np, myname);
- if (altnames
!= 0
)
+ np = delname(np, myname
, icequal
);
+ if (altnames)
for (ap = altnames; *ap; ap++)
for (ap = altnames; *ap; ap++)
- np = delname(np, *ap);
+ np = delname(np, *ap
, icequal
);
head.h_seq = 1;
cp = detract(np, 0);
if (cp != NOSTR && replyto == NOSTR) {
head.h_seq = 1;
cp = detract(np, 0);
if (cp != NOSTR && replyto == NOSTR) {
@@
-246,10
+248,10
@@
respond(msgvec)
if (cp != NOSTR) {
np = elide(extract(cp, GCC));
mapf(np, rcv);
if (cp != NOSTR) {
np = elide(extract(cp, GCC));
mapf(np, rcv);
- np = delname(np, myname);
+ np = delname(np, myname
, icequal
);
if (altnames != 0)
for (ap = altnames; *ap; ap++)
if (altnames != 0)
for (ap = altnames; *ap; ap++)
- np = delname(np, *ap);
+ np = delname(np, *ap
, icequal
);
head.h_cc = detract(np, 0);
}
}
head.h_cc = detract(np, 0);
}
}
@@
-319,7
+321,7
@@
messize(msgvec)
for (ip = msgvec; *ip != NULL; ip++) {
mesg = *ip;
mp = &message[mesg-1];
for (ip = msgvec; *ip != NULL; ip++) {
mesg = *ip;
mp = &message[mesg-1];
- printf("%d: %
d\n", mesg, msize(mp)
);
+ printf("%d: %
ld\n", mesg, mp->m_size
);
}
return(0);
}
}
return(0);
}
@@
-530,6
+532,7
@@
file(argv)
{
register char *cp;
char fname[BUFSIZ];
{
register char *cp;
char fname[BUFSIZ];
+ int edit;
if (argv[0] == NOSTR) {
newfileinfo();
if (argv[0] == NOSTR) {
newfileinfo();
@@
-546,11
+549,13
@@
file(argv)
* string -- reads the given file
*/
* string -- reads the given file
*/
- cp = getfilename(argv[0]);
+ cp = getfilename(argv[0]
, &edit
);
if (cp == NOSTR)
return(-1);
if (cp == NOSTR)
return(-1);
- if (setfile(cp, 1))
+ if (setfile(cp, edit)) {
+ perror(cp);
return(-1);
return(-1);
+ }
newfileinfo();
}
newfileinfo();
}
@@
-568,15
+573,22
@@
file(argv)
char prevfile[PATHSIZE];
char *
char prevfile[PATHSIZE];
char *
-getfilename(name)
+getfilename(name
, aedit
)
char *name;
char *name;
+ int *aedit;
{
register char *cp;
char savename[BUFSIZ];
char oldmailname[BUFSIZ];
{
register char *cp;
char savename[BUFSIZ];
char oldmailname[BUFSIZ];
+ /*
+ * Assume we will be in "edit file" mode, until
+ * proven wrong.
+ */
+ *aedit = 1;
switch (*name) {
case '%':
switch (*name) {
case '%':
+ *aedit = 0;
strcpy(prevfile, mailname);
if (name[1] != 0) {
strcpy(savename, myname);
strcpy(prevfile, mailname);
if (name[1] != 0) {
strcpy(savename, myname);