difftool: handle unmerged files in dir-diff mode
[gitweb.git] / builtin / submodule--helper.c
index b59c66f0116fbc3b7157db0fd13f2a067a672000..3bea3aaa5029082198abab2b5a5dab838dbd6dec 100644 (file)
@@ -22,17 +22,12 @@ static int module_list_compute(int argc, const char **argv,
                               struct module_list *list)
 {
        int i, result = 0;
-       char *max_prefix, *ps_matched = NULL;
-       int max_prefix_len;
+       char *ps_matched = NULL;
        parse_pathspec(pathspec, 0,
                       PATHSPEC_PREFER_FULL |
                       PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP,
                       prefix, argv);
 
-       /* Find common prefix for all pathspec's */
-       max_prefix = common_prefix(pathspec);
-       max_prefix_len = max_prefix ? strlen(max_prefix) : 0;
-
        if (pathspec->nr)
                ps_matched = xcalloc(pathspec->nr, 1);
 
@@ -42,9 +37,9 @@ static int module_list_compute(int argc, const char **argv,
        for (i = 0; i < active_nr; i++) {
                const struct cache_entry *ce = active_cache[i];
 
-               if (!S_ISGITLINK(ce->ce_mode) ||
-                   !match_pathspec(pathspec, ce->name, ce_namelen(ce),
-                                   max_prefix_len, ps_matched, 1))
+               if (!match_pathspec(pathspec, ce->name, ce_namelen(ce),
+                                   0, ps_matched, 1) ||
+                   !S_ISGITLINK(ce->ce_mode))
                        continue;
 
                ALLOC_GROW(list->entries, list->nr + 1, list->alloc);
@@ -57,7 +52,6 @@ static int module_list_compute(int argc, const char **argv,
                         */
                        i++;
        }
-       free(max_prefix);
 
        if (ps_matched && report_path_error(ps_matched, pathspec, prefix))
                result = -1;
@@ -229,8 +223,8 @@ static int module_clone(int argc, const char **argv, const char *prefix)
        if (!submodule_dot_git)
                die_errno(_("cannot open file '%s'"), sb.buf);
 
-       fprintf(submodule_dot_git, "gitdir: %s\n",
-               relative_path(sm_gitdir, path, &rel_path));
+       fprintf_or_die(submodule_dot_git, "gitdir: %s\n",
+                      relative_path(sm_gitdir, path, &rel_path));
        if (fclose(submodule_dot_git))
                die(_("could not close file %s"), sb.buf);
        strbuf_reset(&sb);