Strip trailing spaces off guessed target directory in builtin clone, and replace 'control' characters with an ASCII space. User still can have any name by specifying it explicitely after url. Signed-off-by: Alex Riesen <raa.lkml@xxxxxxxxx> --- This should take care of accidental pastings inside shell quotes. At least for the local part of the operation. Now I'm looking at the code and think I should have stripped the heading whitespace as well. It is much less likely to happen, though. builtin-clone.c | 24 ++++++++++++++++++------ 1 files changed, 18 insertions(+), 6 deletions(-) diff --git a/builtin-clone.c b/builtin-clone.c index 880373f..bdbe931 100644 --- a/builtin-clone.c +++ b/builtin-clone.c @@ -104,11 +104,12 @@ static char *get_repo_path(const char *repo, int *is_bundle) static char *guess_dir_name(const char *repo, int is_bundle, int is_bare) { const char *end = repo + strlen(repo), *start; + char *dir; /* - * Strip trailing slashes and /.git + * Strip trailing spaces, slashes and /.git */ - while (repo < end && is_dir_sep(end[-1])) + while (repo < end && (is_dir_sep(end[-1]) || isspace(end[-1]))) end--; if (end - repo > 5 && is_dir_sep(end[-5]) && !strncmp(end - 4, ".git", 4)) { @@ -140,10 +141,21 @@ static char *guess_dir_name(const char *repo, int is_bundle, int is_bare) if (is_bare) { struct strbuf result = STRBUF_INIT; strbuf_addf(&result, "%.*s.git", (int)(end - start), start); - return strbuf_detach(&result, 0); - } - - return xstrndup(start, end - start); + dir = strbuf_detach(&result, 0); + } else + dir = xstrndup(start, end - start); + /* replace all 'control' characters with ascii space */ + for (start = dir; *start; ++start) + if (*(const unsigned char *)start < 32u) + dir[start - dir] = '\x20'; + /* remove trailing spaces */ + if (dir < start) + for (end = start; dir < --end; ) + if (!isspace(*end)) + break; + else + dir[end - dir] = '\0'; + return dir; } static void strip_trailing_slashes(char *dir) -- 1.6.3.28.ga852b -- 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