version 1.13, 2003/08/16 00:24:51 |
version 1.14, 2004/07/22 01:25:24 |
|
|
dired(int f, int n) |
dired(int f, int n) |
{ |
{ |
static int inited = 0; |
static int inited = 0; |
char dirname[NFILEN]; |
char dirname[NFILEN], *bufp; |
BUFFER *bp; |
BUFFER *bp; |
|
|
if (inited == 0) { |
if (inited == 0) { |
|
|
} |
} |
|
|
dirname[0] = '\0'; |
dirname[0] = '\0'; |
if (eread("Dired: ", dirname, NFILEN, EFNEW | EFCR) == ABORT) |
if ((bufp = eread("Dired: ", dirname, NFILEN, EFNEW | EFCR)) == NULL) |
return ABORT; |
return ABORT; |
if ((bp = dired_(dirname)) == NULL) |
if ((bp = dired_(bufp)) == NULL) |
return FALSE; |
return FALSE; |
bp->b_modes[0] = name_mode("fundamental"); |
bp->b_modes[0] = name_mode("fundamental"); |
bp->b_modes[1] = name_mode("dired"); |
bp->b_modes[1] = name_mode("dired"); |
|
|
int |
int |
d_otherwindow(int f, int n) |
d_otherwindow(int f, int n) |
{ |
{ |
char dirname[NFILEN]; |
char dirname[NFILEN], *bufp; |
BUFFER *bp; |
BUFFER *bp; |
MGWIN *wp; |
MGWIN *wp; |
|
|
dirname[0] = '\0'; |
dirname[0] = '\0'; |
if (eread("Dired other window: ", dirname, NFILEN, EFNEW | EFCR) |
if ((bufp = eread("Dired other window: ", dirname, NFILEN, |
== ABORT) |
EFNEW | EFCR)) == NULL) |
return ABORT; |
return ABORT; |
if ((bp = dired_(dirname)) == NULL) |
if ((bp = dired_(bufp)) == NULL) |
return FALSE; |
return FALSE; |
if ((wp = popbuf(bp)) == NULL) |
if ((wp = popbuf(bp)) == NULL) |
return FALSE; |
return FALSE; |
|
|
int |
int |
d_copy(int f, int n) |
d_copy(int f, int n) |
{ |
{ |
char frname[NFILEN], toname[NFILEN]; |
char frname[NFILEN], toname[NFILEN], *bufp; |
int stat, off; |
int stat; |
|
int off; |
BUFFER *bp; |
BUFFER *bp; |
|
|
if (d_makename(curwp->w_dotp, frname, sizeof frname) != FALSE) { |
if (d_makename(curwp->w_dotp, frname, sizeof frname) != FALSE) { |
|
|
ewprintf("too long directory name"); |
ewprintf("too long directory name"); |
return (FALSE); |
return (FALSE); |
} |
} |
if ((stat = eread("Copy %s to: ", toname + off, sizeof toname - off, |
if ((bufp = eread("Copy %s to: ", toname + off, sizeof toname - off, |
EFNEW | EFCR, basename(frname))) != TRUE) |
EFNEW | EFCR, basename(frname))) == NULL) |
return (stat); |
return ABORT; |
|
else if (bufp[0] == '\0') |
|
return NULL; |
stat = (copy(frname, toname) >= 0) ? TRUE : FALSE; |
stat = (copy(frname, toname) >= 0) ? TRUE : FALSE; |
if (stat != TRUE) |
if (stat != TRUE) |
return (stat); |
return (stat); |
|
|
int |
int |
d_rename(int f, int n) |
d_rename(int f, int n) |
{ |
{ |
char frname[NFILEN], toname[NFILEN]; |
char frname[NFILEN], toname[NFILEN], *bufp; |
int stat, off; |
int stat, off; |
BUFFER *bp; |
BUFFER *bp; |
|
|
|
|
ewprintf("too long directory name"); |
ewprintf("too long directory name"); |
return (FALSE); |
return (FALSE); |
} |
} |
if ((stat = eread("Rename %s to: ", toname + off, |
if ((bufp = eread("Rename %s to: ", toname + off, |
sizeof toname - off, EFNEW | EFCR, basename(frname))) != TRUE) |
sizeof toname - off, EFNEW | EFCR, basename(frname))) == NULL) |
return stat; |
return ABORT; |
|
else if (bufp[0] == '\0') |
|
return FALSE; |
stat = (rename(frname, toname) >= 0) ? TRUE : FALSE; |
stat = (rename(frname, toname) >= 0) ? TRUE : FALSE; |
if (stat != TRUE) |
if (stat != TRUE) |
return (stat); |
return (stat); |
|
|
int |
int |
d_shell_command(int f, int n) |
d_shell_command(int f, int n) |
{ |
{ |
char command[512], fname[MAXPATHLEN], buf[BUFSIZ], *cp; |
char command[512], fname[MAXPATHLEN], buf[BUFSIZ], *bufp, *cp; |
int infd, fds[2]; |
int infd, fds[2]; |
pid_t pid; |
pid_t pid; |
struct sigaction olda, newa; |
struct sigaction olda, newa; |
|
|
} |
} |
|
|
command[0] = '\0'; |
command[0] = '\0'; |
if (eread("! on %s: ", command, sizeof command, 0, |
if ((bufp = eread("! on %s: ", command, sizeof command, 0, |
basename(fname)) == ABORT) |
basename(fname))) == NULL) |
return (ABORT); |
return (ABORT); |
infd = open(fname, O_RDONLY); |
infd = open(fname, O_RDONLY); |
if (infd == -1) { |
if (infd == -1) { |
|
|
dup2(infd, STDIN_FILENO); |
dup2(infd, STDIN_FILENO); |
dup2(fds[1], STDOUT_FILENO); |
dup2(fds[1], STDOUT_FILENO); |
dup2(fds[1], STDERR_FILENO); |
dup2(fds[1], STDERR_FILENO); |
execl("/bin/sh", "sh", "-c", command, (char *)NULL); |
execl("/bin/sh", "sh", "-c", bufp, (char *)NULL); |
exit(1); |
exit(1); |
default: |
default: |
close(infd); |
close(infd); |
|
|
int |
int |
d_create_directory(int f, int n) |
d_create_directory(int f, int n) |
{ |
{ |
char tocreate[MAXPATHLEN], off; |
char tocreate[MAXPATHLEN], *bufp; |
int stat; |
ssize_t off; |
BUFFER *bp; |
BUFFER *bp; |
|
|
off = strlcpy(tocreate, curbp->b_fname, sizeof tocreate); |
off = strlcpy(tocreate, curbp->b_fname, sizeof tocreate); |
if (off >= sizeof tocreate - 1) |
if (off >= sizeof tocreate - 1) |
return (FALSE); |
return (FALSE); |
if ((stat = ereply("Create directory: ", tocreate + off, |
if ((bufp = ereply("Create directory: ", tocreate + off, |
sizeof tocreate - off)) |
sizeof tocreate - off)) == NULL) |
!= TRUE) |
return (ABORT); |
return (stat); |
else if (bufp[0] == '\0') |
|
return FALSE; |
if (mkdir(tocreate, 0755) == -1) { |
if (mkdir(tocreate, 0755) == -1) { |
ewprintf("Creating directory: %s, %s", strerror(errno), |
ewprintf("Creating directory: %s, %s", strerror(errno), |
tocreate); |
tocreate); |