usterr-signal-safe.h: ensure all macros are trivial (10 lines max)
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 17 Nov 2011 18:36:00 +0000 (13:36 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 17 Nov 2011 18:36:00 +0000 (13:36 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/lttng/usterr-signal-safe.h

index b8e03dbd9ccd6d651ef670f9409a9c3ad5c69785..3e07d33b136eb1dc6975fbf9de512d5ee0e196ae 100644 (file)
@@ -67,29 +67,18 @@ static inline void __attribute__ ((format (printf, 1, 2)))
 {
 }
 
+/* Can't use dynamic allocation. Limit ourselves to USTERR_MAX_LEN chars. */
+/* Add end of string in case of buffer overflow. */
 #define sigsafe_print_err(fmt, args...)                                        \
-{                                                                      \
-       /* Can't use dynamic allocation. Limit ourselves to USTERR_MAX_LEN chars. */ \
+do {                                                                   \
        char ____buf[USTERR_MAX_LEN];                                   \
        int ____saved_errno;                                            \
-                                                                       \
-       /* Save the errno. */                                           \
-       ____saved_errno = errno;                                        \
-                                                                       \
+       ____saved_errno = errno;        /* signal-safety */             \
        ust_safe_snprintf(____buf, sizeof(____buf), fmt, ## args);      \
-                                                                       \
-       /* Add end of string in case of buffer overflow. */             \
        ____buf[sizeof(____buf) - 1] = 0;                               \
-                                                                       \
        patient_write(STDERR_FILENO, ____buf, strlen(____buf));         \
-       /*                                                              \
-        * Can't print errors because we are in the error printing code \
-        * path.                                                        \
-        */                                                             \
-                                                                       \
-       /* Restore errno, in order to be async-signal safe. */          \
-       errno = ____saved_errno;                                        \
-}
+       errno = ____saved_errno;        /* signal-safety */             \
+} while (0)
 
 #define UST_STR_COMPONENT UST_XSTR(UST_COMPONENT)
 
This page took 0.025655 seconds and 4 git commands to generate.