On Monday 01 August 2011 20:07:04 Ramkumar Ramachandra wrote: > > +static void read_populate_todo(struct commit_list **todo_list, > + struct replay_opts *opts) > +{ > + const char *todo_file = git_path(SEQ_TODO_FILE); > + struct strbuf buf = STRBUF_INIT; > + struct commit_list **next; > + struct commit *commit; > + char *p; > + int fd; > + > + fd = open(todo_file, O_RDONLY); > + if (fd < 0) > + die_errno(_("Could not open %s."), todo_file); > + if (strbuf_read(&buf, fd, 0) < 0) { > + close(fd); > + strbuf_release(&buf); > + die(_("Could not read %s."), todo_file); > + } > + close(fd); > + > + next = todo_list; > + for (p = buf.buf; *p; p = strchr(p, '\n') + 1) { > + commit = parse_insn_line(p, opts); > + if (!commit) > + goto error; > + next = commit_list_append(commit, next); > + } > + if (!*todo_list) > + goto error; > + strbuf_release(&buf); > + return; > +error: > + strbuf_release(&buf); > + die(_("Unusable instruction sheet: %s"), todo_file); > +} I'd suggest using 2 functions like this: static int parse_insn_buffer(char *buffer, struct commit_list **todo_list, struct replay_opts *opts) { struct commit_list **next = todo_list; char *p = buffer; int i; for (i = 1; p && *p; i++) { struct commit *commit = parse_insn_line(p, opts); if (!commit) return error(_("Could not parse line %d."), i); next = commit_list_append(commit, next); p = strchr(p, '\n'); if (p) p++; } if (!*todo_list) return error(_("Could not parse one commit.")); return 0; } static void read_populate_todo(struct commit_list **todo_list, struct replay_opts *opts) { const char *todo_file = git_path(SEQ_TODO_FILE); struct strbuf buf = STRBUF_INIT; int fd, res; fd = open(todo_file, O_RDONLY); if (fd < 0) die_errno(_("Could not open %s."), todo_file); if (strbuf_read(&buf, fd, 0) < 0) { close(fd); strbuf_release(&buf); die(_("Could not read %s."), todo_file); } close(fd); res = parse_insn_buffer(buf.buf, todo_list, opts); strbuf_release(&buf); if (res) die(_("Unusable instruction sheet: %s"), todo_file); } Thanks, Christian. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html