Skip to content

Commit 9fe3edc

Browse files
Ramsay Jonesgitster
authored andcommitted
Add the LAST_ARG_MUST_BE_NULL macro
The sentinel function attribute is not understood by versions of the gcc compiler prior to v4.0. At present, for earlier versions of gcc, the build issues 108 warnings related to the unknown attribute. In order to suppress the warnings, we conditionally define the LAST_ARG_MUST_BE_NULL macro to provide the sentinel attribute for gcc v4.0 and newer. Signed-off-by: Ramsay Jones <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 8dd0ee8 commit 9fe3edc

File tree

5 files changed

+12
-5
lines changed

5 files changed

+12
-5
lines changed

argv-array.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void argv_array_init(struct argv_array *);
1515
void argv_array_push(struct argv_array *, const char *);
1616
__attribute__((format (printf,2,3)))
1717
void argv_array_pushf(struct argv_array *, const char *fmt, ...);
18-
__attribute__((sentinel))
18+
LAST_ARG_MUST_BE_NULL
1919
void argv_array_pushl(struct argv_array *, ...);
2020
void argv_array_pop(struct argv_array *);
2121
void argv_array_clear(struct argv_array *);

builtin/revert.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static int option_parse_x(const struct option *opt,
5454
return 0;
5555
}
5656

57-
__attribute__((sentinel))
57+
LAST_ARG_MUST_BE_NULL
5858
static void verify_opt_compatible(const char *me, const char *base_opt, ...)
5959
{
6060
const char *this_opt;
@@ -71,7 +71,7 @@ static void verify_opt_compatible(const char *me, const char *base_opt, ...)
7171
die(_("%s: %s cannot be used with %s"), me, this_opt, base_opt);
7272
}
7373

74-
__attribute__((sentinel))
74+
LAST_ARG_MUST_BE_NULL
7575
static void verify_opt_mutually_compatible(const char *me, ...)
7676
{
7777
const char *opt1, *opt2 = NULL;

exec_cmd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ extern const char *git_exec_path(void);
77
extern void setup_path(void);
88
extern const char **prepare_git_cmd(const char **argv);
99
extern int execv_git_cmd(const char **argv); /* NULL terminated */
10-
__attribute__((sentinel))
10+
LAST_ARG_MUST_BE_NULL
1111
extern int execl_git_cmd(const char *cmd, ...);
1212
extern const char *system_path(const char *path);
1313

git-compat-util.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,13 @@ extern char *gitbasename(char *);
295295
#endif
296296
#endif
297297

298+
/* The sentinel attribute is valid from gcc version 4.0 */
299+
#if defined(__GNUC__) && (__GNUC__ >= 4)
300+
#define LAST_ARG_MUST_BE_NULL __attribute__((sentinel))
301+
#else
302+
#define LAST_ARG_MUST_BE_NULL
303+
#endif
304+
298305
#include "compat/bswap.h"
299306

300307
#ifdef USE_WILDMATCH

run-command.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ int finish_command(struct child_process *);
4646
int run_command(struct child_process *);
4747

4848
extern char *find_hook(const char *name);
49-
__attribute__((sentinel))
49+
LAST_ARG_MUST_BE_NULL
5050
extern int run_hook(const char *index_file, const char *name, ...);
5151

5252
#define RUN_COMMAND_NO_STDIN 1

0 commit comments

Comments
 (0)