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

Lennart Poettering lennart at poettering.net
Tue Dec 17 12:55:12 PST 2013


On Mon, 16.12.13 08:53, Shawn Landden (shawn at 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
> +++ 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);
> +noreturn void freeze(void);
>  
>  bool null_or_empty(struct stat *st) _pure_;
>  int null_or_empty_path(const char *fn);
> diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c
> index 2bbbcd7..cb5df01 100644
> --- a/src/udev/collect/collect.c
> +++ b/src/udev/collect/collect.c
> @@ -61,7 +61,7 @@ static inline struct _mate *node_to_mate(struct udev_list_node *node)
>          return container_of(node, struct _mate, node);
>  }
>  
> -_noreturn_ static void sig_alrm(int signo)
> +noreturn static void sig_alrm(int signo)
>  {
>          exit(4);
>  }


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list