diff options
Diffstat (limited to 'src/errors.c')
-rw-r--r-- | src/errors.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/errors.c b/src/errors.c index 73df2e209..40b0feb91 100644 --- a/src/errors.c +++ b/src/errors.c @@ -30,7 +30,25 @@ static GIT_TLS char g_last_error[1024]; -int git__error(int error, const char *msg, ...) +int git__rethrow(int error, const char *msg, ...) +{ + char new_error[1024]; + char *old_error = NULL; + + va_list va; + + va_start(va, msg); + vsnprintf(new_error, sizeof(new_error), msg, va); + va_end(va); + + old_error = strdup(g_last_error); + snprintf(g_last_error, sizeof(g_last_error), "%s \n - %s", new_error, old_error); + free(old_error); + + return error; +} + +int git__throw(int error, const char *msg, ...) { va_list va; |