venus: Remove dedebug
[openafs.git] / CODING
diff --git a/CODING b/CODING
index f8a3fd4..aff53f9 100644 (file)
--- a/CODING
+++ b/CODING
@@ -93,7 +93,70 @@ Example:
         * like this example.
         */
 
-\f
+Do not use braces on one-line if and loop statements.
+
+Use:
+
+       if (some_condition)
+           do_some_action();
+       else
+           do_something_else();
+
+       while (some_condition)
+           do_something();
+
+Instead of:
+
+       if (some_condition) {
+           do_some_action();
+       }
+
+       while (some_condition) {
+           do_something();
+       }
+
+In switch statements, to fall through from one case statement to another, use
+AFS_FALLTHROUGH to mark the intentional fall through.  Do not use fall through
+comments (e.g. /* fallthrough */), as some compilers do not recognize them and
+will flag the case statement with an implied fallthrough warning.
+
+Use:
+
+    switch (x) {
+    case 1:
+        do_something();
+        AFS_FALLTHROUGH;
+    case 2:
+        do_something_else();
+        AFS_FALLTHROUGH;
+    default:
+        do_some_action();
+    }
+
+Instead of using fallthrough comments:
+
+    switch (x) {
+    case 1:
+        do_something();
+        /* fallthrough */
+    case 2:
+        do_something_else();
+        /* fallthrough */
+    default:
+        do_some_action();
+    }
+
+Or not marking the fall through:
+
+   switch (x) {
+    case 1:
+        do_something();
+    case 2:
+        do_something_else();
+    default:
+        do_some_action();
+    }
+
 Dependencies required to build OpenAFS from source
 --------------------------------------------------
 The following packages are required to build all of the OpenAFS code
@@ -243,7 +306,13 @@ the fix is to mark that warning as ignored, but only for clang. For example:
   # endif
   #endif
 
-If a pragma isn't available for your particular warning, you will need to
+If the source cannot be changed to add a pragma, you might be able to use the
+autoconf function AX_APPEND_COMPILE_FLAGS to create a new macro that disables
+the warning and then use macro for the build options for that file. For an
+example, see how the autoconf macro CFLAGS_NOIMPLICIT_FALLTHROUGH is defined and
+used.
+
+Finally, if there isn't a way to disable the specific 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:
@@ -254,18 +323,24 @@ If you add a new warning inhibition, please also add it to the list below.
 
 Inhibited warnings
 ------------------
-
+uss/lex.i            : fallthrough   : clang fallthrough, flex generated code
+comerr/et_lex.lex.l  : fallthrough   : clang fallthrough, flex generated code
+                                       pragma set to ignored where included in
+                                       error_table.y
 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
+bucoord/ubik_db_if.c : strict-proto  : ubik_Call_SingleServer
+bucoord/commands.c   : all          : signed vs unsigned for dates
 external/heimdal/hcrypto/validate.c: all: statement with empty body
+external/heimdal/hcrypto/evp.c:      cast-function-type
+             : Linux kernel build uses -Wcast-function-type
+external/heimdal/hcrypto/evp-algs.c: cast-function-type
+             : Linux kernel build uses -Wcast-function-type
+external/heimdal/krb5/crypto.c: use-after-free : False postive on certain GCC
+                                                 compilers
 kauth/admin_tools.c  : strict-proto  : ubik_Call
 kauth/authclient.c   : strict-proto  : ubik_Call nonsense
 libadmin/kas/afs_kasAdmin.c: strict-proto : ubik_Call nonsense
@@ -274,4 +349,10 @@ libadmin/samples/rxstat_query_process.c : all : util_RPCStatsStateGet types
 libadmin/test/client.c : all         : util_RPCStatsStateGet types
 ubik/ubikclient.c    : strict-protos : ubik_Call
 volser/vol-dump.c    : format        : afs_sfsize_t
-
+rxkad/ticket5.c      : format-truncation : inside included file v5der.c in the
+                                       function _heim_time2generalizedtime, the
+                                       two snprintf calls raise
+                                       format-truncation warnings due to the
+                                       arithmetic on tm_year and tm_mon fields
+lwp/process.c        : dangling-pointer : Ignore the legitimate use of saving
+                                       the address of a stack variable