Deleted Added
full compact
36c36
< * $Id$
---
> * $Id: mv.c,v 1.11 1997/02/22 14:04:12 peter Exp $
208a209
> mode_t oldmode;
215,216c216,229
< if ((to_fd =
< open(to, O_CREAT | O_TRUNC | O_WRONLY, sbp->st_mode)) < 0) {
---
> if (blen < sbp->st_blksize) {
> if (bp != NULL)
> free(bp);
> if ((bp = malloc(sbp->st_blksize)) == NULL) {
> blen = 0;
> warnx("malloc failed");
> return (1);
> }
> blen = sbp->st_blksize;
> }
> while ((to_fd =
> open(to, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, 0)) < 0) {
> if (errno == EEXIST && unlink(to) == 0)
> continue;
221,224d233
< if (!blen && !(bp = malloc(blen = sbp->st_blksize))) {
< warn(NULL);
< return (1);
< }
240,241c249,259
< if (fchown(to_fd, sbp->st_uid, sbp->st_gid))
< warn("%s: set owner/group", to);
---
> oldmode = sbp->st_mode & ALLPERMS;
> if (fchown(to_fd, sbp->st_uid, sbp->st_gid)) {
> warn("%s: set owner/group (was: %u/%u)", to, sbp->st_uid,
> sbp->st_gid);
> if (oldmode & (S_ISUID | S_ISGID)) {
> warnx(
> "%s: owner/group changed; clearing suid/sgid (mode was 0%03o)",
> to, oldmode);
> sbp->st_mode &= ~(S_ISUID | S_ISGID);
> }
> }
243c261
< warn("%s: set mode", to);
---
> warn("%s: set mode (was: 0%03o)", to, oldmode);