From: Paul Eggert Date: Mon, 9 Aug 2004 23:34:49 +0000 (+0000) Subject: (wipename): Work even if the directory is writeable X-Git-Tag: v5.3.0~819 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1def589bea0974dc92183b99efc18545c8f88c33;p=thirdparty%2Fcoreutils.git (wipename): Work even if the directory is writeable and not readable. Prefer write access, since this should work better with fdatasync. --- diff --git a/src/shred.c b/src/shred.c index 4d3b18d5e3..d9da0bb7b7 100644 --- a/src/shred.c +++ b/src/shred.c @@ -1434,10 +1434,13 @@ wipename (char *oldname, char const *qoldname, struct Options const *flags) size_t len = base_len (base); char *dir = dir_name (newname); char *qdir = xstrdup (quotearg_colon (dir)); - int dir_fd = open (dir, O_RDONLY | O_NOCTTY); bool first = true; bool ok = true; + int dir_fd = open (dir, O_WRONLY | O_NOCTTY); + if (dir_fd < 0) + dir_fd = open (dir, O_RDONLY | O_NOCTTY); + if (flags->verbose) error (0, 0, _("%s: removing"), qoldname);