Junio C Hamano <gitster@xxxxxxxxx> writes: > Isn't it more intuitive to structure the loop by saying 'Ok, if "path" up > to the currently proposed "prefix" is too long to match, let's shorten it > by one path component and try again'? Another way of saying this, which probably needs less number of scans, would be to shorten prefix to what is known to match --- use of memcmp() discards this information. static int common_prefix(const char **pathspec) { const char *path, *slash, *next; int prefix; if (!pathspec) return 0; path = *pathspec; slash = strrchr(path, '/'); if (!slash) return 0; prefix = slash - path + 1; while ((next = *++pathspec) != NULL) { int len, last_matching_slash = -1; for (len = 0; len < prefix && next[len] == path[len]; len++) if (next[len] == '/') last_matching_slash = len; if (len == prefix) continue; if (last_matching_slash < 0) return 0; prefix = last_matching_slash + 1; } return prefix; } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html