Allow cloning to an existing empty directory
[gitweb.git] / entry.c
diff --git a/entry.c b/entry.c
index 222aaa374b8268828e9d529a8afacb8830acc281..5f24816eb9fe9fa934889336f2dbcdc7bf006635 100644 (file)
--- a/entry.c
+++ b/entry.c
@@ -1,5 +1,6 @@
 #include "cache.h"
 #include "blob.h"
+#include "dir.h"
 
 static void create_directories(const char *path, const struct checkout *state)
 {
@@ -62,9 +63,7 @@ static void remove_subtree(const char *path)
        *name++ = '/';
        while ((de = readdir(dir)) != NULL) {
                struct stat st;
-               if ((de->d_name[0] == '.') &&
-                   ((de->d_name[1] == 0) ||
-                    ((de->d_name[1] == '.') && de->d_name[2] == 0)))
+               if (is_dot_or_dotdot(de->d_name))
                        continue;
                strcpy(name, de->d_name);
                if (lstat(pathbuf, &st))
@@ -111,7 +110,7 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
        case S_IFREG:
                new = read_blob_entry(ce, path, &size);
                if (!new)
-                       return error("git-checkout-index: unable to read sha1 file of %s (%s)",
+                       return error("git checkout-index: unable to read sha1 file of %s (%s)",
                                path, sha1_to_hex(ce->sha1));
 
                /*
@@ -132,7 +131,7 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
                        fd = create_file(path, ce->ce_mode);
                if (fd < 0) {
                        free(new);
-                       return error("git-checkout-index: unable to create file %s (%s)",
+                       return error("git checkout-index: unable to create file %s (%s)",
                                path, strerror(errno));
                }
 
@@ -140,12 +139,12 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
                close(fd);
                free(new);
                if (wrote != size)
-                       return error("git-checkout-index: unable to write file %s", path);
+                       return error("git checkout-index: unable to write file %s", path);
                break;
        case S_IFLNK:
                new = read_blob_entry(ce, path, &size);
                if (!new)
-                       return error("git-checkout-index: unable to read sha1 file of %s (%s)",
+                       return error("git checkout-index: unable to read sha1 file of %s (%s)",
                                path, sha1_to_hex(ce->sha1));
                if (to_tempfile || !has_symlinks) {
                        if (to_tempfile) {
@@ -155,31 +154,31 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
                                fd = create_file(path, 0666);
                        if (fd < 0) {
                                free(new);
-                               return error("git-checkout-index: unable to create "
+                               return error("git checkout-index: unable to create "
                                                 "file %s (%s)", path, strerror(errno));
                        }
                        wrote = write_in_full(fd, new, size);
                        close(fd);
                        free(new);
                        if (wrote != size)
-                               return error("git-checkout-index: unable to write file %s",
+                               return error("git checkout-index: unable to write file %s",
                                        path);
                } else {
                        wrote = symlink(new, path);
                        free(new);
                        if (wrote)
-                               return error("git-checkout-index: unable to create "
+                               return error("git checkout-index: unable to create "
                                                 "symlink %s (%s)", path, strerror(errno));
                }
                break;
        case S_IFGITLINK:
                if (to_tempfile)
-                       return error("git-checkout-index: cannot create temporary subproject %s", path);
+                       return error("git checkout-index: cannot create temporary subproject %s", path);
                if (mkdir(path, 0777) < 0)
-                       return error("git-checkout-index: cannot create subproject directory %s", path);
+                       return error("git checkout-index: cannot create subproject directory %s", path);
                break;
        default:
-               return error("git-checkout-index: unknown file mode for %s", path);
+               return error("git checkout-index: unknown file mode for %s", path);
        }
 
        if (state->refresh_cache) {