Re: shred bug? [was: Unidentified subject!]
On Mon, Feb 12, 2024 at 11:01:47PM -0600, David Wright wrote:
> … but not much. For me, "standard output" is /dev/fd/1, yet it seems
> unlikely that anyone is going to use >&1 in the manner of the example.
Standard output means "whatever file descriptor 1 points to". That
could be a file, a pipe, a terminal (character device), etc.
> I might write something like: "The option ‘-’ shreds the file specified
> by the redirection ‘>&N’", though there could be a better name for ‘>&N’.
You're assuming the program will be used from a shell. This is *usually*
going to be true, but nothing prevents you from writing a C program
which closes stdout, opens a file, ensures that it's using FD 1,
and then calls "shred -". The documentation has to support this use
case as well.
> > A FILE of ‘-’ denotes standard output. The intended use of this is
> > to shred a removed temporary file. For example:
> >
> > i=$(mktemp)
> > exec 3<>"$i"
> > rm -- "$i"
> > echo "Hello, world" >&3
> > shred - >&3
> > exec 3>-
>
> I can see that the last line truncates the "anonymous" file,
No, that's not what it does at all. In fact, that last line is
written incorrectly. It should say "exec 3>&-" and what that does
is close file descriptor 3, which was previously opened on line 2.
What it actually does *as written* is create/truncate a file whose
name is "-", close the previously opened FD 3, and make FD 3 point
to the file named "-".
unicorn:~$ exec 3>-
unicorn:~$ ls -ld -- -
-rw-r--r-- 1 greg greg 0 Feb 13 07:12 -
unicorn:~$ ls -l /dev/fd/3
l-wx------ 1 greg greg 64 Feb 13 07:12 /dev/fd/3 -> /home/greg/-
This is an obvious bug in the info page. I wonder how many years
this has gone unnoticed.
Reply to: