forked from git/git
-
Notifications
You must be signed in to change notification settings - Fork 133
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'la/trailer-info' into seen
Refactoring. * la/trailer-info: trailer: spread usage of "trailer_block" language
- Loading branch information
Showing
3 changed files
with
76 additions
and
74 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,19 +13,20 @@ | |
* Copyright (c) 2013, 2014 Christian Couder <[email protected]> | ||
*/ | ||
|
||
struct trailer_info { | ||
struct trailer_block { | ||
/* | ||
* True if there is a blank line before the location pointed to by | ||
* trailer_block_start. | ||
* "start". | ||
*/ | ||
int blank_line_before_trailer; | ||
|
||
/* | ||
* Offsets to the trailer block start and end positions in the input | ||
* string. If no trailer block is found, these are both set to the | ||
* "true" end of the input (find_end_of_log_message()). | ||
* The locations of the start and end positions of the trailer block | ||
* found, as offsets from the beginning of the source text from which | ||
* this trailer block was parsed. If no trailer block is found, these | ||
* are both set to 0. | ||
*/ | ||
size_t trailer_block_start, trailer_block_end; | ||
size_t start, end; | ||
|
||
/* | ||
* Array of trailers found. | ||
|
@@ -975,16 +976,16 @@ static void unfold_value(struct strbuf *val) | |
strbuf_release(&out); | ||
} | ||
|
||
static struct trailer_info *trailer_info_new(void) | ||
static struct trailer_block *trailer_block_new(void) | ||
{ | ||
struct trailer_info *info = xcalloc(1, sizeof(*info)); | ||
return info; | ||
struct trailer_block *trailer_block = xcalloc(1, sizeof(*trailer_block)); | ||
return trailer_block; | ||
} | ||
|
||
static struct trailer_info *trailer_info_get(const struct process_trailer_options *opts, | ||
const char *str) | ||
static struct trailer_block *trailer_block_get(const struct process_trailer_options *opts, | ||
const char *str) | ||
{ | ||
struct trailer_info *info = trailer_info_new(); | ||
struct trailer_block *trailer_block = trailer_block_new(); | ||
size_t end_of_log_message = 0, trailer_block_start = 0; | ||
struct strbuf **trailer_lines, **ptr; | ||
char **trailer_strings = NULL; | ||
|
@@ -1017,34 +1018,34 @@ static struct trailer_info *trailer_info_get(const struct process_trailer_option | |
} | ||
strbuf_list_free(trailer_lines); | ||
|
||
info->blank_line_before_trailer = ends_with_blank_line(str, | ||
trailer_block_start); | ||
info->trailer_block_start = trailer_block_start; | ||
info->trailer_block_end = end_of_log_message; | ||
info->trailers = trailer_strings; | ||
info->trailer_nr = nr; | ||
trailer_block->blank_line_before_trailer = ends_with_blank_line(str, | ||
trailer_block_start); | ||
trailer_block->start = trailer_block_start; | ||
trailer_block->end = end_of_log_message; | ||
trailer_block->trailers = trailer_strings; | ||
trailer_block->trailer_nr = nr; | ||
|
||
return info; | ||
return trailer_block; | ||
} | ||
|
||
/* | ||
* Parse trailers in "str", populating the trailer info and "trailer_objects" | ||
* Parse trailers in "str", populating the trailer_block and "trailer_objects" | ||
* linked list structure. | ||
*/ | ||
struct trailer_info *parse_trailers(const struct process_trailer_options *opts, | ||
const char *str, | ||
struct list_head *trailer_objects) | ||
struct trailer_block *parse_trailers(const struct process_trailer_options *opts, | ||
const char *str, | ||
struct list_head *trailer_objects) | ||
{ | ||
struct trailer_info *info; | ||
struct trailer_block *trailer_block; | ||
struct strbuf tok = STRBUF_INIT; | ||
struct strbuf val = STRBUF_INIT; | ||
size_t i; | ||
|
||
info = trailer_info_get(opts, str); | ||
trailer_block = trailer_block_get(opts, str); | ||
|
||
for (i = 0; i < info->trailer_nr; i++) { | ||
for (i = 0; i < trailer_block->trailer_nr; i++) { | ||
int separator_pos; | ||
char *trailer = info->trailers[i]; | ||
char *trailer = trailer_block->trailers[i]; | ||
if (starts_with(trailer, comment_line_str)) | ||
continue; | ||
separator_pos = find_separator(trailer, separators); | ||
|
@@ -1065,7 +1066,7 @@ struct trailer_info *parse_trailers(const struct process_trailer_options *opts, | |
} | ||
} | ||
|
||
return info; | ||
return trailer_block; | ||
} | ||
|
||
void free_trailers(struct list_head *trailers) | ||
|
@@ -1077,28 +1078,28 @@ void free_trailers(struct list_head *trailers) | |
} | ||
} | ||
|
||
size_t trailer_block_start(struct trailer_info *info) | ||
size_t trailer_block_start(struct trailer_block *trailer_block) | ||
{ | ||
return info->trailer_block_start; | ||
return trailer_block->start; | ||
} | ||
|
||
size_t trailer_block_end(struct trailer_info *info) | ||
size_t trailer_block_end(struct trailer_block *trailer_block) | ||
{ | ||
return info->trailer_block_end; | ||
return trailer_block->end; | ||
} | ||
|
||
int blank_line_before_trailer_block(struct trailer_info *info) | ||
int blank_line_before_trailer_block(struct trailer_block *trailer_block) | ||
{ | ||
return info->blank_line_before_trailer; | ||
return trailer_block->blank_line_before_trailer; | ||
} | ||
|
||
void trailer_info_release(struct trailer_info *info) | ||
void trailer_block_release(struct trailer_block *trailer_block) | ||
{ | ||
size_t i; | ||
for (i = 0; i < info->trailer_nr; i++) | ||
free(info->trailers[i]); | ||
free(info->trailers); | ||
free(info); | ||
for (i = 0; i < trailer_block->trailer_nr; i++) | ||
free(trailer_block->trailers[i]); | ||
free(trailer_block->trailers); | ||
free(trailer_block); | ||
} | ||
|
||
void format_trailers(const struct process_trailer_options *opts, | ||
|
@@ -1166,19 +1167,19 @@ void format_trailers_from_commit(const struct process_trailer_options *opts, | |
struct strbuf *out) | ||
{ | ||
LIST_HEAD(trailer_objects); | ||
struct trailer_info *info = parse_trailers(opts, msg, &trailer_objects); | ||
struct trailer_block *trailer_block = parse_trailers(opts, msg, &trailer_objects); | ||
|
||
/* If we want the whole block untouched, we can take the fast path. */ | ||
if (!opts->only_trailers && !opts->unfold && !opts->filter && | ||
!opts->separator && !opts->key_only && !opts->value_only && | ||
!opts->key_value_separator) { | ||
strbuf_add(out, msg + info->trailer_block_start, | ||
info->trailer_block_end - info->trailer_block_start); | ||
strbuf_add(out, msg + trailer_block->start, | ||
trailer_block->end - trailer_block->start); | ||
} else | ||
format_trailers(opts, &trailer_objects, out); | ||
|
||
free_trailers(&trailer_objects); | ||
trailer_info_release(info); | ||
trailer_block_release(trailer_block); | ||
} | ||
|
||
void trailer_iterator_init(struct trailer_iterator *iter, const char *msg) | ||
|
@@ -1187,14 +1188,14 @@ void trailer_iterator_init(struct trailer_iterator *iter, const char *msg) | |
strbuf_init(&iter->key, 0); | ||
strbuf_init(&iter->val, 0); | ||
opts.no_divider = 1; | ||
iter->internal.info = trailer_info_get(&opts, msg); | ||
iter->internal.trailer_block = trailer_block_get(&opts, msg); | ||
iter->internal.cur = 0; | ||
} | ||
|
||
int trailer_iterator_advance(struct trailer_iterator *iter) | ||
{ | ||
if (iter->internal.cur < iter->internal.info->trailer_nr) { | ||
char *line = iter->internal.info->trailers[iter->internal.cur++]; | ||
if (iter->internal.cur < iter->internal.trailer_block->trailer_nr) { | ||
char *line = iter->internal.trailer_block->trailers[iter->internal.cur++]; | ||
int separator_pos = find_separator(line, separators); | ||
|
||
iter->raw = line; | ||
|
@@ -1211,7 +1212,7 @@ int trailer_iterator_advance(struct trailer_iterator *iter) | |
|
||
void trailer_iterator_release(struct trailer_iterator *iter) | ||
{ | ||
trailer_info_release(iter->internal.info); | ||
trailer_block_release(iter->internal.trailer_block); | ||
strbuf_release(&iter->val); | ||
strbuf_release(&iter->key); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters