summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-06-24 08:06:51 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-06-24 08:06:51 (GMT)
commitbc1f262d67cbe1c736c5dca911f6f085f47ac9bb (patch)
tree09d2fd4312b16cb841238edd2b5ad3a10b6f5263
parent1f330269371cc77b7abfcc99c7b15ad7b86f09c9 (diff)
parentce88ac5b129dd562a1062522039366ebbf1157e1 (diff)
downloadgit-bc1f262d67cbe1c736c5dca911f6f085f47ac9bb.zip
git-bc1f262d67cbe1c736c5dca911f6f085f47ac9bb.tar.gz
git-bc1f262d67cbe1c736c5dca911f6f085f47ac9bb.tar.bz2
Merge branch 'pb/error'
* pb/error: usage: minimum type fix. Customizable error handlers git-merge: Don't use -p when outputting summary git-commit: allow -e option anywhere on command line patch-id: take "commit" prefix as well as "diff-tree" prefix
-rwxr-xr-xgit-commit.sh4
-rw-r--r--git-compat-util.h4
-rwxr-xr-xgit-merge.sh2
-rw-r--r--patch-id.c2
-rw-r--r--usage.c46
5 files changed, 52 insertions, 6 deletions
diff --git a/git-commit.sh b/git-commit.sh
index 6dd04fd..e74fe64 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -199,6 +199,7 @@ only=
logfile=
use_commit=
amend=
+edit_flag=
no_edit=
log_given=
log_message=
@@ -246,7 +247,7 @@ do
shift
;;
-e|--e|--ed|--edi|--edit)
- no_edit=
+ edit_flag=t
shift
;;
-i|--i|--in|--inc|--incl|--inclu|--includ|--include)
@@ -384,6 +385,7 @@ $1"
;;
esac
done
+case "$edit_flag" in t) no_edit= ;; esac
################################################################
# Sanity check options
diff --git a/git-compat-util.h b/git-compat-util.h
index 5d543d2..b3d4cf5 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -40,6 +40,10 @@ extern void usage(const char *err) NORETURN;
extern void die(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2)));
extern int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
+extern void set_usage_routine(void (*routine)(const char *err) NORETURN);
+extern void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN);
+extern void set_error_routine(void (*routine)(const char *err, va_list params));
+
#ifdef NO_MMAP
#ifndef PROT_READ
diff --git a/git-merge.sh b/git-merge.sh
index af1f25b..da5657e 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -55,7 +55,7 @@ finish () {
case "$no_summary" in
'')
- git-diff-tree -p --stat --summary -M "$head" "$1"
+ git-diff-tree --stat --summary -M "$head" "$1"
;;
esac
}
diff --git a/patch-id.c b/patch-id.c
index edbc4aa..3b4c80f 100644
--- a/patch-id.c
+++ b/patch-id.c
@@ -42,6 +42,8 @@ static void generate_id_list(void)
if (!memcmp(line, "diff-tree ", 10))
p += 10;
+ else if (!memcmp(line, "commit ", 7))
+ p += 7;
if (!get_sha1_hex(p, n)) {
flush_current_id(patchlen, sha1, &ctx);
diff --git a/usage.c b/usage.c
index 1fa924c..52c2e96 100644
--- a/usage.c
+++ b/usage.c
@@ -12,20 +12,58 @@ static void report(const char *prefix, const char *err, va_list params)
fputs("\n", stderr);
}
-void usage(const char *err)
+static NORETURN void usage_builtin(const char *err)
{
fprintf(stderr, "usage: %s\n", err);
exit(129);
}
+static NORETURN void die_builtin(const char *err, va_list params)
+{
+ report("fatal: ", err, params);
+ exit(128);
+}
+
+static void error_builtin(const char *err, va_list params)
+{
+ report("error: ", err, params);
+}
+
+
+/* If we are in a dlopen()ed .so write to a global variable would segfault
+ * (ugh), so keep things static. */
+static void (*usage_routine)(const char *err) NORETURN = usage_builtin;
+static void (*die_routine)(const char *err, va_list params) NORETURN = die_builtin;
+static void (*error_routine)(const char *err, va_list params) = error_builtin;
+
+void set_usage_routine(void (*routine)(const char *err) NORETURN)
+{
+ usage_routine = routine;
+}
+
+void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN)
+{
+ die_routine = routine;
+}
+
+void set_error_routine(void (*routine)(const char *err, va_list params))
+{
+ error_routine = routine;
+}
+
+
+void usage(const char *err)
+{
+ usage_routine(err);
+}
+
void die(const char *err, ...)
{
va_list params;
va_start(params, err);
- report("fatal: ", err, params);
+ die_routine(err, params);
va_end(params);
- exit(128);
}
int error(const char *err, ...)
@@ -33,7 +71,7 @@ int error(const char *err, ...)
va_list params;
va_start(params, err);
- report("error: ", err, params);
+ error_routine(err, params);
va_end(params);
return -1;
}