summaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
authorAlexander Potashev <aspotashev@gmail.com>2009-01-11 12:19:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-01-11 21:26:29 (GMT)
commit55892d23981917aefdb387ad7d0429f90cbd446a (patch)
tree72b1aab773fa37b50d07991de8a227994f1d6a7b /dir.c
parent8ca12c0d62c0be4a4987c4a936467ea2a92e915a (diff)
downloadgit-55892d23981917aefdb387ad7d0429f90cbd446a.zip
git-55892d23981917aefdb387ad7d0429f90cbd446a.tar.gz
git-55892d23981917aefdb387ad7d0429f90cbd446a.tar.bz2
Allow cloning to an existing empty directory
The die() message updated accordingly. The previous behaviour was to only allow cloning when the destination directory doesn't exist. [jc: added trivial tests] Signed-off-by: Alexander Potashev <aspotashev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/dir.c b/dir.c
index 3347f46..7c59829 100644
--- a/dir.c
+++ b/dir.c
@@ -777,6 +777,25 @@ int is_inside_dir(const char *dir)
return get_relative_cwd(buffer, sizeof(buffer), dir) != NULL;
}
+int is_empty_dir(const char *path)
+{
+ DIR *dir = opendir(path);
+ struct dirent *e;
+ int ret = 1;
+
+ if (!dir)
+ return 0;
+
+ while ((e = readdir(dir)) != NULL)
+ if (!is_dot_or_dotdot(e->d_name)) {
+ ret = 0;
+ break;
+ }
+
+ closedir(dir);
+ return ret;
+}
+
int remove_dir_recursively(struct strbuf *path, int only_empty)
{
DIR *dir = opendir(path->buf);