version 1.62, 2001/03/21 12:33:33 |
version 1.63, 2001/03/28 19:56:23 |
|
|
char *buf; |
char *buf; |
} BUF; |
} BUF; |
|
|
extern int iamremote; |
|
|
|
BUF *allocbuf(BUF *, int, int); |
BUF *allocbuf(BUF *, int, int); |
char *colon(char *); |
char *colon(char *); |
void lostconn(int); |
void lostconn(int); |
|
|
#define CMDNEEDS 64 |
#define CMDNEEDS 64 |
char cmd[CMDNEEDS]; /* must hold "rcp -r -p -d\0" */ |
char cmd[CMDNEEDS]; /* must hold "rcp -r -p -d\0" */ |
|
|
int main(int, char *[]); |
|
int response(void); |
int response(void); |
void rsource(char *, struct stat *); |
void rsource(char *, struct stat *); |
void sink(int, char *[]); |
void sink(int, char *[]); |
|
|
iamremote = 1; |
iamremote = 1; |
tflag = 1; |
tflag = 1; |
break; |
break; |
case '?': |
|
default: |
default: |
usage(); |
usage(); |
} |
} |
|
|
closedir(dirp); |
closedir(dirp); |
return; |
return; |
} |
} |
while ((dp = readdir(dirp))) { |
while ((dp = readdir(dirp)) != NULL) { |
if (dp->d_ino == 0) |
if (dp->d_ino == 0) |
continue; |
continue; |
if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) |
if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) |
|
|
if (*cp++ != ' ') |
if (*cp++ != ' ') |
SCREWUP("mode not delimited"); |
SCREWUP("mode not delimited"); |
|
|
for (size = 0; *cp >= '0' && *cp <= '9';) |
for (size = 0; isdigit(*cp);) |
size = size * 10 + (*cp++ - '0'); |
size = size * 10 + (*cp++ - '0'); |
if (*cp++ != ' ') |
if (*cp++ != ' ') |
SCREWUP("size not delimited"); |
SCREWUP("size not delimited"); |
|
|
continue; |
continue; |
} else if (j <= 0) { |
} else if (j <= 0) { |
run_err("%s", j ? strerror(errno) : |
run_err("%s", j ? strerror(errno) : |
"dropped connection"); |
"dropped connection"); |
exit(1); |
exit(1); |
} |
} |
amt -= j; |
amt -= j; |
|
|
if (exists || omode != mode) |
if (exists || omode != mode) |
if (fchmod(ofd, omode)) |
if (fchmod(ofd, omode)) |
run_err("%s: set mode: %s", |
run_err("%s: set mode: %s", |
np, strerror(errno)); |
np, strerror(errno)); |
} else { |
} else { |
if (!exists && omode != mode) |
if (!exists && omode != mode) |
if (fchmod(ofd, omode & ~mask)) |
if (fchmod(ofd, omode & ~mask)) |
run_err("%s: set mode: %s", |
run_err("%s: set mode: %s", |
np, strerror(errno)); |
np, strerror(errno)); |
} |
} |
if (close(ofd) == -1) { |
if (close(ofd) == -1) { |
wrerr = YES; |
wrerr = YES; |
|
|
setimes = 0; |
setimes = 0; |
if (utimes(np, tv) < 0) { |
if (utimes(np, tv) < 0) { |
run_err("%s: set times: %s", |
run_err("%s: set times: %s", |
np, strerror(errno)); |
np, strerror(errno)); |
wrerr = DISPLAYED; |
wrerr = DISPLAYED; |
} |
} |
} |
} |