On Mon, 2007-07-16 19:38:41 +0200, Thomas Glanzmann [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Calling unlink on a directory on a Solaris UFS filesystem as root makes it
inconsistent. Thanks to Johannes Sixt for the obvious fix.
Signed-off-by: Thomas Glanzmann <redacted>
---
entry.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/entry.c b/entry.c
index 82bf725..907293f 100644
--- a/entry.c
+++ b/entry.c
@@ -6,18 +6,18 @@ static void create_directories(const char *path, const struct checkout *state)
int len = strlen(path);
char *buf = xmalloc(len + 1);
const char *slash = path;
+ struct stat st;
Whitespace damage.
while ((slash = strchr(slash+1, '/')) != NULL) {
len = slash - path;
memcpy(buf, path, len);
buf[len] = 0;
+ if (!stat(buf, &st) && S_ISDIR(st.st_mode))
+ continue; /* ok */
Dito.
if (mkdir(buf, 0777)) {
if (errno == EEXIST) {
- struct stat st;
if (len > state->base_dir_len && state->force && !unlink(buf) && !mkdir(buf, 0777))
continue;
- if (!stat(buf, &st) && S_ISDIR(st.st_mode))
- continue; /* ok */
}
die("cannot create directory at %s", buf);
}
MfG, JBG
--
Jan-Benedict Glaw jbglaw@lug-owl.de +49-172-7608481
Signature of: "really soon now": an unspecified period of time, likly to
the second : be greater than any reasonable definition
of "soon".