summaryrefslogtreecommitdiffstats
path: root/bin/rm/rm.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2006-10-30 03:32:09 +0000
committerdelphij <delphij@FreeBSD.org>2006-10-30 03:32:09 +0000
commit633d73890b16ca2113738bb6f755476277ac715f (patch)
tree5b962860bd6b7ab3494f4613fa7f381c04343f7f /bin/rm/rm.c
parent1846f706271597ff5a62140c6017835694e5535b (diff)
downloadFreeBSD-src-633d73890b16ca2113738bb6f755476277ac715f.zip
FreeBSD-src-633d73890b16ca2113738bb6f755476277ac715f.tar.gz
Be more reasonable when overwrite mode is specified while there
is hard links. Overwritting when links > 1 would cause data loss, which is usually undesired. Inspired by: discussion on -hackers@ Suggested by: elessar at bsdforen de Obtained from: OpenBSD
Diffstat (limited to 'bin/rm/rm.c')
-rw-r--r--bin/rm/rm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/bin/rm/rm.c b/bin/rm/rm.c
index 614479d..c311b6e 100644
--- a/bin/rm/rm.c
+++ b/bin/rm/rm.c
@@ -400,6 +400,11 @@ rm_overwrite(char *file, struct stat *sbp)
}
if (!S_ISREG(sbp->st_mode))
return (1);
+ if (sbp->st_nlink > 1) {
+ warnx("%s (inode %u): not overwritten due to multiple links",
+ file, sbp->st_ino);
+ return (1);
+ }
if ((fd = open(file, O_WRONLY, 0)) == -1)
goto err;
if (fstatfs(fd, &fsb) == -1)
OpenPOWER on IntegriCloud