Re: [systemd-devel] [PATCH] _noreturn_ -- noreturn for C11 compat

2013-12-17 Thread Lennart Poettering
On Mon, 16.12.13 08:53, Shawn Landden (sh...@churchofgit.com) wrote:

Thanks!

Applied!

 also define noreturn w/o stdnoreturn.h
 ---
  src/core/main.c |  2 +-
  src/journal/test-journal-interleaving.c |  2 +-
  src/shared/log.c|  4 ++--
  src/shared/log.h|  4 ++--
  src/shared/macro.h  | 10 +-
  src/shared/pager.c  |  2 +-
  src/shared/util.c   |  2 +-
  src/shared/util.h   |  2 +-
  src/udev/collect/collect.c  |  2 +-
  9 files changed, 19 insertions(+), 11 deletions(-)
 
 diff --git a/src/core/main.c b/src/core/main.c
 index 6c3d9bf..eb5413e 100644
 --- a/src/core/main.c
 +++ b/src/core/main.c
 @@ -112,7 +112,7 @@ static FILE* serialization = NULL;
  static void nop_handler(int sig) {
  }
  
 -_noreturn_ static void crash(int sig) {
 +noreturn static void crash(int sig) {
  
  if (getpid() != 1)
  /* Pass this on immediately, if this is not PID 1 */
 diff --git a/src/journal/test-journal-interleaving.c 
 b/src/journal/test-journal-interleaving.c
 index af0d43e..5b74714 100644
 --- a/src/journal/test-journal-interleaving.c
 +++ b/src/journal/test-journal-interleaving.c
 @@ -36,7 +36,7 @@
  
  static bool arg_keep = false;
  
 -_noreturn_ static void log_assert_errno(const char *text, int eno, const 
 char *file, int line, const char *func) {
 +noreturn static void log_assert_errno(const char *text, int eno, const char 
 *file, int line, const char *func) {
  log_meta(LOG_CRIT, file, line, func,
   '%s' failed at %s:%u (%s): %s.,
   text, file, line, func, strerror(eno));
 diff --git a/src/shared/log.c b/src/shared/log.c
 index 2404de8..2517f5d 100644
 --- a/src/shared/log.c
 +++ b/src/shared/log.c
 @@ -702,12 +702,12 @@ static void log_assert(int level, const char *text, 
 const char *file, int line,
  }
  #pragma GCC diagnostic pop
  
 -_noreturn_ void log_assert_failed(const char *text, const char *file, int 
 line, const char *func) {
 +noreturn void log_assert_failed(const char *text, const char *file, int 
 line, const char *func) {
  log_assert(LOG_CRIT, text, file, line, func, Assertion '%s' failed 
 at %s:%u, function %s(). Aborting.);
  abort();
  }
  
 -_noreturn_ void log_assert_failed_unreachable(const char *text, const char 
 *file, int line, const char *func) {
 +noreturn void log_assert_failed_unreachable(const char *text, const char 
 *file, int line, const char *func) {
  log_assert(LOG_CRIT, text, file, line, func, Code should not be 
 reached '%s' at %s:%u, function %s(). Aborting.);
  abort();
  }
 diff --git a/src/shared/log.h b/src/shared/log.h
 index de0e000..3dcfa11 100644
 --- a/src/shared/log.h
 +++ b/src/shared/log.h
 @@ -124,13 +124,13 @@ int log_dump_internal(
  const char *func,
  char *buffer);
  
 -_noreturn_ void log_assert_failed(
 +noreturn void log_assert_failed(
  const char *text,
  const char *file,
  int line,
  const char *func);
  
 -_noreturn_ void log_assert_failed_unreachable(
 +noreturn void log_assert_failed_unreachable(
  const char *text,
  const char *file,
  int line,
 diff --git a/src/shared/macro.h b/src/shared/macro.h
 index 362d62b..51af289 100644
 --- a/src/shared/macro.h
 +++ b/src/shared/macro.h
 @@ -38,10 +38,18 @@
  # endif
  #endif
  
 +/* define noreturn without stdnoreturn.h */
 +#ifndef noreturn
 +# if __STDC_VERSION__ = 201112L
 +#  define noreturn _Noreturn
 +# else
 +#  define noreturn __attribute__((noreturn))
 +# endif
 +#endif
 +
  #define _printf_(a,b) __attribute__ ((format (printf, a, b)))
  #define _alloc_(...) __attribute__ ((alloc_size(__VA_ARGS__)))
  #define _sentinel_ __attribute__ ((sentinel))
 -#define _noreturn_ __attribute__((noreturn))
  #define _unused_ __attribute__ ((unused))
  #define _destructor_ __attribute__ ((destructor))
  #define _pure_ __attribute__ ((pure))
 diff --git a/src/shared/pager.c b/src/shared/pager.c
 index 9fa6114..72a29f2 100644
 --- a/src/shared/pager.c
 +++ b/src/shared/pager.c
 @@ -32,7 +32,7 @@
  
  static pid_t pager_pid = 0;
  
 -_noreturn_ static void pager_fallback(void) {
 +noreturn static void pager_fallback(void) {
  ssize_t n;
  
  do {
 diff --git a/src/shared/util.c b/src/shared/util.c
 index 0ce6f70..e1f92fd 100644
 --- a/src/shared/util.c
 +++ b/src/shared/util.c
 @@ -3469,7 +3469,7 @@ int wait_for_terminate_and_warn(const char *name, pid_t 
 pid) {
  return -EPROTO;
  }
  
 -_noreturn_ void freeze(void) {
 +noreturn void freeze(void) {
  
  /* Make sure nobody waits for us on a socket anymore */
  close_all_fds(NULL, 0);
 diff --git a/src/shared/util.h b/src/shared/util.h
 index d5fa81c..d43aeff 100644
 --- a/src/shared/util.h
 +++ 

[systemd-devel] [PATCH] _noreturn_ -- noreturn for C11 compat

2013-12-16 Thread Shawn Landden
also define noreturn w/o stdnoreturn.h
---
 src/core/main.c |  2 +-
 src/journal/test-journal-interleaving.c |  2 +-
 src/shared/log.c|  4 ++--
 src/shared/log.h|  4 ++--
 src/shared/macro.h  | 10 +-
 src/shared/pager.c  |  2 +-
 src/shared/util.c   |  2 +-
 src/shared/util.h   |  2 +-
 src/udev/collect/collect.c  |  2 +-
 9 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/core/main.c b/src/core/main.c
index 6c3d9bf..eb5413e 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -112,7 +112,7 @@ static FILE* serialization = NULL;
 static void nop_handler(int sig) {
 }
 
-_noreturn_ static void crash(int sig) {
+noreturn static void crash(int sig) {
 
 if (getpid() != 1)
 /* Pass this on immediately, if this is not PID 1 */
diff --git a/src/journal/test-journal-interleaving.c 
b/src/journal/test-journal-interleaving.c
index af0d43e..5b74714 100644
--- a/src/journal/test-journal-interleaving.c
+++ b/src/journal/test-journal-interleaving.c
@@ -36,7 +36,7 @@
 
 static bool arg_keep = false;
 
-_noreturn_ static void log_assert_errno(const char *text, int eno, const char 
*file, int line, const char *func) {
+noreturn static void log_assert_errno(const char *text, int eno, const char 
*file, int line, const char *func) {
 log_meta(LOG_CRIT, file, line, func,
  '%s' failed at %s:%u (%s): %s.,
  text, file, line, func, strerror(eno));
diff --git a/src/shared/log.c b/src/shared/log.c
index 2404de8..2517f5d 100644
--- a/src/shared/log.c
+++ b/src/shared/log.c
@@ -702,12 +702,12 @@ static void log_assert(int level, const char *text, const 
char *file, int line,
 }
 #pragma GCC diagnostic pop
 
-_noreturn_ void log_assert_failed(const char *text, const char *file, int 
line, const char *func) {
+noreturn void log_assert_failed(const char *text, const char *file, int line, 
const char *func) {
 log_assert(LOG_CRIT, text, file, line, func, Assertion '%s' failed at 
%s:%u, function %s(). Aborting.);
 abort();
 }
 
-_noreturn_ void log_assert_failed_unreachable(const char *text, const char 
*file, int line, const char *func) {
+noreturn void log_assert_failed_unreachable(const char *text, const char 
*file, int line, const char *func) {
 log_assert(LOG_CRIT, text, file, line, func, Code should not be 
reached '%s' at %s:%u, function %s(). Aborting.);
 abort();
 }
diff --git a/src/shared/log.h b/src/shared/log.h
index de0e000..3dcfa11 100644
--- a/src/shared/log.h
+++ b/src/shared/log.h
@@ -124,13 +124,13 @@ int log_dump_internal(
 const char *func,
 char *buffer);
 
-_noreturn_ void log_assert_failed(
+noreturn void log_assert_failed(
 const char *text,
 const char *file,
 int line,
 const char *func);
 
-_noreturn_ void log_assert_failed_unreachable(
+noreturn void log_assert_failed_unreachable(
 const char *text,
 const char *file,
 int line,
diff --git a/src/shared/macro.h b/src/shared/macro.h
index 362d62b..51af289 100644
--- a/src/shared/macro.h
+++ b/src/shared/macro.h
@@ -38,10 +38,18 @@
 # endif
 #endif
 
+/* define noreturn without stdnoreturn.h */
+#ifndef noreturn
+# if __STDC_VERSION__ = 201112L
+#  define noreturn _Noreturn
+# else
+#  define noreturn __attribute__((noreturn))
+# endif
+#endif
+
 #define _printf_(a,b) __attribute__ ((format (printf, a, b)))
 #define _alloc_(...) __attribute__ ((alloc_size(__VA_ARGS__)))
 #define _sentinel_ __attribute__ ((sentinel))
-#define _noreturn_ __attribute__((noreturn))
 #define _unused_ __attribute__ ((unused))
 #define _destructor_ __attribute__ ((destructor))
 #define _pure_ __attribute__ ((pure))
diff --git a/src/shared/pager.c b/src/shared/pager.c
index 9fa6114..72a29f2 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
@@ -32,7 +32,7 @@
 
 static pid_t pager_pid = 0;
 
-_noreturn_ static void pager_fallback(void) {
+noreturn static void pager_fallback(void) {
 ssize_t n;
 
 do {
diff --git a/src/shared/util.c b/src/shared/util.c
index 0ce6f70..e1f92fd 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -3469,7 +3469,7 @@ int wait_for_terminate_and_warn(const char *name, pid_t 
pid) {
 return -EPROTO;
 }
 
-_noreturn_ void freeze(void) {
+noreturn void freeze(void) {
 
 /* Make sure nobody waits for us on a socket anymore */
 close_all_fds(NULL, 0);
diff --git a/src/shared/util.h b/src/shared/util.h
index d5fa81c..d43aeff 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
@@ -417,7 +417,7 @@ char *normalize_env_assignment(const char *s);
 int wait_for_terminate(pid_t pid, siginfo_t *status);
 int wait_for_terminate_and_warn(const char *name, pid_t pid);
 
-_noreturn_ void freeze(void);