diff --git a/src/version.c b/src/version.c
index ca0f16f..31c2520 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3680,
+/**/
     3679,
 /**/
     3678,
diff --git a/src/xxd/xxd.c b/src/xxd/xxd.c
index ad0c72f..d2b3b83 100644
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -252,11 +252,13 @@
   exit(ret);
 }
 
-  static void
-exit_on_ferror(int c, FILE *fpi)
+  static int
+getc_or_die(FILE *fpi)
 {
+  int c = getc(fpi);
   if (c == EOF && ferror(fpi))
     perror_exit(2);
+  return c;
 }
 
   static void
@@ -311,8 +313,7 @@
 skip_to_eol(FILE *fpi, int c)
 {
   while (c != '\n' && c != EOF)
-    c = getc(fpi);
-  exit_on_ferror(c, fpi);
+    c = getc_or_die(fpi);
   return c;
 }
 
@@ -736,9 +737,8 @@
 	  long s = seekoff;
 
 	  while (s--)
-	    if ((c = getc(fp)) == EOF)
+	    if ((c = getc_or_die(fp)) == EOF)
 	    {
-	      exit_on_ferror(c, fp);
 	      error_exit(4, "sorry cannot seek.");
 	    }
 	}
@@ -756,20 +756,19 @@
 
       p = 0;
       c = 0;
-      while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
+      while ((length < 0 || p < length) && (c = getc_or_die(fp)) != EOF)
 	{
 	  fprintf_or_die(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
-		(p % cols) ? ", " : &",\n  "[2*!p],  c);
+		(p % cols) ? ", " : (!p ? "  " : ",\n  "),  c);
 	  p++;
 	}
-      exit_on_ferror(c, fp);
 
       if (p)
 	fputs_or_die("\n", fpo);
-      fputs_or_die(&"};\n"[3 * (fp == stdin)], fpo);
 
       if (fp != stdin)
 	{
+	  fputs_or_die("};\n", fpo);
 	  fprintf_or_die(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "", 0);
 	  for (e = 0; (c = argv[1][e]) != 0; e++)
 	    putc_or_die(isalnum(c) ? CONDITIONAL_CAPITALIZE(c) : '_', fpo);
@@ -784,7 +783,7 @@
     {
       p = cols;
       e = 0;
-      while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+      while ((length < 0 || n < length) && (e = getc_or_die(fp)) != EOF)
 	{
 	  putc_or_die(hexx[(e >> 4) & 0xf], fpo);
 	  putc_or_die(hexx[e & 0xf], fpo);
@@ -795,7 +794,6 @@
 	      p = cols;
 	    }
 	}
-      exit_on_ferror(e, fp);
       if (p < cols)
 	putc_or_die('\n', fpo);
       fclose_or_die(fp, fpo);
@@ -810,7 +808,7 @@
     grplen = 8 * octspergrp + 1;
 
   e = 0;
-  while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+  while ((length < 0 || n < length) && (e = getc_or_die(fp)) != EOF)
     {
       int x;
 
@@ -856,7 +854,6 @@
 	  p = 0;
 	}
     }
-  exit_on_ferror(e, fp);
   if (p)
     {
       l[c] = '\n';
