Merge branch 'mg/rev-list-n-reverse-doc'
[gitweb.git] / vcs-svn / repo_tree.c
index e94d91d12966562e4cd43df9c34990dddc3465c3..207ffc3a831d31b1504838555c15a424c81754f5 100644 (file)
@@ -38,7 +38,7 @@ static uint32_t mark;
 static int repo_dirent_name_cmp(const void *a, const void *b);
 
 /* Treap for directory entries */
-trp_gen(static, dent_, struct repo_dirent, children, dent, repo_dirent_name_cmp);
+trp_gen(static, dent_, struct repo_dirent, children, dent, repo_dirent_name_cmp)
 
 uint32_t next_blob_mark(void)
 {
@@ -131,7 +131,7 @@ static void repo_write_dirent(uint32_t *path, uint32_t mode,
                if (dent == key) {
                        dent->mode = REPO_MODE_DIR;
                        dent->content_offset = 0;
-                       dent_insert(&dir->entries, dent);
+                       dent = dent_insert(&dir->entries, dent);
                }
 
                if (dent_offset(dent) < dent_pool.committed) {
@@ -142,7 +142,7 @@ static void repo_write_dirent(uint32_t *path, uint32_t mode,
                        dent->name_offset = name;
                        dent->mode = REPO_MODE_DIR;
                        dent->content_offset = dir_o;
-                       dent_insert(&dir->entries, dent);
+                       dent = dent_insert(&dir->entries, dent);
                }
 
                dir = repo_dir_from_dirent(dent);
@@ -175,25 +175,18 @@ void repo_add(uint32_t *path, uint32_t mode, uint32_t blob_mark)
        repo_write_dirent(path, mode, blob_mark, 0);
 }
 
-uint32_t repo_replace(uint32_t *path, uint32_t blob_mark)
+uint32_t repo_modify_path(uint32_t *path, uint32_t mode, uint32_t blob_mark)
 {
-       uint32_t mode = 0;
        struct repo_dirent *src_dent;
        src_dent = repo_read_dirent(active_commit, path);
-       if (src_dent != NULL) {
-               mode = src_dent->mode;
-               repo_write_dirent(path, mode, blob_mark, 0);
-       }
-       return mode;
-}
-
-void repo_modify(uint32_t *path, uint32_t mode, uint32_t blob_mark)
-{
-       struct repo_dirent *src_dent;
-       src_dent = repo_read_dirent(active_commit, path);
-       if (src_dent != NULL && blob_mark == 0)
+       if (!src_dent)
+               return 0;
+       if (!blob_mark)
                blob_mark = src_dent->content_offset;
+       if (!mode)
+               mode = src_dent->mode;
        repo_write_dirent(path, mode, blob_mark, 0);
+       return mode;
 }
 
 void repo_delete(uint32_t *path)