Eric Blake wrote:
...
> #ifdef __linux__
> #include <sys/vfs.h>
> -#include <linux/magic.h>
> -#endif
> +#ifndef NFS_SUPER_MAGIC
> +#define NFS_SUPER_MAGIC 0x6969
> +#endif /* NFS_SUPER_MAGIC */
> +#endif /* __linux__ */
Style question (and yet another thing for me to add to my pending HACKING
patch): any objections to indenting preprocessor directives to make it
easier to track nesting? As in:
#ifdef __linux__
# include <sys/vfs.h>
# ifndef NFS_SUPER_MAGIC
# define NFS_SUPER_MAGIC 0x6969
# endif /* NFS_SUPER_MAGIC */
#endif /* __linux__ */
I find that more readable.
If enough people prefer that style here, we could even mass-indent
the code and ensure it stays that way with an optional syntax-check
rule that'd run only if you have the required tool.
I use cppi for that:
http://savannah.gnu.org/projects/cppi
Speaking of this made me realize there'd been no "official"
release of that tool in some time, so I have just made one:
http://meyering.net/cppi/cppi-1.14.tar.xz
http://meyering.net/cppi/cppi-1.14.tar.xz.sig
[may have to wait a day or two for the tarball to
appear on
ftp.gnu.org ]
This doesn't really matter for libvirt, since it doesn't
have many nested cpp directives, but when you *do* have many,
consistent indentation is the only way to remain effective.
Here's its --help output:
Usage: cppi [FILE]
or: cppi -c [OPTION] [FILE]...
Indent the C preprocessor directives in FILE to reflect their nesting
and ensure that there is exactly one space character between each #if,
#elif, #define directive and the following token, and write the result
to standard output. The number of spaces between the `#' and the following
directive must correspond to the level of nesting of that directive.
With no FILE, or when FILE is -, read standard input.
-a, --ansi when checking, fail if text follows #else or #endif
-c, --check set exit code, but don't produce any output
-l, --list-files-only don't generate diagnostics about indentation;
print to stdout only the names of files that
are not properly indented
-m, --max-string-length=LENGTH
fail if there is a double-quoted string longer
than LENGTH; if LENGTH is 0 (the default),
then there is no limit
--help display this help and exit
--version output version information and exit
With the -c option, don't write to stdout. Instead, check the
indentation of the specified files giving diagnostics for preprocessor
lines that aren't properly indented or are otherwise invalid.
Note that --ansi without --check does not correct the problem of
non-ANSI text following #else and #endif directives.
The exit code will be one of these:
0 all directives properly indented
1 some cpp directive(s) improperly indented, or
if text follows #else/#endif (enabled with --check --ansi), or
found a double-quoted string longer than the specified maximum
2 #if/#endif mismatch, EOF in comment or string
3 file (e.g. open/read/write) error
A pragma directive may have its `#' indented.
Report bugs to <bug-cppi(a)gnu.org>.