diff options
author | Junio C Hamano <junkio@cox.net> | 2006-05-14 16:39:14 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-05-14 16:39:14 -0700 |
commit | c621197a20d42b6b9115d7031bdb49e24f961898 (patch) | |
tree | 2cab7ba24afa0566325578946c8d338e09d42c10 | |
parent | Merge branch 'lt/config' into next (diff) | |
parent | git diff: support "-U" and "--unified" options properly (diff) | |
download | tgif-c621197a20d42b6b9115d7031bdb49e24f961898.tar.xz |
Merge branch 'lt/diff' into next
* lt/diff:
git diff: support "-U" and "--unified" options properly
include header to define uint32_t, necessary on Mac OS X
-rw-r--r-- | combine-diff.c | 1 | ||||
-rw-r--r-- | diff.c | 52 | ||||
-rw-r--r-- | diff.h | 1 | ||||
-rw-r--r-- | pack-objects.c | 1 | ||||
-rw-r--r-- | sha1_file.c | 1 |
5 files changed, 55 insertions, 1 deletions
diff --git a/combine-diff.c b/combine-diff.c index 8a8fe3863a..64b20cce24 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -608,6 +608,7 @@ static int show_patch_diff(struct combine_diff_path *elem, int num_parent, int abbrev = opt->full_index ? 40 : DEFAULT_ABBREV; mmfile_t result_file; + context = opt->context; /* Read the result of merge first */ if (!working_tree_file) result = grab_blob(elem->sha1, &result_size); @@ -558,7 +558,7 @@ static void builtin_diff(const char *name_a, ecbdata.label_path = lbl; xpp.flags = XDF_NEED_MINIMAL; - xecfg.ctxlen = 3; + xecfg.ctxlen = o->context; xecfg.flags = XDL_EMIT_FUNCNAMES; if (!diffopts) ; @@ -1182,6 +1182,7 @@ void diff_setup(struct diff_options *options) options->line_termination = '\n'; options->break_opt = -1; options->rename_limit = -1; + options->context = 3; options->change = diff_change; options->add_remove = diff_addremove; @@ -1222,11 +1223,60 @@ int diff_setup_done(struct diff_options *options) return 0; } +int opt_arg(const char *arg, int arg_short, const char *arg_long, int *val) +{ + char c, *eq; + int len; + + if (*arg != '-') + return 0; + c = *++arg; + if (!c) + return 0; + if (c == arg_short) { + c = *++arg; + if (!c) + return 1; + if (val && isdigit(c)) { + char *end; + int n = strtoul(arg, &end, 10); + if (*end) + return 0; + *val = n; + return 1; + } + return 0; + } + if (c != '-') + return 0; + arg++; + eq = strchr(arg, '='); + if (eq) + len = eq - arg; + else + len = strlen(arg); + if (!len || strncmp(arg, arg_long, len)) + return 0; + if (eq) { + int n; + char *end; + if (!isdigit(*++eq)) + return 0; + n = strtoul(eq, &end, 10); + if (*end) + return 0; + *val = n; + } + return 1; +} + int diff_opt_parse(struct diff_options *options, const char **av, int ac) { const char *arg = av[0]; if (!strcmp(arg, "-p") || !strcmp(arg, "-u")) options->output_format = DIFF_FORMAT_PATCH; + else if (opt_arg(arg, 'U', "unified", &options->context)) + options->output_format = DIFF_FORMAT_PATCH; else if (!strcmp(arg, "--patch-with-raw")) { options->output_format = DIFF_FORMAT_PATCH; options->with_raw = 1; @@ -32,6 +32,7 @@ struct diff_options { full_index:1, silent_on_remove:1, find_copies_harder:1; + int context; int break_opt; int detect_rename; int line_termination; diff --git a/pack-objects.c b/pack-objects.c index 1b9e7a1cb9..5466b15167 100644 --- a/pack-objects.c +++ b/pack-objects.c @@ -10,6 +10,7 @@ #include "tree-walk.h" #include <sys/time.h> #include <signal.h> +#include <stdint.h> static const char pack_usage[] = "git-pack-objects [-q] [--no-reuse-delta] [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list"; diff --git a/sha1_file.c b/sha1_file.c index 631a605201..3372ebcdca 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -13,6 +13,7 @@ #include "commit.h" #include "tag.h" #include "tree.h" +#include <stdint.h> #ifndef O_NOATIME #if defined(__linux__) && (defined(__i386__) || defined(__PPC__)) |