summaryrefslogtreecommitdiff
path: root/lib/makepath.c
AgeCommit message (Collapse)Author
1999-05-06(make_dir): When reporting a mkdir failure and theJim Meyering
target cannot be `stat'ed, use the errno from the failed mkdir call, not the one from the stat call. Before this change, running `mkdir -p /no-dir/no-dir' as an unprivileged user would wrongly elicit `No such file or directory' instead of `Permission denied'.
1999-05-05Include makepath.h libintl.h, not after it.Jim Meyering
Otherwise, we'd get the wrong definition of PARAMS from libintl.h. (The method of defining PARAMS in libintl.h doesn't check PROTOTYPES, which is necessary on Irix4 since cc doesn't define __STDC__.) From Kaveh Ghazi.
1999-04-26(make_path): Use proper mode_t types and macros.Jim Meyering
Don't assume the traditional Unix values for mode bits. (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IRWXU): Define if not defined.
1999-01-02Include locale.h and libintl.h, and define `_()'.Jim Meyering
Mark translatable strings.
1999-01-02(make_dir): New function, factored out of make_path.Jim Meyering
(make_path): Use make_dir rather than open-coding it twice. This effectively reverses the order of the latter pair of stat/mkdir calls and fixes a race condition bug whereby one of two concurrent `mkdir -p' processes could fail with EEXIST.
1998-02-11Add my comment from ChangeLog entry for gkm's change.Jim Meyering
1998-01-10(make_path): Reformat 3 if-stmts to test `if (newly_created_dir)' only once.Jim Meyering
Suggestion from Andreas Schwab.
1998-01-10(make_path): Put only newly created directories on the LEADING_DIRS list.Jim Meyering
1998-01-02(make_path): Try to change ownership only if we've just created theJim Meyering
directory. Fix latent bug (s/&&/||/ in two places -- also, note that it could not be exercised via install or mkdir) whereby chown would not be invoked when only one of owner/group is not -1.
1997-12-28(make_path) [!__STDC__]: Remove K&R-style definition.Jim Meyering
1997-10-06(make_path): Print verbose message using fprintf, not error.Jim Meyering
1997-10-06(make_path): Print message IFF the directory wasJim Meyering
just created and the format string is non-NULL.
1997-07-09(make_path): Chdir to `/' before starting if necessary.Jim Meyering
Call save_cwd before while loop rather than from first iteration inside it.
1997-07-09Add comments.Jim Meyering
1997-07-01(make_path): Reorder stat-then-mkdir-if-missingJim Meyering
calls so that mkdir is called first. Before make_path would first `stat' a directory, then call mkdir if it didn't exist. But if some other process created the directory between the stat & mkdir, the mkdir would fail with EEXIST. Diagnosis and suggestion from Greg McGary.
1997-06-15Rewrite using save-cwd.c and chdir to remove quadratic component of complexity.Jim Meyering
Before, it processed O(n^2) directory name components via stat and mkdir. Now it's O(n). This makes mkdir -p a lot more efficient when creating directories with very many components. On a Linux 2.0.30 ext2fs filesystem this command: mkdir -p `perl -e 'print "a/" x 500'` now runs in 0.77 seconds (user+sys). Contrast that with the 9.5(!) seconds it took before.
1996-11-04libitizeJim Meyering
1996-09-28.Jim Meyering
1996-07-15update FSF address in copyrightJim Meyering
1996-07-14Remove my address.Jim Meyering
1995-05-19No longer include safe-l?stat.h.Jim Meyering
1995-05-13(make_path): Use stat, not SAFE_STAT.Jim Meyering
Use strchr, not index. Adjust defines accordingly.
1994-11-06merge with 1.12Jim Meyering
1994-11-04Include makepath.h.Jim Meyering
Add an argument: PRESERVE_EXISTING. Declare char* arguments const.
1994-10-02merge with 3.9hJim Meyering
1994-08-27.Jim Meyering
1994-08-27.Jim Meyering
1994-07-30Use SAFE_STAT instead of stat to avoid unnecessary failureJim Meyering
on systems for which stat can return EINTR.
1994-07-03.Jim Meyering
1993-10-12merge with 3.8.4cJim Meyering
1993-10-12merge with 3.8.4bJim Meyering
1993-10-06merge with 3.8.3bJim Meyering
1993-10-06merge with 3.8.3aJim Meyering
1993-05-13merge with 3.5.4Jim Meyering
1993-05-02merge with 3.5.1Jim Meyering
1993-04-04(make_path): Explicitly cast alloca return value to (char *).Jim Meyering
1993-03-29merge with 3.4.1Jim Meyering
1992-10-31Add parentheses to expressions like (c = *p++) as per suggestionJim Meyering
from gcc -Wall.
1992-10-31Initial revisionJim Meyering