From: Jim Meyering Date: Sat, 28 Sep 2002 07:51:17 +0000 (+0000) Subject: Fix things so `mkdir -p' can create very deep directories, e.g., X-Git-Tag: v4.5.2~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c10d25fd0e66bbdd25160a97a06aac8363dce2f;p=thirdparty%2Fcoreutils.git Fix things so `mkdir -p' can create very deep directories, e.g., mkdir -p $(perl -e 'print "a/" x 40000') now works. (main): For --parents (-p), call make_path with the entire directory name, so we don't ever require that file operations like stat or chmod be performed on the entire command line argument. --- diff --git a/src/mkdir.c b/src/mkdir.c index 5df9c18495..382d8027b9 100644 --- a/src/mkdir.c +++ b/src/mkdir.c @@ -149,13 +149,11 @@ main (int argc, char **argv) if (create_parents) { - char *parents = dir_name (argv[optind]); - fail = make_path (parents, parent_mode, parent_mode, + char *dir = argv[optind]; + fail = make_path (dir, newmode, parent_mode, -1, -1, 1, verbose_fmt_string); - free (parents); } - - if (fail == 0) + else { const char *dir = argv[optind]; int dir_created;