diff --git a/check_lysrdiff b/check_lysrdiff
index ab88e2416c2e56c5ae473a41239270b506651441..86283a20a9282a4d8d0353e3b5e585dbd3faa0ca 100755
--- a/check_lysrdiff
+++ b/check_lysrdiff
@@ -42,6 +42,18 @@ disk=$1
 part=$2
 BASE=/lysrdiff/$disk/perm/$part
 
+# Emit a list of the first few backup jobs.  Keep the output small, by
+# ending it with "and others" if it becomes too long.  ~200 characters
+# are OK.
+list_jobs()
+{
+    awk 'BEGIN { sz = 0 }
+    	 NR > 1 && sz < 198 { printf ", "; sz += 2 }
+	 sz < 200 { printf "%s", $3; sz += length($3) }
+	 END { if (sz >= 200) printf ", others" } ' \
+    | sed s'/, \([^,]*\)$/ and \1/'
+}
+
 if [ ! -f $BASE/lysrdiff.id ]
 then
     echo CRITICAL - $BASE/lysrdiff.id: no such file
@@ -103,12 +115,7 @@ then
       echo -n " (also $STALE stale)"
   fi
   echo -n ": "
-  sed -n 's/--fail$//p' $state \
-    |awk 'BEGIN { sz = 0 }
-	  NR > 1 && sz < 198 { printf ", "; sz += 2 }
-	  sz < 200 { printf "%s", $3; sz += length($3) }
-	  END { if (sz >= 200) printf ", others" } ' \
-    |sed s'/, \([^,]*\)$/ and \1/'
+  sed -n 's/--fail$//p' $state | list_jobs
   echo ". | $PERF"
   exit 2
 fi
@@ -121,11 +128,7 @@ then
       echo -n " (also $FAILED failed)"
   fi
   ( sed -n 's/--fail$//p' $state; sed 's/--start$//' $state-stale; ) \
-    |awk 'BEGIN { sz = 0 }
-	  NR > 1 && sz < 198 { printf ", "; sz += 2 }
-	  sz < 200 { printf "%s", $3; sz += length($3) }
-	  END { if (sz >= 200) printf ", others" } ' \
-    |sed s'/, \([^,]*\)$/ and \1/'
+    | list_jobs
   echo ". | $PERF"
   exit 2
 fi
@@ -138,12 +141,7 @@ then
       echo -n " (also $STALE stale)"
   fi
   echo -n ": "
-  sed -n 's/--fail$//p' $state \
-    |awk 'BEGIN { sz = 0 }
-	  NR > 1 && sz < 198 { printf ", "; sz += 2 }
-	  sz < 200 { printf "%s", $3; sz += length($3) }
-	  END { if (sz >= 200) printf ", others" } ' \
-    |sed s'/, \([^,]*\)$/ and \1/'
+  sed -n 's/--fail$//p' $state | list_jobs
   echo ". | $PERF"
   exit 1
 fi
@@ -151,12 +149,7 @@ fi
 if [ $STALE -gt 0 ]
 then
   echo -n "WARNING - $STALE stale backups: "
-  sed 's/--start$//' $state-stale \
-    |awk 'BEGIN { sz = 0 }
-	  NR > 1 && sz < 198 { printf ", "; sz += 2 }
-	  sz < 200 { printf "%s", $3; sz += length($3) }
-	  END { if (sz >= 200) printf ", others" } ' \
-    |sed s'/, \([^,]*\)$/ and \1/'
+  sed 's/--start$//' $state-stale | list_jobs
   echo ". | $PERF"
   exit 1
 fi