summaryrefslogtreecommitdiff
path: root/src/errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/errors.c')
-rw-r--r--src/errors.c20
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;