~anschelsc/+junk/mine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
GNU hello --- TODO

Todo:

    * remove README-alpha from the distribution.
    * submit a new hello.pot.

-=-=-=-=-=-=-=-=-=-=-=-=-=- cut here -=-=-=-=-=-=-=-=-=-=-=-=-=-

Subject:      grep-2.0b: close stdout and make sure it succeeds
From:         meyering@eng.ascend.com (Jim Meyering)
Date:         1997/07/16
Message-ID:   <yzq4t9ucuz5.fsf@boom.eng.ascend.com>
Newsgroups:   gnu.utils.bug


Hi Alain,

Thanks for taking up the reins!

Almost every program that writes a single byte to stdout should
do the following just before exiting: close stdout and give a
diagnostic if the close fails.

Otherwise, write errors can go unreported.  You can provoke this
by e.g. making grep generate lots of output and redirect that output
to a floppy or to any file system that's nearly full.

GNU hello should set a good example and do this, too.

Here's a patch I've been using for a long time:

        * src/grep.c: Cause grep to fail if `fclose (stdout)' fails.

--- grep.c.orig Wed Jul 16 20:44:20 1997
+++ grep.c      Wed Jul 16 20:44:30 1997
@@ -846,5 +846,8 @@ main(argc, argv)
        printf(_("(standard input)\n"));
     }

+  if (fclose (stdout) == EOF)
+    error (_("writing output", errno));
+
   exit(errseen ? 2 : status);
 }


end of file TODO