diff --git a/ChangeLog b/ChangeLog index 39662680d9..8a4067d481 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-10-01 Ulrich Drepper + + * posix/bug-glob1.c (prepare): Fix creation of symlink. + 2004-09-30 Ulrich Drepper * posix/Makefile: Add rules to build and run bug-glob1. diff --git a/posix/bug-glob1.c b/posix/bug-glob1.c index 4f7e981c75..05c2da7584 100644 --- a/posix/bug-glob1.c +++ b/posix/bug-glob1.c @@ -26,15 +26,21 @@ prepare (int argc, char *argv[]) size_t len = strlen (argv[1]); static const char ext[] = "globXXXXXX"; - fname = malloc (len + 1 + sizeof (ext)); + fname = malloc (len + sizeof (ext)); if (fname == NULL) error (EXIT_FAILURE, errno, "cannot create temp file"); - strcpy (stpcpy (stpcpy (fname, argv[1]), "/"), ext); + again: + strcpy (stpcpy (fname, argv[1]), ext); fname = mktemp (fname); if (fname == NULL || *fname == '\0') error (EXIT_FAILURE, errno, "cannot create temp file name"); if (symlink ("bug-glob1-does-not-exist", fname) != 0) - error (EXIT_FAILURE, errno, "cannot create symlink"); + { + if (errno == EEXIST) + goto again; + + error (EXIT_FAILURE, errno, "cannot create symlink"); + } add_temp_file (fname); }