]> arthur.barton.de Git - netatalk.git/blobdiff - include/atalk/errchk.h
Fix unnamed union inside struct
[netatalk.git] / include / atalk / errchk.h
index 510c73a56269e590d7409472ce9b360be6c4b928..ccc66eb6f4ac1a9ae7ff52a57c3291d219e3ed02 100644 (file)
 
 #define EC_INIT int ret = 0
 #define EC_STATUS(a) ret = (a)
-#define EC_FAIL ret = -1; goto cleanup
+#define EC_EXIT_STATUS(a) do { ret = (a); goto cleanup; } while (0)
+#define EC_FAIL do { ret = -1; goto cleanup; } while (0)
+#define EC_FAIL_LOG(a, ...)                     \
+    do {               \
+        LOG(log_error, logtype_default, a, __VA_ARGS__);   \
+        ret = -1;      \
+        goto cleanup;  \
+    } while (0)
 #define EC_CLEANUP cleanup
 #define EC_EXIT return ret
 
@@ -25,9 +32,9 @@
  * Check out doc/DEVELOPER for more infos.
  *
  * We have these macros:
- * EC_ZERO, EC_ZERO_LOG, EC_ZERO_LOG_ERR, EC_ZERO_CUSTOM
- * EC_NEG1, EC_NEG1_LOG, EC_NEG1_LOG_ERR, EC_NEG1_CUSTOM
- * EC_NULL, EC_NULL_LOG, EC_NULL_LOG_ERR, EC_NULL_CUSTOM
+ * EC_ZERO, EC_ZERO_LOG, EC_ZERO_LOGSTR, EC_ZERO_LOG_ERR, EC_ZERO_CUSTOM
+ * EC_NEG1, EC_NEG1_LOG, EC_NEG1_LOGSTR, EC_NEG1_LOG_ERR, EC_NEG1_CUSTOM
+ * EC_NULL, EC_NULL_LOG, EC_NULL_LOGSTR, EC_NULL_LOG_ERR, EC_NULL_CUSTOM
  *
  * A boileplate function template is:
 
  */
 
 /* check for return val 0 which is ok, every other is an error, prints errno */
-#define EC_ZERO_LOG(a)                          \
-    do {                                        \
+#define EC_ZERO_LOG(a)                                                  \
+    do {                                                                \
         if ((a) != 0) {                                                 \
             LOG(log_error, logtype_default, "%s failed: %s", #a, strerror(errno)); \
             ret = -1;                                                   \
             goto cleanup;                                               \
-        } \
+        }                                                               \
     } while (0)
 
-#define EC_ZERO_LOG_ERR(a, b)                   \
-    do { \
+#define EC_ZERO_LOGSTR(a, b, ...)                                       \
+    do {                                                                \
+        if ((a) != 0) {                                                 \
+            LOG(log_error, logtype_default, b, __VA_ARGS__);            \
+            ret = -1;                                                   \
+            goto cleanup;                                               \
+        }                                                               \
+    } while (0)
+
+#define EC_ZERO_LOG_ERR(a, b)                                           \
+    do {                                                                \
         if ((a) != 0) {                                                 \
             LOG(log_error, logtype_default, "%s failed: %s", #a, strerror(errno)); \
             ret = (b);                                                  \
         }                                                               \
     } while (0)
 
-#define EC_ZERO(a) \
-    do { \
-        if ((a) != 0) { \
-            ret = -1; \
-            goto cleanup; \
-        } \
+#define EC_ZERO(a)                              \
+    do {                                        \
+        if ((a) != 0) {                         \
+            ret = -1;                           \
+            goto cleanup;                       \
+        }                                       \
     } while (0)
 
 #define EC_ZERO_ERR(a,b )                       \
         }                                       \
     } while (0)
 
-#define EC_ZERO_CUSTOM(a) \
-    (ret = (a)) != 0
-
 /* check for return val 0 which is ok, every other is an error, prints errno */
-#define EC_NEG1_LOG(a) \
-    do { \
-        if ((a) == -1) { \
+#define EC_NEG1_LOG(a)                                                  \
+    do {                                                                \
+        if ((a) == -1) {                                                \
             LOG(log_error, logtype_default, "%s failed: %s", #a, strerror(errno)); \
-            ret = -1; \
-            goto cleanup; \
-        } \
+            ret = -1;                                                   \
+            goto cleanup;                                               \
+        }                                                               \
     } while (0)
 
-#define EC_NEG1_LOG_ERR(a, b)                   \
-    do {                                        \
+#define EC_NEG1_LOGSTR(a, b, ...)                               \
+    do {                                                        \
+        if ((a) == -1) {                                        \
+            LOG(log_error, logtype_default, b, __VA_ARGS__);    \
+            ret = -1;                                           \
+            goto cleanup;                                       \
+        }                                                       \
+    } while (0)
+
+#define EC_NEG1_LOG_ERR(a, b)                                           \
+    do {                                                                \
         if ((a) == -1) {                                                \
             LOG(log_error, logtype_default, "%s failed: %s", #a, strerror(errno)); \
             ret = b;                                                    \
         }                                                               \
     } while (0)
 
-/* check for return val 0 which is ok, every other is an error */
-#define EC_NEG1(a) \
-    do { \
-        if ((a) == -1) { \
-            ret = -1; \
-            goto cleanup; \
-        } \
+#define EC_NEG1(a)                              \
+    do {                                        \
+        if ((a) == -1) {                        \
+            ret = -1;                           \
+            goto cleanup;                       \
+        }                                       \
     } while (0)
 
-#define EC_NEG1_CUSTOM(a) \
-    (ret = (a)) == -1
-
 /* check for return val != NULL, prints errno */
-#define EC_NULL_LOG(a) \
-    do { \
-        if ((a) == NULL) { \
+#define EC_NULL_LOG(a)                                                  \
+    do {                                                                \
+        if ((a) == NULL) {                                              \
             LOG(log_error, logtype_default, "%s failed: %s", #a, strerror(errno)); \
-            ret = -1; \
-            goto cleanup; \
+            ret = -1;                                                   \
+            goto cleanup;                                               \
+        }                                                               \
+    } while (0)
+
+#define EC_NULL_LOGSTR(a, b, ...)                                       \
+    do {                                                                \
+        if ((a) == NULL) {                                              \
+            LOG(log_error, logtype_default, b , __VA_ARGS__);           \
+            ret = -1;                                                   \
+            goto cleanup;                                               \
         } \
     } while (0)
 
-#define EC_NULL_LOG_ERR(a, b)                   \
-    do {                                        \
+#define EC_NULL_LOG_ERR(a, b)                                           \
+    do {                                                                \
         if ((a) == NULL) {                                              \
             LOG(log_error, logtype_default, "%s failed: %s", #a, strerror(errno)); \
             ret = b;                                                    \
         }                                                               \
     } while (0)
 
-/* check for return val != NULL */
-#define EC_NULL(a) \
-    do { \
-        if ((a) == NULL) { \
-            ret = -1; \
-            goto cleanup; \
-        } \
+#define EC_NULL(a)                              \
+    do {                                        \
+        if ((a) == NULL) {                      \
+            ret = -1;                           \
+            goto cleanup;                       \
+        }                                       \
     } while (0)
 
-#define EC_NULL_CUSTOM(a) \
-    (ret = (a)) == NULL
-
 #endif /* ERRCHECK_H */