roken: configure checks for inet_ntop and inet_pton
[openafs.git] / CODING
diff --git a/CODING b/CODING
index 9b34913..b1e12c7 100644 (file)
--- a/CODING
+++ b/CODING
@@ -188,3 +188,80 @@ change. One workflow to do this:
 2) In your editor, delete the existing Change-ID line. Save and quit.
 3) Run "git commit --amend", saving and quitting again. Git will run
    the commit hook and generate a new Change-ID for Gerrit.
+
+Warnings
+========
+
+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
+
+It would appear that when built with -Werror, the llvm clang compiler will
+still upgrade warnings that are suppresed in this way to errors. In this case,
+the fix is to mark that warning as ignored, but only for clang. For example:
+  #ifdef IGNORE_SOME_GCC_WARNINGS
+  # ifdef __clang__
+  #  pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+  # else
+  #  pragma GCC diagnostic warning "-Wdeprecated-declarations"
+  # endif
+  #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_kernel.c   : deprecated    : daemon() marked as deprecated on Darwin
+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
+external/heimdal/hcrypto/validate.c: all: statement with empty body
+kauth/admin_tools.c  : all           : signed vs unsigned for dates
+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
+rxkad/ticket5.c             : all           : v5gen.c has set-but-unused variables
+ubik/ubikclient.c    : strict-protos : ubik_Call
+volser/vol-dump.c    : format        : afs_sfsize_t
+