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
This commit is contained in:
parent
1846f70627
commit
633d73890b
@ -32,7 +32,7 @@
|
||||
.\" @(#)rm.1 8.5 (Berkeley) 12/5/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd September 29, 2005
|
||||
.Dd October 30, 2006
|
||||
.Dt RM 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -88,6 +88,8 @@ yet provides almost the same level of protection against mistakes.
|
||||
Overwrite regular files before deleting them.
|
||||
Files are overwritten three times, first with the byte pattern 0xff,
|
||||
then 0x00, and then 0xff again, before they are deleted.
|
||||
Files with multiple links will not be overwritten.
|
||||
.Pp
|
||||
Specifying this flag for a read only file will cause
|
||||
.Nm
|
||||
to generate an error message and exit.
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user