Skip to content

Commit

Permalink
Introduce die_errno() that appends strerror(errno) to die()
Browse files Browse the repository at this point in the history
There are many calls to die() that do, or should, report
strerror(errno) to indicate how the syscall they guard failed.
Introduce a small helper function for this case.

Note:

- POSIX says vsnprintf can modify errno in some unlikely cases, so we
  have to use errno early.

- We take some care to pass the original format to die_routine(), in
  case someone wants to call die_errno() with custom format
  characters.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Thomas Rast authored and Junio C Hamano committed Jun 27, 2009
1 parent 26c117d commit b875036
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
1 change: 1 addition & 0 deletions git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ extern char *gitbasename(char *);
/* 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 int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)));

Expand Down
12 changes: 12 additions & 0 deletions usage.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,18 @@ void die(const char *err, ...)
va_end(params);
}

void die_errno(const char *fmt, ...)
{
va_list params;
char fmt_with_err[1024];

snprintf(fmt_with_err, sizeof(fmt_with_err), "%s: %s", fmt, strerror(errno));

va_start(params, fmt);
die_routine(fmt_with_err, params);
va_end(params);
}

int error(const char *err, ...)
{
va_list params;
Expand Down

0 comments on commit b875036

Please sign in to comment.