From: Jan-Benedict Glaw Date: Mon, 16 Jul 2007 17:41:38 GMT Subject: Re: [PATCH] Do _not_ call unlink on a directory Message-ID: <20070716174138.GC22998@lug-owl.de> In-Reply-To: <11846075213759-git-send-email-sithglan@stud.uni-erlangen.de> On Mon, 2007-07-16 19:38:41 +0200, Thomas Glanzmann wrote: > 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 > --- > 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".