Skip to content

Commit

Permalink
increase portability of NORETURN declarations
Browse files Browse the repository at this point in the history
Some compilers (including at least MSVC) support NORETURN
on function declarations, but only before the function-name.

This patch makes it possible to define NORETURN to something
meaningful for those compilers.

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
  • Loading branch information
Erik Faye-Lund authored and Jeff King committed Oct 1, 2009
1 parent 1be224b commit a4f3131
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
8 changes: 4 additions & 4 deletions git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,13 +186,13 @@ extern char *gitbasename(char *);
#include "compat/bswap.h"

/* General helper functions */
extern void usage(const char *err) NORETURN;
extern void die(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2)));
extern void die_errno(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2)));
extern NORETURN void usage(const char *err);
extern NORETURN void die(const char *err, ...) __attribute__((format (printf, 1, 2)));
extern NORETURN void die_errno(const char *err, ...) __attribute__((format (printf, 1, 2)));
extern int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)));

extern void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN);
extern void set_die_routine(NORETURN void (*routine)(const char *err, va_list params));

extern int prefixcmp(const char *str, const char *prefix);
extern time_t tm_to_time_t(const struct tm *tm);
Expand Down
4 changes: 2 additions & 2 deletions index-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,8 @@ static void parse_pack_header(void)
use(sizeof(struct pack_header));
}

static void bad_object(unsigned long offset, const char *format,
...) NORETURN __attribute__((format (printf, 2, 3)));
static NORETURN void bad_object(unsigned long offset, const char *format,
...) __attribute__((format (printf, 2, 3)));

static void bad_object(unsigned long offset, const char *format, ...)
{
Expand Down
6 changes: 3 additions & 3 deletions usage.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ static void warn_builtin(const char *warn, va_list params)

/* If we are in a dlopen()ed .so write to a global variable would segfault
* (ugh), so keep things static. */
static void (*usage_routine)(const char *err) NORETURN = usage_builtin;
static void (*die_routine)(const char *err, va_list params) NORETURN = die_builtin;
static NORETURN void (*usage_routine)(const char *err) = usage_builtin;
static NORETURN void (*die_routine)(const char *err, va_list params) = die_builtin;
static void (*error_routine)(const char *err, va_list params) = error_builtin;
static void (*warn_routine)(const char *err, va_list params) = warn_builtin;

void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN)
void set_die_routine(NORETURN void (*routine)(const char *err, va_list params))
{
die_routine = routine;
}
Expand Down

0 comments on commit a4f3131

Please sign in to comment.