Take some unistd.h dependencies out of examples
diff --git a/example/crc32/crc32.cc b/example/crc32/crc32.cc
index 5737fbe..97b5cc3 100644
--- a/example/crc32/crc32.cc
+++ b/example/crc32/crc32.cc
@@ -30,7 +30,6 @@
 #include <errno.h>
 #include <inttypes.h>
 #include <stdio.h>
-#include <unistd.h>
 
 // Wuffs ships as a "single file C library" or "header file library" as per
 // https://github.com/nothings/stb/blob/master/docs/stb_howto.txt
@@ -66,22 +65,14 @@
   }
 
   while (true) {
-    const int stdin_fd = 0;
-    ssize_t n = read(stdin_fd, src_buffer, SRC_BUFFER_SIZE);
-    if (n < 0) {
-      if (errno != EINTR) {
-        fprintf(stderr, "%s\n", strerror(errno));
-        return 1;
-      }
-      continue;
-    }
-
-    uint32_t checksum =
-        h.update(wuffs_base__make_slice_u8(src_buffer, static_cast<size_t>(n)));
-
-    if (n == 0) {
+    size_t n = fread(src_buffer, sizeof(uint8_t), SRC_BUFFER_SIZE, stdin);
+    uint32_t checksum = h.update(wuffs_base__make_slice_u8(src_buffer, n));
+    if (feof(stdin)) {
       printf("%08" PRIx32 "\n", checksum);
       return 0;
+    } else if (ferror(stdin)) {
+      fprintf(stderr, "read error\n");
+      return 1;
     }
   }
 }
diff --git a/example/gifplayer/gifplayer.c b/example/gifplayer/gifplayer.c
index 0bb7207..74ff1be 100644
--- a/example/gifplayer/gifplayer.c
+++ b/example/gifplayer/gifplayer.c
@@ -32,15 +32,17 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
 
-#ifndef _POSIX_TIMERS
-#error "TODO: timers on non-POSIX systems"
-#else
+// ----------------
+
+#if defined(__unix__) || defined(__MACH__)
+
 #include <time.h>
+#include <unistd.h>
+#define WUFFS_EXAMPLE_USE_TIMERS
 
 bool started = false;
-struct timespec start_time;
+struct timespec start_time = {0};
 
 int64_t micros_since_start(struct timespec* now) {
   if (!started) {
@@ -53,8 +55,13 @@
   }
   return nanos / 1000;
 }
+
+#else
+#warning "TODO: timers on non-POSIX systems"
 #endif
 
+// ----------------
+
 // Wuffs ships as a "single file C library" or "header file library" as per
 // https://github.com/nothings/stb/blob/master/docs/stb_howto.txt
 //
@@ -98,21 +105,15 @@
 
 wuffs_base__flicks cumulative_delay_micros = 0;
 
-// ignore_return_value suppresses errors from -Wall -Werror.
-static void ignore_return_value(int ignored) {}
-
 const char* read_stdin() {
   while (src_len < SRC_BUFFER_SIZE) {
-    const int stdin_fd = 0;
-    ssize_t n = read(stdin_fd, src_buffer + src_len, SRC_BUFFER_SIZE - src_len);
-    if (n > 0) {
-      src_len += n;
-    } else if (n == 0) {
+    size_t n = fread(src_buffer + src_len, sizeof(uint8_t),
+                     SRC_BUFFER_SIZE - src_len, stdin);
+    src_len += n;
+    if (feof(stdin)) {
       return NULL;
-    } else if (errno == EINTR) {
-      // No-op.
-    } else {
-      return strerror(errno);
+    } else if (ferror(stdin)) {
+      return "read error";
     }
   }
   return "input is too large";
@@ -380,7 +381,7 @@
       }
     }
 
-#ifdef _POSIX_TIMERS
+#if defined(WUFFS_EXAMPLE_USE_TIMERS)
     if (started) {
       struct timespec now;
       if (clock_gettime(CLOCK_MONOTONIC, &now)) {
@@ -399,7 +400,7 @@
     }
 #endif
 
-    ignore_return_value(write(stdout_fd, printbuf.ptr, n));
+    fwrite(printbuf.ptr, sizeof(uint8_t), n, stdout);
 
     cumulative_delay_micros +=
         (1000 * wuffs_base__frame_config__duration(&fc)) /
@@ -416,13 +417,6 @@
   return NULL;
 }
 
-int fail(const char* msg) {
-  const int stderr_fd = 2;
-  ignore_return_value(write(stderr_fd, msg, strnlen(msg, 4095)));
-  ignore_return_value(write(stderr_fd, "\n", 1));
-  return 1;
-}
-
 int main(int argc, char** argv) {
   int i;
   for (i = 1; i < argc; i++) {
@@ -431,14 +425,17 @@
     }
   }
 
-  const char* msg = read_stdin();
-  if (msg) {
-    return fail(msg);
+  const char* status = read_stdin();
+  if (status) {
+    fprintf(stderr, "%s\n", status);
+    return 1;
   }
+
   while (true) {
-    msg = play();
-    if (msg) {
-      return fail(msg);
+    status = play();
+    if (status) {
+      fprintf(stderr, "%s\n", status);
+      return 1;
     }
     if (num_loops_remaining == 0) {
       continue;
diff --git a/example/library/library.c b/example/library/library.c
index 2b112c6..cd5468a 100644
--- a/example/library/library.c
+++ b/example/library/library.c
@@ -32,8 +32,8 @@
 for a C compiler $CC, such as clang or gcc.
 */
 
+#include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
 
 // Wuffs ships as a "single file C library" or "header file library" as per
 // https://github.com/nothings/stb/blob/master/docs/stb_howto.txt
@@ -73,9 +73,6 @@
 uint8_t work_buffer[1];
 #endif
 
-// ignore_return_value suppresses errors from -Wall -Werror.
-static void ignore_return_value(int ignored) {}
-
 static const char* decode() {
   wuffs_base__io_buffer dst;
   dst.data.ptr = dst_buffer;
@@ -115,18 +112,16 @@
     free(dec);
     return status;
   }
-  ignore_return_value(write(1, dst.data.ptr, dst.meta.wi));
+  fwrite(dst.data.ptr, sizeof(uint8_t), dst.meta.wi, stdout);
   free(dec);
   return NULL;
 }
 
 int main(int argc, char** argv) {
-  const char* status_msg = decode();
-  int status = 0;
-  if (status_msg) {
-    status = 1;
-    ignore_return_value(write(2, status_msg, strnlen(status_msg, 4095)));
-    ignore_return_value(write(2, "\n", 1));
+  const char* status = decode();
+  if (status) {
+    fprintf(stderr, "%s\n", status);
+    return 1;
   }
-  return status;
+  return 0;
 }
diff --git a/example/zcat/zcat.c b/example/zcat/zcat.c
index a5f73f2..c2bf06a 100644
--- a/example/zcat/zcat.c
+++ b/example/zcat/zcat.c
@@ -53,7 +53,7 @@
 // program to generate a stand-alone C file.
 #include "../../release/c/wuffs-unsupported-snapshot.c"
 
-#ifdef __linux__
+#if defined(__linux__)
 #include <linux/prctl.h>
 #include <linux/seccomp.h>
 #include <sys/prctl.h>
@@ -160,17 +160,17 @@
 }
 
 int main(int argc, char** argv) {
-#ifdef WUFFS_EXAMPLE_USE_SECCOMP
+#if defined(WUFFS_EXAMPLE_USE_SECCOMP)
   prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT);
 #endif
 
-  const char* msg = decode();
-  int status = msg ? fail(msg) : 0;
+  const char* status = decode();
+  int status_code = status ? fail(status) : 0;
 
-#ifdef WUFFS_EXAMPLE_USE_SECCOMP
+#if defined(WUFFS_EXAMPLE_USE_SECCOMP)
   // Call SYS_exit explicitly instead of SYS_exit_group implicitly.
   // SECCOMP_MODE_STRICT allows only the former.
-  syscall(SYS_exit, status);
+  syscall(SYS_exit, status_code);
 #endif
-  return status;
+  return status_code;
 }