Code

Merge branch 'jk/strbuf-vaddf'
[git.git] / vcs-svn / repo_tree.c
index e94d91d12966562e4cd43df9c34990dddc3465c3..491f0135a798f518fe2d226c9d01af90e6dac736 100644 (file)
@@ -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)