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
This commit is contained in:
commit
bc1f262d67
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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);
|
||||
|
46
usage.c
46
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user