]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/blobdiff - tests/example.c
tests: Check return values of write() and dup2().
[coloredstderr/coloredstderr.git] / tests / example.c
index 7f7d2ad99e4e88114968ceb6eb5aa6312ca13e31..54f6c95dab57770c64deac1f4150ed90383ccfeb 100644 (file)
@@ -25,6 +25,7 @@
 #include <errno.h>
 
 #include "../src/compiler.h"
+#include "example.h"
 
 
 int main(int argc, char **argv unused) {
@@ -32,25 +33,37 @@ int main(int argc, char **argv unused) {
     printf("write to stdout\n");
     fflush(stdout);
 
-    errno = 0;
+    errno = ENOMEM;
     perror("error!");
 
-    write(STDERR_FILENO, "write to stderr 2", 17);
-    write(STDOUT_FILENO, "write to stdout 2", 17);
+    xwrite(STDERR_FILENO, "write to stderr 2", 17);
+    xwrite(STDOUT_FILENO, "write to stdout 2", 17);
 
     fprintf(stderr, "\n");
     fprintf(stdout, "\n");
     fflush(stdout);
 
-    /* Check usage of tracked_fds_list (at least in parts). No error checking
-     * here! */
-    dup2(STDERR_FILENO, 471);
-    dup2(471, 42);
-    write(471, "more on stderr\n", 15);
+    /* Check usage of tracked_fds_list (at least in parts). */
+    xdup2(STDERR_FILENO, 471);
+    xdup2(471, 42);
+    xwrite(471, "more on stderr\n", 15);
     close(471);
-    dup2(STDOUT_FILENO, 471);
-    write(42, "stderr ...\n", 11);
-    write(471, "more on stdout\n", 15);
+    xdup2(STDOUT_FILENO, 471);
+    xwrite(42, "stderr ...\n", 11);
+    xwrite(471, "more on stdout\n", 15);
+
+    /* Glibc uses __overflow() for this ... */
+    putc_unlocked('x', stderr);
+    putc_unlocked('\n', stdout);
+
+    /* Test invalid stuff. */
+    write(-3, "foo", 3);
+    close(-42);
+    close(-4711);
+    /* Can't test this, results in a segfault with the "normal" fclose(). */
+    /*fclose(NULL);*/
+    dup(-12);
+    dup2(12, -42);
 
     return EXIT_SUCCESS;
 }