summaryrefslogtreecommitdiff
path: root/test/stdlib/test-mkostemp-child.c
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2014-10-27 16:13:34 -0400
committerWaldemar Brodkorb <wbx@openadk.org>2014-12-10 13:05:58 -0600
commit9649721950565d8a21a89017ac712257da644b75 (patch)
tree2e1cdebaa7facd753767e89be3793766b97d2ddf /test/stdlib/test-mkostemp-child.c
parent0cda37ffaf3cb7aec2c1c8b49e2a5b8f82255c3e (diff)
mkostemp: fix implementation
mkostemp(char *template, int flags) generates a unique temporary filename from a template. The flags parameter accepts three of the same flags as open(2): O_APPEND, O_CLOEXEC, and O_SYNC. The current implementation of mkostemp(3) does not respect the flags and in fact confuses the flags with the file mode which should always be S_IRUSR | S_IWUSR. This patch corrects this issue. Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Diffstat (limited to 'test/stdlib/test-mkostemp-child.c')
-rw-r--r--test/stdlib/test-mkostemp-child.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/stdlib/test-mkostemp-child.c b/test/stdlib/test-mkostemp-child.c
new file mode 100644
index 000000000..708bd80a1
--- /dev/null
+++ b/test/stdlib/test-mkostemp-child.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int main(int argc, char *argv[]) {
+ int fd;
+
+ /* This file gets built and run as a test, but its
+ * really just a helper for test-mkostemp-O_CLOEXEC.c.
+ * So, we'll always return succcess.
+ */
+ if(argc != 2)
+ exit(EXIT_SUCCESS);
+
+ sscanf(argv[1], "%d", &fd);
+
+ if(write(fd, "test\0", 5) == -1)
+ ; /* Don't Panic! Failure is okay here. */
+
+ close(fd);
+ exit(EXIT_SUCCESS);
+}