By "infrastructure", I mean the autoconf/automake building blocks
provided by gnulib to help do things more robustly and more portably.

For example,

    parted --help > /dev/full

causes a failed write syscall (you see it with strace),
but there is no diagnostic, and it exits successfully.
Same for --version or anything else that makes parted write to stdout.

I can fix that using gnulib's closeout module by adding
two lines to parted.c:

    #include "closeout.h"

[and near the top of main(),]

    atexit (close_stdout);

That (plus, maybe checking an fflush return code)
ensures that such usage will evoke the expected diagnostic,

    parted: write error: No space left on device

along with nonzero exit status.
-------------------------------------

However, in order to add those two lines to parted.c,
I'd end up adding a bunch of supporting files, from lib/*.[ch]
m4/*.m4, and a couple hooks in configure.ac.  Also probably a
bootstrap script like the one in coreutils.

For examples of this sort of infrastructure, look at coreutils,
bison, GNU m4, diffutils, and a few others.

It should be pretty non-invasive, and since so many other tools
also use gnulib, the few bugs that get into the sources there are
usually shaken out very quickly.

Interested?

Jim

_______________________________________________
parted-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/parted-devel

Reply via email to