add COPY_ARRAY
[gitweb.git] / worktree.c
index 4817d600556e444f9b22551a4f59a8dadcf258f2..e2a94e04768b7484285ed2aa84259c6818b2cd02 100644 (file)
@@ -20,7 +20,7 @@ void free_worktrees(struct worktree **worktrees)
 
 /*
  * read 'path_to_ref' into 'ref'.  Also if is_detached is not NULL,
- * set is_detached to 1 (0) if the ref is detatched (is not detached).
+ * set is_detached to 1 (0) if the ref is detached (is not detached).
  *
  * $GIT_COMMON_DIR/$symref (e.g. HEAD) is practically outside $GIT_DIR so
  * for linked worktrees, `resolve_ref_unsafe()` won't work (it uses
@@ -153,21 +153,19 @@ static struct worktree *get_linked_worktree(const char *id)
 
 static void mark_current_worktree(struct worktree **worktrees)
 {
-       struct strbuf git_dir = STRBUF_INIT;
-       struct strbuf path = STRBUF_INIT;
+       char *git_dir = xstrdup(absolute_path(get_git_dir()));
        int i;
 
-       strbuf_addstr(&git_dir, absolute_path(get_git_dir()));
        for (i = 0; worktrees[i]; i++) {
                struct worktree *wt = worktrees[i];
-               strbuf_addstr(&path, absolute_path(get_worktree_git_dir(wt)));
-               wt->is_current = !fspathcmp(git_dir.buf, path.buf);
-               strbuf_reset(&path);
-               if (wt->is_current)
+               const char *wt_git_dir = get_worktree_git_dir(wt);
+
+               if (!fspathcmp(git_dir, absolute_path(wt_git_dir))) {
+                       wt->is_current = 1;
                        break;
+               }
        }
-       strbuf_release(&git_dir);
-       strbuf_release(&path);
+       free(git_dir);
 }
 
 struct worktree **get_worktrees(void)
@@ -189,7 +187,7 @@ struct worktree **get_worktrees(void)
        if (dir) {
                while ((d = readdir(dir)) != NULL) {
                        struct worktree *linked = NULL;
-                       if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
+                       if (is_dot_or_dotdot(d->d_name))
                                continue;
 
                        if ((linked = get_linked_worktree(d->d_name))) {