fix merge botch

This commit is contained in:
Damien Miller 2015-01-15 02:35:50 +11:00
parent 0cdc5a3eb6
commit 83b9678a62
1 changed files with 6 additions and 70 deletions

View File

@ -969,9 +969,9 @@ process_fsetstat(u_int32_t id)
if (a.flags & SSH2_FILEXFER_ATTR_PERMISSIONS) { if (a.flags & SSH2_FILEXFER_ATTR_PERMISSIONS) {
logit("set \"%s\" mode %04o", name, a.perm); logit("set \"%s\" mode %04o", name, a.perm);
#ifdef HAVE_FCHMOD #ifdef HAVE_FCHMOD
ret = fchmod(fd, a->perm & 07777); r = fchmod(fd, a.perm & 07777);
#else #else
ret = chmod(name, a->perm & 07777); r = chmod(name, a.perm & 07777);
#endif #endif
if (r == -1) if (r == -1)
status = errno_to_portable(errno); status = errno_to_portable(errno);
@ -984,9 +984,9 @@ process_fsetstat(u_int32_t id)
localtime(&t)); localtime(&t));
logit("set \"%s\" modtime %s", name, buf); logit("set \"%s\" modtime %s", name, buf);
#ifdef HAVE_FUTIMES #ifdef HAVE_FUTIMES
ret = futimes(fd, attrib_to_tv(a)); r = futimes(fd, attrib_to_tv(&a));
#else #else
ret = utimes(name, attrib_to_tv(a)); r = utimes(name, attrib_to_tv(&a));
#endif #endif
if (r == -1) if (r == -1)
status = errno_to_portable(errno); status = errno_to_portable(errno);
@ -995,9 +995,9 @@ process_fsetstat(u_int32_t id)
logit("set \"%s\" owner %lu group %lu", name, logit("set \"%s\" owner %lu group %lu", name,
(u_long)a.uid, (u_long)a.gid); (u_long)a.uid, (u_long)a.gid);
#ifdef HAVE_FCHOWN #ifdef HAVE_FCHOWN
ret = fchown(fd, a->uid, a->gid); r = fchown(fd, a.uid, a.gid);
#else #else
ret = chown(name, a->uid, a->gid); r = chown(name, a.uid, a.gid);
#endif #endif
if (r == -1) if (r == -1)
status = errno_to_portable(errno); status = errno_to_portable(errno);
@ -1005,70 +1005,6 @@ process_fsetstat(u_int32_t id)
} }
send_status(id, status); send_status(id, status);
} }
static void
process_fsetstat(u_int32_t id)
{
Attrib a;
int handle, fd, r;
int status = SSH2_FX_OK;
if ((r = get_handle(iqueue, &handle)) != 0 ||
(r = decode_attrib(iqueue, &a)) != 0)
fatal("%s: buffer error: %s", __func__, ssh_err(r));
debug("request %u: fsetstat handle %d", id, handle);
fd = handle_to_fd(handle);
if (fd < 0)
status = SSH2_FX_FAILURE;
else {
char *name = handle_to_name(handle);
if (a->flags & SSH2_FILEXFER_ATTR_SIZE) {
logit("set \"%s\" size %llu",
name, (unsigned long long)a->size);
ret = ftruncate(fd, a->size);
if (ret == -1)
status = errno_to_portable(errno);
}
if (a->flags & SSH2_FILEXFER_ATTR_PERMISSIONS) {
logit("set \"%s\" mode %04o", name, a->perm);
#ifdef HAVE_FCHMOD
ret = fchmod(fd, a->perm & 07777);
#else
ret = chmod(name, a->perm & 07777);
#endif
if (ret == -1)
status = errno_to_portable(errno);
}
if (a->flags & SSH2_FILEXFER_ATTR_ACMODTIME) {
char buf[64];
time_t t = a->mtime;
strftime(buf, sizeof(buf), "%Y%m%d-%H:%M:%S",
localtime(&t));
logit("set \"%s\" modtime %s", name, buf);
#ifdef HAVE_FUTIMES
ret = futimes(fd, attrib_to_tv(a));
#else
ret = utimes(name, attrib_to_tv(a));
#endif
if (ret == -1)
status = errno_to_portable(errno);
}
if (a->flags & SSH2_FILEXFER_ATTR_UIDGID) {
logit("set \"%s\" owner %lu group %lu", name,
(u_long)a->uid, (u_long)a->gid);
#ifdef HAVE_FCHOWN
ret = fchown(fd, a->uid, a->gid);
#else
ret = chown(name, a->uid, a->gid);
#endif
if (ret == -1)
status = errno_to_portable(errno);
}
}
send_status(id, status);
}
static void static void
process_opendir(u_int32_t id) process_opendir(u_int32_t id)