version 1.70, 2019/02/14 11:50:00 |
version 1.71, 2019/02/14 11:51:42 |
|
|
struct timespec ts[2]; |
struct timespec ts[2]; |
int devnull, from_fd, to_fd, serrno, files_match = 0; |
int devnull, from_fd, to_fd, serrno, files_match = 0; |
char *p; |
char *p; |
|
char *target_name = tempfile; |
|
|
(void)memset((void *)&from_sb, 0, sizeof(from_sb)); |
(void)memset((void *)&from_sb, 0, sizeof(from_sb)); |
(void)memset((void *)&to_sb, 0, sizeof(to_sb)); |
(void)memset((void *)&to_sb, 0, sizeof(to_sb)); |
|
|
} else { |
} else { |
files_match = 1; |
files_match = 1; |
(void)unlink(tempfile); |
(void)unlink(tempfile); |
|
target_name = to_name; |
|
(void)close(temp_fd); |
} |
} |
} |
} |
(void)close(to_fd); |
if (!files_match) { |
to_fd = temp_fd; |
(void)close(to_fd); |
|
to_fd = temp_fd; |
|
} |
} |
} |
|
|
/* |
/* |
|
|
if ((gid != (gid_t)-1 || uid != (uid_t)-1) && |
if ((gid != (gid_t)-1 || uid != (uid_t)-1) && |
fchown(to_fd, uid, gid)) { |
fchown(to_fd, uid, gid)) { |
serrno = errno; |
serrno = errno; |
(void)unlink(tempfile); |
if (target_name == tempfile) |
errx(1, "%s: chown/chgrp: %s", tempfile, strerror(serrno)); |
(void)unlink(target_name); |
|
errx(1, "%s: chown/chgrp: %s", target_name, strerror(serrno)); |
} |
} |
if (fchmod(to_fd, mode)) { |
if (fchmod(to_fd, mode)) { |
serrno = errno; |
serrno = errno; |
(void)unlink(tempfile); |
if (target_name == tempfile) |
errx(1, "%s: chmod: %s", tempfile, strerror(serrno)); |
(void)unlink(target_name); |
|
errx(1, "%s: chmod: %s", target_name, strerror(serrno)); |
} |
} |
|
|
/* |
/* |
|
|
if (fchflags(to_fd, |
if (fchflags(to_fd, |
flags & SETFLAGS ? fset : from_sb.st_flags & ~UF_NODUMP)) { |
flags & SETFLAGS ? fset : from_sb.st_flags & ~UF_NODUMP)) { |
if (errno != EOPNOTSUPP || (from_sb.st_flags & ~UF_NODUMP) != 0) |
if (errno != EOPNOTSUPP || (from_sb.st_flags & ~UF_NODUMP) != 0) |
warnx("%s: chflags: %s", tempfile, strerror(errno)); |
warnx("%s: chflags: %s", target_name, strerror(errno)); |
} |
} |
|
|
if (flags & USEFSYNC) |
if (flags & USEFSYNC) |