OpenAFS Warning detection
-------------------------

There's been a concerted effort over the last few years, by many developers,
to reduce the number of warnings in the OpenAFS tree. In an attempt to
prevent warnings from creeping back in, we now have the ability to break the
build when new warnings appear.

This is only available for systems with gcc 4.2 or later, and is disabled
unless the --enable-checking option is supplied to configure. Because we
can't remove all of the warnings, we permit file by file (and warning by
warning) disabling of specific warnings. The --enable-checking=all prevents
this, and errors for any file containing a warning.

Disabling warnings
------------------

If warnings are unavoidable in a particular part of the build, they may be
disabled in an number of ways.

You can disable a single warning type in a particular file by using GCC
pragmas. If a warning can be disabled with a pragma, then the switch to use
will be listed in the error message you receive from the compiler. Pragmas
should be wrapped in IGNORE_SOME_GCC_WARNINGS, so that they aren't used
with non-gcc compilers, and can be disabled if desired. For example:
  #ifdef IGNORE_SOME_GCC_WARNINGS
  # pragma GCC diagnostic warning "-Wold-style-definition"
  #endif

If a pragma isn't available for your particular warning, you will need to
disable all warnings for the file in question. You can do this by supplying
the autoconf macro @CFLAGS_NOERROR@ in the build options for the file. For
example:
  lex.yy.o : lex.yy.c y.tab.c
         ${CC} -c ${CFLAGS} @CFLAGS_NOERROR@ lex.yy.c

If you add a new warning inhibition, please also add it to the list below.

Inhibited warnings
------------------

afs/afs_syscall.c    : old-style
		     : strict-proto
		     : all (ukernel) : syscall pointer issues
afsd/afsd.c          : all           : call_syscall nonsense
afsd/afsd_kernel.c   : deprecated    : daemon() marked as deprecated on Darwin
	             : strict-proto  : call_syscall missing prototype
auth/ktc.c           : all (ukernel) : call_syscall doesn't have a prototype
bozo/bosserver.c     : deprecated    : daemon() marked as deprecated on Darwin
bucoord/ubik_db_if.c : strict-proto  : Ubik_Call
bucoord/commands.c   : all	     : Ubik_Call
				     : signed vs unsigned for dates
butc/tcudbprocs.c    : all	     : ubik_Call
kauth/admin_tools.c  : all           : ubik_Call nonsense
kauth/authclient.c   : strict-proto  : ubik_Call nonsense
libadmin/kas/afs_kasAdmin.c: all     : Ubik_Call nonsense
libadmin/samples/rxstat_query_peer.c : all : util_RPCStatsStateGet types
libadmin/samples/rxstat_query_process.c : all : util_RPCStatsStateGet types
libadmin/test/client.c : all         : util_RPCStatsStateGet types
rx/rx.c		     : all (pthread) : rxkad_global_stats_init not proto'd
ubik/ubikclient.c    : strict-protos : ubik_Call
uss/uss_kauth.c      : all	     : ubik_Call
viced/fsprobe.c      : all	     : ubik_Call
volser/vol-dump.c    : format        : afs_sfsize_t

