summaryrefslogtreecommitdiff
path: root/src/test/thread
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2011-08-21 21:24:03 -0400
committerBruce Momjian <bruce@momjian.us>2011-08-21 21:24:03 -0400
commite319ec4b7378e047e6bb92bd1bb7ff7d515d64a3 (patch)
treed9eae57208c04235dacc022997b75ae1ef3f7f75 /src/test/thread
parentb33f78df17c32364d51f6e5128f8d81d7d3013a2 (diff)
downloadpostgresql-e319ec4b7378e047e6bb92bd1bb7ff7d515d64a3.tar.gz
Simplify errno generating in thread testing program.
Diffstat (limited to 'src/test/thread')
-rw-r--r--src/test/thread/thread_test.c60
1 files changed, 41 insertions, 19 deletions
diff --git a/src/test/thread/thread_test.c b/src/test/thread/thread_test.c
index 2271ba6561..6fef840d52 100644
--- a/src/test/thread/thread_test.c
+++ b/src/test/thread/thread_test.c
@@ -263,6 +263,9 @@ main(int argc, char *argv[])
}
}
+/*
+ * func_call_1
+ */
static void
func_call_1(void)
{
@@ -272,23 +275,38 @@ func_call_1(void)
void *p;
#endif
#ifdef WIN32
- HANDLE h1, h2;
+ HANDLE h1;
+#else
+ int fd;
#endif
unlink(TEMP_FILENAME_1);
+ /* Set errno = EEXIST */
+
/* create, then try to fail on exclusive create open */
#ifdef WIN32
- h1 = CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL);
- h2 = CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL);
- if (h1 == INVALID_HANDLE_VALUE || GetLastError() != ERROR_FILE_EXISTS)
+ if ((h1 = CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL)) ==
+ INVALID_HANDLE_VALUE)
+#else
+ if ((fd = open(TEMP_FILENAME_1, O_RDWR | O_CREAT, 0600)) < 0)
+#endif
+ {
+ fprintf(stderr, "Could not create file %s in current directory\n",
+ TEMP_FILENAME_1);
+ exit(1);
+ }
+
+#ifdef WIN32
+ if (CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL)
+ != INVALID_HANDLE_VALUE || GetLastError() != ERROR_FILE_EXISTS)
#else
- if (open(TEMP_FILENAME_1, O_RDWR | O_CREAT, 0600) < 0 ||
- open(TEMP_FILENAME_1, O_RDWR | O_CREAT | O_EXCL, 0600) >= 0)
+ if (open(TEMP_FILENAME_1, O_RDWR | O_CREAT | O_EXCL, 0600) >= 0)
#endif
{
- fprintf(stderr, "Could not create file in current directory or\n");
- fprintf(stderr, "could not generate failure for create file in current directory **\nexiting\n");
+ fprintf(stderr,
+ "Could not generate failure for exclusive file create of %s in current directory **\nexiting\n",
+ TEMP_FILENAME_1);
exit(1);
}
@@ -315,6 +333,11 @@ func_call_1(void)
exit(1);
}
+#ifdef WIN32
+ CloseHandle(h1);
+#else
+ close(fd);
+#endif
unlink(TEMP_FILENAME_1);
#ifndef HAVE_STRERROR_R
@@ -352,6 +375,9 @@ func_call_1(void)
}
+/*
+ * func_call_2
+ */
static void
func_call_2(void)
{
@@ -363,15 +389,14 @@ func_call_2(void)
unlink(TEMP_FILENAME_2);
- /* open non-existant file */
-#ifdef WIN32
- CreateFile(TEMP_FILENAME_2, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
- if (GetLastError() != ERROR_FILE_NOT_FOUND)
-#else
- if (open(TEMP_FILENAME_2, O_RDONLY, 0600) >= 0)
-#endif
+ /* Set errno = ENOENT */
+
+ /* This will fail, but we can't check errno yet */
+ if (unlink(TEMP_FILENAME_2) != -1)
{
- fprintf(stderr, "Read-only open succeeded without create **\nexiting\n");
+ fprintf(stderr,
+ "Could not generate failure for unlink of %s in current directory **\nexiting\n",
+ TEMP_FILENAME_2);
exit(1);
}
@@ -394,12 +419,9 @@ func_call_2(void)
#else
fprintf(stderr, "errno not thread-safe **\nexiting\n");
#endif
- unlink(TEMP_FILENAME_2);
exit(1);
}
- unlink(TEMP_FILENAME_2);
-
#ifndef HAVE_STRERROR_R
/*
* If strerror() uses sys_errlist, the pointer might change for different