struct worktree *find_worktree(struct worktree **list, const char *prefix, const char *arg) { struct worktree *wt; char *path; char *to_free = NULL; if ((wt = find_worktree_by_suffix(list, arg))) return wt; if (prefix) arg = to_free = prefix_filename(prefix, arg); path = real_pathdup(arg, 0); if (!path) { free(to_free); return NULL; } for (; *list; list++) if (!fspathcmp(path, real_path((*list)->path))) break; free(path); free(to_free); return *list; }
struct worktree *find_worktree(struct worktree **list, const char *prefix, const char *arg) { struct worktree *wt; char *path; if ((wt = find_worktree_by_suffix(list, arg))) return wt; arg = prefix_filename(prefix, strlen(prefix), arg); path = xstrdup(real_path(arg)); for (; *list; list++) if (!fspathcmp(path, real_path((*list)->path))) break; free(path); return *list; }