diff options
author | Junio C Hamano <junkio@cox.net> | 2006-04-05 12:22:35 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-05 12:22:35 -0700 |
commit | c1e335a43fb4c2f422b4d78693b2344114209632 (patch) | |
tree | 182e936a9e746ee5ea671e02b2e4af11ef0929b3 | |
parent | d9ea73e0564c7db8d791fe6b03c976ce57c9b079 (diff) | |
download | git-c1e335a43fb4c2f422b4d78693b2344114209632.tar.gz |
combine-diff: move the code to parse hunk-header into common library.
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | combine-diff.c | 46 | ||||
-rw-r--r-- | xdiff-interface.c | 46 | ||||
-rw-r--r-- | xdiff-interface.h | 3 |
3 files changed, 49 insertions, 46 deletions
diff --git a/combine-diff.c b/combine-diff.c index e17afd1096..4657eb4c33 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -111,52 +111,6 @@ static char *grab_blob(const unsigned char *sha1, unsigned long *size) return blob; } -static int parse_num(char **cp_p, unsigned int *num_p) -{ - char *cp = *cp_p; - unsigned int num = 0; - int read_some; - - while ('0' <= *cp && *cp <= '9') - num = num * 10 + *cp++ - '0'; - if (!(read_some = cp - *cp_p)) - return -1; - *cp_p = cp; - *num_p = num; - return 0; -} - -static int parse_hunk_header(char *line, int len, - unsigned int *ob, unsigned int *on, - unsigned int *nb, unsigned int *nn) -{ - char *cp; - cp = line + 4; - if (parse_num(&cp, ob)) { - bad_line: - return error("malformed diff output: %s", line); - } - if (*cp == ',') { - cp++; - if (parse_num(&cp, on)) - goto bad_line; - } - else - *on = 1; - if (*cp++ != ' ' || *cp++ != '+') - goto bad_line; - if (parse_num(&cp, nb)) - goto bad_line; - if (*cp == ',') { - cp++; - if (parse_num(&cp, nn)) - goto bad_line; - } - else - *nn = 1; - return -!!memcmp(cp, " @@", 3); -} - static void append_lost(struct sline *sline, int n, const char *line, int len) { struct lline *lline; diff --git a/xdiff-interface.c b/xdiff-interface.c index 0a66ded953..f7d6f98829 100644 --- a/xdiff-interface.c +++ b/xdiff-interface.c @@ -1,6 +1,52 @@ #include "cache.h" #include "xdiff-interface.h" +static int parse_num(char **cp_p, unsigned int *num_p) +{ + char *cp = *cp_p; + unsigned int num = 0; + int read_some; + + while ('0' <= *cp && *cp <= '9') + num = num * 10 + *cp++ - '0'; + if (!(read_some = cp - *cp_p)) + return -1; + *cp_p = cp; + *num_p = num; + return 0; +} + +int parse_hunk_header(char *line, int len, + unsigned int *ob, unsigned int *on, + unsigned int *nb, unsigned int *nn) +{ + char *cp; + cp = line + 4; + if (parse_num(&cp, ob)) { + bad_line: + return error("malformed diff output: %s", line); + } + if (*cp == ',') { + cp++; + if (parse_num(&cp, on)) + goto bad_line; + } + else + *on = 1; + if (*cp++ != ' ' || *cp++ != '+') + goto bad_line; + if (parse_num(&cp, nb)) + goto bad_line; + if (*cp == ',') { + cp++; + if (parse_num(&cp, nn)) + goto bad_line; + } + else + *nn = 1; + return -!!memcmp(cp, " @@", 3); +} + static void consume_one(void *priv_, char *s, unsigned long size) { struct xdiff_emit_state *priv = priv_; diff --git a/xdiff-interface.h b/xdiff-interface.h index e2f0d66123..ec682a2971 100644 --- a/xdiff-interface.h +++ b/xdiff-interface.h @@ -14,5 +14,8 @@ struct xdiff_emit_state { }; int xdiff_outf(void *priv_, mmbuffer_t *mb, int nbuf); +int parse_hunk_header(char *line, int len, + unsigned int *ob, unsigned int *on, + unsigned int *nb, unsigned int *nn); #endif |