Signed-off-by: Nguyễn Thái Ngọc Duy <[email protected]>
---
builtin/mv.c | 35 +++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/builtin/mv.c b/builtin/mv.c
index a7e02c0..5c6f58f 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -58,6 +58,11 @@ static const char *add_slash(const char *path)
return path;
}
+static void move_up_one(void *p, int nmemb, int size)
+{
+ memmove(p, (char*)p + size, nmemb * size);
+}
+
static struct lock_file lock_file;
#define SUBMODULE_WITH_GITDIR ((const char *)1)
@@ -224,24 +229,18 @@ int cmd_mv(int argc, const char **argv, const char
*prefix)
else
string_list_insert(&src_for_dst, dst);
- if (bad) {
- if (ignore_errors) {
- if (--argc > 0) {
- memmove(source + i, source + i + 1,
- (argc - i) * sizeof(char *));
- memmove(destination + i,
- destination + i + 1,
- (argc - i) * sizeof(char *));
- memmove(modes + i, modes + i + 1,
- (argc - i) * sizeof(enum
update_mode));
- memmove(submodule_gitfile + i,
- submodule_gitfile + i + 1,
- (argc - i) * sizeof(char *));
- i--;
- }
- } else
- die (_("%s, source=%s, destination=%s"),
- bad, src, dst);
+ if (!bad)
+ continue;
+ if (!ignore_errors)
+ die (_("%s, source=%s, destination=%s"),
+ bad, src, dst);
+ if (--argc > 0) {
+ int n = argc - i;
+ move_up_one(source + i, n, sizeof(*source));
+ move_up_one(destination + i, n, sizeof(*destination));
+ move_up_one(modes + i, n, sizeof(*modes));
+ move_up_one(submodule_gitfile + i, n,
sizeof(*submodule_gitfile));
+ i--;
}
}
--
2.1.0.rc0.78.gc0d8480
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html