The error function always returns the constant value -1, and this does not convey enough information about the nature of the error. This patch introduces a new function error_errno that functions exactly like the error function, except that it returns `errorno` instead of a constant value. Signed-off-by: Ramkumar Ramachandra <artagnon@xxxxxxxxx> --- Is "-errno" correct? This will determine how error-handling will be in a more libified version of Git, and I think it's important to get this right. git-compat-util.h | 1 + usage.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) diff --git a/git-compat-util.h b/git-compat-util.h index 40498b3..7b82038 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -241,6 +241,7 @@ extern NORETURN void usagef(const char *err, ...) __attribute__((format (printf, 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 int error_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2))); extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params)); diff --git a/usage.c b/usage.c index b5e67e3..c89efcc 100644 --- a/usage.c +++ b/usage.c @@ -107,6 +107,16 @@ int error(const char *err, ...) return -1; } +int error_errno(const char *err, ...) +{ + va_list params; + + va_start(params, err); + error_routine(err, params); + va_end(params); + return -errno; +} + void warning(const char *warn, ...) { va_list params; -- 1.7.5.GIT -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html