diff --git a/ChangeLog b/ChangeLog
index f4c33559721474e0de50de53eff236c4375bdef4..281554645ce1f2c92673f3c5c910e8fca38812de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2012-04-14  Niels Möller  <nisse@lysator.liu.se>
 
+	* examples/io.c (write_file): Use write_string.
+
 	* examples/Makefile.in (base64enc): New target. Also added missing
 	io.o dependency to several other targets.
 
diff --git a/examples/io.c b/examples/io.c
index a18dac1f554660c6cf166b66c5ff260bf6fa9e24..d58c247359bc7523e44c67c5221113b47f12826b 100644
--- a/examples/io.c
+++ b/examples/io.c
@@ -132,28 +132,24 @@ read_file(const char *name, unsigned max_size, char **contents)
 }
 
 int
-write_file(const char *name, unsigned size, const char *buffer)
+write_string(FILE *f, unsigned size, const char *buffer)
 {
-  FILE *f = fopen(name, "wb");
-  unsigned res;
-  
-  if (!f)
-    return 0;
-
-  res = fwrite(buffer, 1, size, f);
-  
-  if (res < size)
-    res = 0;
+  size_t res = fwrite(buffer, 1, size, f);
 
-  return fclose(f) == 0 && res > 0;
+  return res == size;
 }
 
 int
-write_string(FILE *f, unsigned size, const char *buffer)
+write_file(const char *name, unsigned size, const char *buffer)
 {
-  size_t res = fwrite(buffer, 1, size, f);
+  FILE *f = fopen(name, "wb");
+  int res;
+  
+  if (!f)
+    return 0;
 
-  return res == size;
+  res = write_string(f, size, buffer);
+  return fclose(f) == 0 && res;
 }
 
 int