summaryrefslogtreecommitdiff
path: root/src/refdb.c
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2013-04-22 04:06:11 -0700
committerVicent Martí <vicent@github.com>2013-04-22 04:06:11 -0700
commitf063a75882769cb6fc652de425ac16ba4b88b616 (patch)
tree8c9f02ac9b2e46846367098d3b6328c01cac7781 /src/refdb.c
parentbfb4facb3a5e0b650811560fc49d27247fd9d85d (diff)
parent21ca045100337bcb2905a20a72d42721d18871f9 (diff)
downloadlibgit2-f063a75882769cb6fc652de425ac16ba4b88b616.tar.gz
Merge pull request #1485 from libgit2/include-git2-sys
Create include/git2/sys and move backend APIs there
Diffstat (limited to 'src/refdb.c')
-rw-r--r--src/refdb.c37
1 files changed, 17 insertions, 20 deletions
diff --git a/src/refdb.c b/src/refdb.c
index 2a0fd702c..33a1934d1 100644
--- a/src/refdb.c
+++ b/src/refdb.c
@@ -7,15 +7,16 @@
#include "common.h"
#include "posix.h"
+
#include "git2/object.h"
#include "git2/refs.h"
#include "git2/refdb.h"
+#include "git2/sys/refdb_backend.h"
+
#include "hash.h"
#include "refdb.h"
#include "refs.h"
-#include "git2/refdb_backend.h"
-
int git_refdb_new(git_refdb **out, git_repository *repo)
{
git_refdb *db;
@@ -57,15 +58,19 @@ int git_refdb_open(git_refdb **out, git_repository *repo)
return 0;
}
-int git_refdb_set_backend(git_refdb *db, git_refdb_backend *backend)
+static void refdb_free_backend(git_refdb *db)
{
if (db->backend) {
- if(db->backend->free)
+ if (db->backend->free)
db->backend->free(db->backend);
else
git__free(db->backend);
}
+}
+int git_refdb_set_backend(git_refdb *db, git_refdb_backend *backend)
+{
+ refdb_free_backend(db);
db->backend = backend;
return 0;
@@ -74,23 +79,16 @@ int git_refdb_set_backend(git_refdb *db, git_refdb_backend *backend)
int git_refdb_compress(git_refdb *db)
{
assert(db);
-
- if (db->backend->compress) {
+
+ if (db->backend->compress)
return db->backend->compress(db->backend);
- }
-
+
return 0;
}
static void refdb_free(git_refdb *db)
{
- if (db->backend) {
- if(db->backend->free)
- db->backend->free(db->backend);
- else
- git__free(db->backend);
- }
-
+ refdb_free_backend(db);
git__free(db);
}
@@ -114,14 +112,13 @@ int git_refdb_lookup(git_reference **out, git_refdb *db, const char *ref_name)
git_reference *ref;
int error;
- assert(db && db->backend && ref_name);
-
- *out = NULL;
+ assert(db && db->backend && out && ref_name);
- if ((error = db->backend->lookup(&ref, db->backend, ref_name)) == 0)
- {
+ if (!(error = db->backend->lookup(&ref, db->backend, ref_name))) {
ref->db = db;
*out = ref;
+ } else {
+ *out = NULL;
}
return error;