summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2021-05-27 13:59:39 +0900
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-05-27 14:02:37 +0900
commit1df046bcff6085f3800088c51e344594f822df57 (patch)
tree1bb0c3c0aca95201393debdba3b58602f1167027
parentdir: introduce readdir_skip_dot_and_dotdot() helper (diff)
downloadtgif-1df046bcff6085f3800088c51e344594f822df57.tar.xz
Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
This reverts commit b548f0f1568f6b01e55ca69c24d3cb19489f92aa, to be replaced with a reworked version.
-rw-r--r--builtin/clean.c4
-rw-r--r--builtin/worktree.c4
-rw-r--r--diff-no-index.c5
-rw-r--r--dir.c26
-rw-r--r--dir.h2
-rw-r--r--entry.c5
-rw-r--r--notes-merge.c5
-rw-r--r--object-file.c4
-rw-r--r--packfile.c5
-rw-r--r--rerere.c4
-rw-r--r--worktree.c12
11 files changed, 45 insertions, 31 deletions
diff --git a/builtin/clean.c b/builtin/clean.c
index a1a5747615..995053b791 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -189,8 +189,10 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
strbuf_complete(path, '/');
len = path->len;
- while ((e = readdir_skip_dot_and_dotdot(dir)) != NULL) {
+ while ((e = readdir(dir)) != NULL) {
struct stat st;
+ if (is_dot_or_dotdot(e->d_name))
+ continue;
strbuf_setlen(path, len);
strbuf_addstr(path, e->d_name);
diff --git a/builtin/worktree.c b/builtin/worktree.c
index e081ca9bef..1cd5c2016e 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -118,8 +118,10 @@ static void prune_worktrees(void)
struct dirent *d;
if (!dir)
return;
- while ((d = readdir_skip_dot_and_dotdot(dir)) != NULL) {
+ while ((d = readdir(dir)) != NULL) {
char *path;
+ if (is_dot_or_dotdot(d->d_name))
+ continue;
strbuf_reset(&reason);
if (should_prune_worktree(d->d_name, &reason, &path, expire))
prune_worktree(d->d_name, reason.buf);
diff --git a/diff-no-index.c b/diff-no-index.c
index e5cc878371..7814eabfe0 100644
--- a/diff-no-index.c
+++ b/diff-no-index.c
@@ -26,8 +26,9 @@ static int read_directory_contents(const char *path, struct string_list *list)
if (!(dir = opendir(path)))
return error("Could not open directory %s", path);
- while ((e = readdir_skip_dot_and_dotdot(dir)))
- string_list_insert(list, e->d_name);
+ while ((e = readdir(dir)))
+ if (!is_dot_or_dotdot(e->d_name))
+ string_list_insert(list, e->d_name);
closedir(dir);
return 0;
diff --git a/dir.c b/dir.c
index e47b4c507f..ff004b298b 100644
--- a/dir.c
+++ b/dir.c
@@ -59,18 +59,6 @@ void dir_init(struct dir_struct *dir)
memset(dir, 0, sizeof(*dir));
}
-struct dirent *
-readdir_skip_dot_and_dotdot(DIR *dirp)
-{
- struct dirent *e;
-
- while ((e = readdir(dirp)) != NULL) {
- if (!is_dot_or_dotdot(e->d_name))
- break;
- }
- return e;
-}
-
int count_slashes(const char *s)
{
int cnt = 0;
@@ -2344,7 +2332,7 @@ static int read_cached_dir(struct cached_dir *cdir)
struct dirent *de;
if (cdir->fdir) {
- de = readdir_skip_dot_and_dotdot(cdir->fdir);
+ de = readdir(cdir->fdir);
if (!de) {
cdir->d_name = NULL;
cdir->d_type = DT_UNKNOWN;
@@ -2943,9 +2931,11 @@ int is_empty_dir(const char *path)
if (!dir)
return 0;
- e = readdir_skip_dot_and_dotdot(dir);
- if (e)
- ret = 0;
+ while ((e = readdir(dir)) != NULL)
+ if (!is_dot_or_dotdot(e->d_name)) {
+ ret = 0;
+ break;
+ }
closedir(dir);
return ret;
@@ -2985,8 +2975,10 @@ static int remove_dir_recurse(struct strbuf *path, int flag, int *kept_up)
strbuf_complete(path, '/');
len = path->len;
- while ((e = readdir_skip_dot_and_dotdot(dir)) != NULL) {
+ while ((e = readdir(dir)) != NULL) {
struct stat st;
+ if (is_dot_or_dotdot(e->d_name))
+ continue;
strbuf_setlen(path, len);
strbuf_addstr(path, e->d_name);
diff --git a/dir.h b/dir.h
index 6b3fac0829..70c750e305 100644
--- a/dir.h
+++ b/dir.h
@@ -342,8 +342,6 @@ struct dir_struct {
unsigned visited_directories;
};
-struct dirent *readdir_skip_dot_and_dotdot(DIR *dirp);
-
/*Count the number of slashes for string s*/
int count_slashes(const char *s);
diff --git a/entry.c b/entry.c
index e3d3add300..7b9f43716f 100644
--- a/entry.c
+++ b/entry.c
@@ -56,9 +56,12 @@ static void remove_subtree(struct strbuf *path)
if (!dir)
die_errno("cannot opendir '%s'", path->buf);
- while ((de = readdir_skip_dot_and_dotdot(dir)) != NULL) {
+ while ((de = readdir(dir)) != NULL) {
struct stat st;
+ if (is_dot_or_dotdot(de->d_name))
+ continue;
+
strbuf_addch(path, '/');
strbuf_addstr(path, de->d_name);
if (lstat(path->buf, &st))
diff --git a/notes-merge.c b/notes-merge.c
index e9d6f86d34..d2771fa3d4 100644
--- a/notes-merge.c
+++ b/notes-merge.c
@@ -695,10 +695,13 @@ int notes_merge_commit(struct notes_merge_options *o,
strbuf_addch(&path, '/');
baselen = path.len;
- while ((e = readdir_skip_dot_and_dotdot(dir)) != NULL) {
+ while ((e = readdir(dir)) != NULL) {
struct stat st;
struct object_id obj_oid, blob_oid;
+ if (is_dot_or_dotdot(e->d_name))
+ continue;
+
if (get_oid_hex(e->d_name, &obj_oid)) {
if (o->verbosity >= 3)
printf("Skipping non-SHA1 entry '%s%s'\n",
diff --git a/object-file.c b/object-file.c
index 77bdcfd21b..624af408cd 100644
--- a/object-file.c
+++ b/object-file.c
@@ -2304,8 +2304,10 @@ int for_each_file_in_obj_subdir(unsigned int subdir_nr,
strbuf_addch(path, '/');
baselen = path->len;
- while ((de = readdir_skip_dot_and_dotdot(dir))) {
+ while ((de = readdir(dir))) {
size_t namelen;
+ if (is_dot_or_dotdot(de->d_name))
+ continue;
namelen = strlen(de->d_name);
strbuf_setlen(path, baselen);
diff --git a/packfile.c b/packfile.c
index 463d61c877..ea29f4ba77 100644
--- a/packfile.c
+++ b/packfile.c
@@ -813,7 +813,10 @@ void for_each_file_in_pack_dir(const char *objdir,
}
strbuf_addch(&path, '/');
dirnamelen = path.len;
- while ((de = readdir_skip_dot_and_dotdot(dir)) != NULL) {
+ while ((de = readdir(dir)) != NULL) {
+ if (is_dot_or_dotdot(de->d_name))
+ continue;
+
strbuf_setlen(&path, dirnamelen);
strbuf_addstr(&path, de->d_name);
diff --git a/rerere.c b/rerere.c
index d83d58df4f..dee60dc6df 100644
--- a/rerere.c
+++ b/rerere.c
@@ -1190,11 +1190,13 @@ void rerere_gc(struct repository *r, struct string_list *rr)
if (!dir)
die_errno(_("unable to open rr-cache directory"));
/* Collect stale conflict IDs ... */
- while ((e = readdir_skip_dot_and_dotdot(dir))) {
+ while ((e = readdir(dir))) {
struct rerere_dir *rr_dir;
struct rerere_id id;
int now_empty;
+ if (is_dot_or_dotdot(e->d_name))
+ continue;
if (!is_rr_cache_dirname(e->d_name))
continue; /* or should we remove e->d_name? */
diff --git a/worktree.c b/worktree.c
index 237517baee..f35ac40a84 100644
--- a/worktree.c
+++ b/worktree.c
@@ -128,8 +128,10 @@ struct worktree **get_worktrees(void)
dir = opendir(path.buf);
strbuf_release(&path);
if (dir) {
- while ((d = readdir_skip_dot_and_dotdot(dir)) != NULL) {
+ while ((d = readdir(dir)) != NULL) {
struct worktree *linked = NULL;
+ if (is_dot_or_dotdot(d->d_name))
+ continue;
if ((linked = get_linked_worktree(d->d_name))) {
ALLOC_GROW(list, counter + 1, alloc);
@@ -484,9 +486,13 @@ int submodule_uses_worktrees(const char *path)
if (!dir)
return 0;
- d = readdir_skip_dot_and_dotdot(dir);
- if (d != NULL)
+ while ((d = readdir(dir)) != NULL) {
+ if (is_dot_or_dotdot(d->d_name))
+ continue;
+
ret = 1;
+ break;
+ }
closedir(dir);
return ret;
}