mv: move index search code out
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 10 Aug 2014 02:29:33 +0000 (09:29 +0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 3 Sep 2014 21:59:43 +0000 (14:59 -0700)
"Huh?" is removed from die() message.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/mv.c
index 3b19ca26b2bb8db5ffb273b7cc40c09ae88e8908..42a04d2b8b20838da236d96cbffdb0d0b7b4333c 100644 (file)
@@ -78,6 +78,29 @@ static void prepare_move_submodule(const char *src, int first,
        strbuf_release(&submodule_dotgit);
 }
 
+static int index_range_of_same_dir(const char *src, int length,
+                                  int *first_p, int *last_p)
+{
+       const char *src_w_slash = add_slash(src);
+       int first, last, len_w_slash = length + 1;
+
+       first = cache_name_pos(src_w_slash, len_w_slash);
+       if (first >= 0)
+               die(_("%.*s is in index"), len_w_slash, src_w_slash);
+
+       first = -1 - first;
+       for (last = first; last < active_nr; last++) {
+               const char *path = active_cache[last]->name;
+               if (strncmp(path, src_w_slash, len_w_slash))
+                       break;
+       }
+       if (src_w_slash != src)
+               free((char *)src_w_slash);
+       *first_p = first;
+       *last_p = last;
+       return last - first;
+}
+
 int cmd_mv(int argc, const char **argv, const char *prefix)
 {
        int i, gitmodules_modified = 0;
@@ -154,25 +177,10 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
                                prepare_move_submodule(src, first,
                                                       submodule_gitfile + i);
                        else {
-                               const char *src_w_slash = add_slash(src);
-                               int last, len_w_slash = length + 1;
+                               int last;
 
                                modes[i] = WORKING_DIRECTORY;
-
-                               first = cache_name_pos(src_w_slash, len_w_slash);
-                               if (first >= 0)
-                                       die (_("Huh? %.*s is in index?"),
-                                                       len_w_slash, src_w_slash);
-
-                               first = -1 - first;
-                               for (last = first; last < active_nr; last++) {
-                                       const char *path = active_cache[last]->name;
-                                       if (strncmp(path, src_w_slash, len_w_slash))
-                                               break;
-                               }
-                               if (src_w_slash != src)
-                                       free((char *)src_w_slash);
-
+                               index_range_of_same_dir(src, length, &first, &last);
                                if (last - first < 1)
                                        bad = _("source directory is empty");
                                else {