summaryrefslogtreecommitdiff
path: root/src/revparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/revparse.c')
-rw-r--r--src/revparse.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/src/revparse.c b/src/revparse.c
index d2c14ccbb..a4fedd27c 100644
--- a/src/revparse.c
+++ b/src/revparse.c
@@ -870,47 +870,43 @@ cleanup:
int git_revparse(
- git_object **left,
- git_object **right,
- unsigned int *flags,
- git_repository *repo,
- const char *spec)
+ git_revision *revision,
+ git_repository *repo,
+ const char *spec)
{
- unsigned int lflags = 0;
const char *dotdot;
int error = 0;
- assert(left && repo && spec);
+ assert(revision && repo && spec);
+
+ memset(revision, 0x0, sizeof(*revision));
if ((dotdot = strstr(spec, "..")) != NULL) {
char *lstr;
const char *rstr;
- lflags = GIT_REVPARSE_RANGE;
+ revision->flags = GIT_REVPARSE_RANGE;
- lstr = git__substrdup(spec, dotdot-spec);
+ lstr = git__substrdup(spec, dotdot - spec);
rstr = dotdot + 2;
if (dotdot[2] == '.') {
- lflags |= GIT_REVPARSE_MERGE_BASE;
+ revision->flags |= GIT_REVPARSE_MERGE_BASE;
rstr++;
}
- if ((error = git_revparse_single(left, repo, lstr)) < 0) {
+ if ((error = git_revparse_single(&revision->from, repo, lstr)) < 0) {
return error;
}
- if (right &&
- (error = git_revparse_single(right, repo, rstr)) < 0) {
+
+ if ((error = git_revparse_single(&revision->to, repo, rstr)) < 0) {
return error;
}
git__free((void*)lstr);
} else {
- lflags = GIT_REVPARSE_SINGLE;
- error = git_revparse_single(left, repo, spec);
+ revision->flags = GIT_REVPARSE_SINGLE;
+ error = git_revparse_single(&revision->from, repo, spec);
}
- if (flags)
- *flags = lflags;
-
return error;
}