# HG changeset patch # User Jim Meyering # Date 868456827 0 # Node ID 012a30772bbfed8f2ce1ab652dd80905fcfadd05 # Parent b30f9ff1e92eb12d440eef9950651dc49ba4e56a Add comments. diff --git a/lib/makepath.c b/lib/makepath.c --- a/lib/makepath.c +++ b/lib/makepath.c @@ -210,6 +210,9 @@ saved_cwd = !save_cwd (&cwd); } + /* If save_cwd could not record the current directory, then don't + do the chdir optimization and resort to using full pathnames. */ + if (!saved_cwd) basename_dir = dirpath; @@ -258,6 +261,10 @@ leading_dirs = new; } + /* If we were able to save the initial working directory, + then we can use chdir to change into each directory before + creating an entry in that directory. This avoids making + stat and mkdir process O(n^2) file name components. */ if (saved_cwd && chdir (basename_dir) < 0) { error (0, errno, "cannot chdir to directory, %s", dirpath);