Convert the users of for_each_string_list to for_each_string_list_item macro

The rule for selecting the candidates for conversion is: if the callback
function returns only 0 (the condition for for_each_string_list to exit
early), than it can be safely converted to the macro.

A notable exception are the callers in builtin/remote.c. If converted, the
readability in the file will suffer greately. Besides, the code is not very
performance critical (at the moment, at least): it does output formatting of
the list of remotes.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Alex Riesen
2010-07-03 14:41:54 +02:00
committed by Junio C Hamano
parent 8d31635ce2
commit 8a57c6e943
4 changed files with 66 additions and 105 deletions

View File

@ -28,29 +28,25 @@ void record_resolve_undo(struct index_state *istate, struct cache_entry *ce)
ui->mode[stage - 1] = ce->ce_mode;
}
static int write_one(struct string_list_item *item, void *cbdata)
{
struct strbuf *sb = cbdata;
struct resolve_undo_info *ui = item->util;
int i;
if (!ui)
return 0;
strbuf_addstr(sb, item->string);
strbuf_addch(sb, 0);
for (i = 0; i < 3; i++)
strbuf_addf(sb, "%o%c", ui->mode[i], 0);
for (i = 0; i < 3; i++) {
if (!ui->mode[i])
continue;
strbuf_add(sb, ui->sha1[i], 20);
}
return 0;
}
void resolve_undo_write(struct strbuf *sb, struct string_list *resolve_undo)
{
for_each_string_list(resolve_undo, write_one, sb);
struct string_list_item *item;
for_each_string_list_item(item, resolve_undo) {
struct resolve_undo_info *ui = item->util;
int i;
if (!ui)
continue;
strbuf_addstr(sb, item->string);
strbuf_addch(sb, 0);
for (i = 0; i < 3; i++)
strbuf_addf(sb, "%o%c", ui->mode[i], 0);
for (i = 0; i < 3; i++) {
if (!ui->mode[i])
continue;
strbuf_add(sb, ui->sha1[i], 20);
}
}
}
struct string_list *resolve_undo_read(const char *data, unsigned long size)