Re: [PATCH] Do _not_ call unlink on a directory
On Mon, 2007-07-16 19:38:41 +0200, Thomas Glanzmann <sithglan@stud.uni-erlangen.de> wrote:
Show 17 quoted lines
> 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 <sithglan@stud.uni-erlangen.de>
> ---
> 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;
Show 6 quoted lines
> 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 */Show 10 quoted lines
> 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);
> }--
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".