if (rc != 0)
{
fprintf(stderr, "Failed to create thread 1: %s **\nexiting\n",
- strerror(rc));
+ strerror(errno));
exit(1);
}
rc = pthread_create(&thread2, NULL, (void *(*) (void *)) func_call_2, NULL);
/* Set errno = EEXIST */
/* create, then try to fail on exclusive create open */
+ /*
+ * It would be great to check errno here but if errno is not thread-safe
+ * we might get a value from the other thread and mis-report the cause
+ * of the failure.
+ */
#ifdef WIN32
if ((h1 = CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL)) ==
INVALID_HANDLE_VALUE)
#ifdef WIN32
if (CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL)
- != INVALID_HANDLE_VALUE || GetLastError() != ERROR_FILE_EXISTS)
+ != INVALID_HANDLE_VALUE)
#else
if (open(TEMP_FILENAME_1, O_RDWR | O_CREAT | O_EXCL, 0600) >= 0)
#endif