static int git_xdiff_parse_hunk(git_diff_hunk *hunk, const char *header) { /* expect something of the form "@@ -%d[,%d] +%d[,%d] @@" */ if (*header != '@') goto fail; if (git_xdiff_scan_int(&header, &hunk->old_start) < 0) goto fail; if (*header == ',') { if (git_xdiff_scan_int(&header, &hunk->old_lines) < 0) goto fail; } else hunk->old_lines = 1; if (git_xdiff_scan_int(&header, &hunk->new_start) < 0) goto fail; if (*header == ',') { if (git_xdiff_scan_int(&header, &hunk->new_lines) < 0) goto fail; } else hunk->new_lines = 1; if (hunk->old_start < 0 || hunk->new_start < 0) goto fail; return 0; fail: git_error_set(GIT_ERROR_INVALID, "malformed hunk header from xdiff"); return -1; }
static int git_xdiff_parse_hunk(git_diff_hunk *hunk, const char *header) { /* expect something of the form "@@ -%d[,%d] +%d[,%d] @@" */ if (*header != '@') return -1; if (git_xdiff_scan_int(&header, &hunk->old_start) < 0) return -1; if (*header == ',') { if (git_xdiff_scan_int(&header, &hunk->old_lines) < 0) return -1; } else hunk->old_lines = 1; if (git_xdiff_scan_int(&header, &hunk->new_start) < 0) return -1; if (*header == ',') { if (git_xdiff_scan_int(&header, &hunk->new_lines) < 0) return -1; } else hunk->new_lines = 1; if (hunk->old_start < 0 || hunk->new_start < 0) return -1; return 0; }