diff options
| author | Vicent Martà <vicent@github.com> | 2013-04-22 04:06:11 -0700 |
|---|---|---|
| committer | Vicent Martà <vicent@github.com> | 2013-04-22 04:06:11 -0700 |
| commit | f063a75882769cb6fc652de425ac16ba4b88b616 (patch) | |
| tree | 8c9f02ac9b2e46846367098d3b6328c01cac7781 /src/refdb.c | |
| parent | bfb4facb3a5e0b650811560fc49d27247fd9d85d (diff) | |
| parent | 21ca045100337bcb2905a20a72d42721d18871f9 (diff) | |
| download | libgit2-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.c | 37 |
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; |
