[libvirt] [PATCH] Add a define for NFS_SUPER_MAGIC

Jim Meyering jim at meyering.net
Wed Mar 3 18:14:26 UTC 2010

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:


Speaking of this made me realize there'd been no "official"
release of that tool in some time, so I have just made one:


[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 at gnu.org>.

More information about the libvir-list mailing list