version 1.6, 1998/05/18 19:12:29 |
version 1.7, 1998/06/26 21:21:00 |
|
|
*/ |
*/ |
|
|
#ifndef lint |
#ifndef lint |
|
#if 0 |
static char RCSid[] = |
static char RCSid[] = |
|
"$From: client.c,v 6.80 1996/02/28 20:34:27 mcooper Exp $"; |
|
#else |
|
static char RCSid[] = |
"$OpenBSD$"; |
"$OpenBSD$"; |
|
#endif |
|
|
static char sccsid[] = "@(#)client.c"; |
static char sccsid[] = "@(#)client.c"; |
|
|
|
|
{ |
{ |
register struct subcmd *sc; |
register struct subcmd *sc; |
register struct namelist *f; |
register struct namelist *f; |
register char **cpp; |
|
char *file; |
|
int first = TRUE; |
int first = TRUE; |
|
|
for (sc = cmd->c_cmds; sc != NULL; sc = sc->sc_next) { |
for (sc = cmd->c_cmds; sc != NULL; sc = sc->sc_next) { |
|
|
else |
else |
*lp->target = CNULL; |
*lp->target = CNULL; |
|
|
return((struct linkbuf *) NULL); |
return(NULL); |
} |
} |
|
|
/* |
/* |
|
|
|
|
optarget = ptarget; |
optarget = ptarget; |
len = ptarget - target; |
len = ptarget - target; |
while (dp = readdir(d)) { |
while ((dp = readdir(d))) { |
if (!strcmp(dp->d_name, ".") || |
if (!strcmp(dp->d_name, ".") || |
!strcmp(dp->d_name, "..")) |
!strcmp(dp->d_name, "..")) |
continue; |
continue; |
|
|
if (ptarget[-1] != '/') |
if (ptarget[-1] != '/') |
*ptarget++ = '/'; |
*ptarget++ = '/'; |
cp = dp->d_name; |
cp = dp->d_name; |
while (*ptarget++ = *cp++) |
while ((*ptarget++ = *cp++)) |
; |
; |
ptarget--; |
ptarget--; |
if (sendit(dp->d_name, opts, destdir) > 0) |
if (sendit(dp->d_name, opts, destdir) > 0) |
|
|
char *group; |
char *group; |
int destdir; |
int destdir; |
{ |
{ |
int sizerr, f, n; |
int f, n; |
static char tbuf[BUFSIZ]; |
static char tbuf[BUFSIZ]; |
char lbuf[MAXPATHLEN]; |
char lbuf[MAXPATHLEN]; |
u_char *s; |
u_char *s; |
|
|
/* |
/* |
* Gather and send additional link info |
* Gather and send additional link info |
*/ |
*/ |
sizerr = (readlink(target, lbuf, sizeof(lbuf)-1) != stb->st_size); |
if ((n = readlink(target, lbuf, sizeof(lbuf)-1)) != -1) |
|
lbuf[n] = '\0'; |
|
else { |
|
error("%s: readlink failed", target); |
|
err(); |
|
} |
(void) sprintf(tbuf, "%.*s", (int) stb->st_size, lbuf); |
(void) sprintf(tbuf, "%.*s", (int) stb->st_size, lbuf); |
(void) sendcmd(C_NONE, "%s\n", tbuf); |
(void) sendcmd(C_NONE, "%s\n", tbuf); |
|
|
if (sizerr) { |
if (n != stb->st_size) { |
error("%s: file changed size", target); |
error("%s: file changed size", target); |
err(); |
err(); |
} else |
} else |
|
|
/* |
/* |
* Parse size |
* Parse size |
*/ |
*/ |
size = strtol(cp, (char **) &cp, 10); |
size = strtol(cp, (char **)&cp, 10); |
if (*cp++ != ' ') { |
if (*cp++ != ' ') { |
error("update: size not delimited"); |
error("update: size not delimited"); |
return(US_NOTHING); |
return(US_NOTHING); |
|
|
/* |
/* |
* Parse mtime |
* Parse mtime |
*/ |
*/ |
mtime = strtol(cp, (char **) &cp, 10); |
mtime = strtol(cp, (char **)&cp, 10); |
if (*cp++ != ' ') { |
if (*cp++ != ' ') { |
error("update: mtime not delimited"); |
error("update: mtime not delimited"); |
return(US_NOTHING); |
return(US_NOTHING); |
|
|
/* |
/* |
* Parse remote file mode |
* Parse remote file mode |
*/ |
*/ |
rmode = strtol(cp, (char **) &cp, 8); |
rmode = strtol(cp, (char **)&cp, 8); |
if (cp && *cp) |
if (cp && *cp) |
++cp; |
++cp; |
|
|
|
|
/* |
/* |
* Parse remote file group |
* Parse remote file group |
*/ |
*/ |
group = strtok((char *) NULL, " "); |
group = strtok(NULL, " "); |
if (group == NULL) { |
if (group == NULL) { |
error("update: group not delimited"); |
error("update: group not delimited"); |
return(US_NOTHING); |
return(US_NOTHING); |
|
|
(void) unlink(statfile); |
(void) unlink(statfile); |
#endif |
#endif |
|
|
if (file = getnotifyfile()) |
if ((file = getnotifyfile())) |
(void) unlink(file); |
(void) unlink(file); |
} |
} |
|
|