version 1.7, 1997/07/13 23:53:59 |
version 1.8, 1997/07/14 00:24:26 |
|
|
break; |
break; |
if (prevfile[0] == 0) { |
if (prevfile[0] == 0) { |
puts("No previous file"); |
puts("No previous file"); |
return(NOSTR); |
return(NULL); |
} |
} |
return(savestr(prevfile)); |
return(savestr(prevfile)); |
case '&': |
case '&': |
if (name[1] == 0 && (name = value("MBOX")) == NOSTR) |
if (name[1] == 0 && (name = value("MBOX")) == NULL) |
name = "~/mbox"; |
name = "~/mbox"; |
/* fall through */ |
/* fall through */ |
} |
} |
|
|
return(name); |
return(name); |
} |
} |
snprintf(cmdbuf, sizeof(cmdbuf), "echo %s", name); |
snprintf(cmdbuf, sizeof(cmdbuf), "echo %s", name); |
if ((shell = value("SHELL")) == NOSTR) |
if ((shell = value("SHELL")) == NULL) |
shell = _PATH_CSHELL; |
shell = _PATH_CSHELL; |
pid = start_command(shell, 0, -1, pivec[1], "-c", cmdbuf, NOSTR); |
pid = start_command(shell, 0, -1, pivec[1], "-c", cmdbuf, NULL); |
if (pid < 0) { |
if (pid < 0) { |
(void)close(pivec[0]); |
(void)close(pivec[0]); |
(void)close(pivec[1]); |
(void)close(pivec[1]); |
return(NOSTR); |
return(NULL); |
} |
} |
(void)close(pivec[1]); |
(void)close(pivec[1]); |
l = read(pivec[0], xname, PATHSIZE); |
l = read(pivec[0], xname, PATHSIZE); |
(void)close(pivec[0]); |
(void)close(pivec[0]); |
if (wait_child(pid) < 0 && wait_status.w_termsig != SIGPIPE) { |
if (wait_child(pid) < 0 && wait_status.w_termsig != SIGPIPE) { |
fprintf(stderr, "\"%s\": Expansion failed.\n", name); |
fprintf(stderr, "\"%s\": Expansion failed.\n", name); |
return(NOSTR); |
return(NULL); |
} |
} |
if (l < 0) { |
if (l < 0) { |
warn("read"); |
warn("read"); |
return(NOSTR); |
return(NULL); |
} |
} |
if (l == 0) { |
if (l == 0) { |
fprintf(stderr, "\"%s\": No match.\n", name); |
fprintf(stderr, "\"%s\": No match.\n", name); |
return(NOSTR); |
return(NULL); |
} |
} |
if (l == PATHSIZE) { |
if (l == PATHSIZE) { |
fprintf(stderr, "\"%s\": Expansion buffer overflow.\n", name); |
fprintf(stderr, "\"%s\": Expansion buffer overflow.\n", name); |
return(NOSTR); |
return(NULL); |
} |
} |
xname[l] = '\0'; |
xname[l] = '\0'; |
for (cp = &xname[l-1]; *cp == '\n' && cp > xname; cp--) |
for (cp = &xname[l-1]; *cp == '\n' && cp > xname; cp--) |
|
|
cp[1] = '\0'; |
cp[1] = '\0'; |
if (strchr(xname, ' ') && stat(xname, &sbuf) < 0) { |
if (strchr(xname, ' ') && stat(xname, &sbuf) < 0) { |
fprintf(stderr, "\"%s\": Ambiguous.\n", name); |
fprintf(stderr, "\"%s\": Ambiguous.\n", name); |
return(NOSTR); |
return(NULL); |
} |
} |
return(savestr(xname)); |
return(savestr(xname)); |
} |
} |
|
|
{ |
{ |
char *folder; |
char *folder; |
|
|
if ((folder = value("folder")) == NOSTR) |
if ((folder = value("folder")) == NULL) |
return(-1); |
return(-1); |
if (*folder == '/') { |
if (*folder == '/') { |
strncpy(name, folder, namelen-1); |
strncpy(name, folder, namelen-1); |
|
|
{ |
{ |
register char *cp; |
register char *cp; |
|
|
if ((cp = value("DEAD")) == NOSTR || (cp = expand(cp)) == NOSTR) |
if ((cp = value("DEAD")) == NULL || (cp = expand(cp)) == NULL) |
cp = expand("~/dead.letter"); |
cp = expand("~/dead.letter"); |
else if (*cp != '/') { |
else if (*cp != '/') { |
char buf[PATHSIZE]; |
char buf[PATHSIZE]; |