--- xbuffy.c.orig	Thu Mar 30 08:57:43 1995
+++ xbuffy.c	Thu Feb 27 16:00:12 1997
@@ -300,8 +300,8 @@
 
     if (data.center) /* center implies fill */
    {
-      
     offset = ((maxBoxSize+4) - strlen(amt))/2;
+    if (offset < 0) offset = 0;
     ptr = fmtString+ offset;
     strcpy(ptr,amt);
     ptr = fmtString+strlen(fmtString);
@@ -310,15 +310,14 @@
    }
    else if (data.fill)
    {
-      
-   
-   offset = maxBoxSize+4-strlen(amt);
-   strcpy(fmtString,amt);
-   ptr = fmtString+strlen(fmtString);
-   while (offset-- >0)
-      *ptr++ = ' ';
+      offset = maxBoxSize+4-strlen(amt);
+      if (offset < 0) offset = 0;
+      strcpy(fmtString,amt);
+      ptr = fmtString+strlen(fmtString);
+      while (offset-- >0)
+         *ptr++ = ' ';
    
-   *ptr = '\0';
+      *ptr = '\0';
    }
    else
    {
@@ -668,6 +667,7 @@
     int status;
     register Boolean in_header = FALSE;
     struct stat f_stat;
+    struct timeval t[2];
 
     *beenTouched = FALSE;
    
@@ -674,8 +674,12 @@
     if (isLocked(mailBox->box))
        return (mailBox->n);
 
-
-    stat(mailBox->box, &f_stat);
+    if (stat(mailBox->box, &f_stat))
+    {
+        mailBox->st_size = 0;
+        mailBox->box_mtime = 0;
+	return (0);
+    }
 
     if ((f_stat.st_size != mailBox->st_size) ||
         (f_stat.st_mtime > mailBox->box_mtime))
@@ -768,6 +772,15 @@
         }
     }
     fclose(fp);
+
+/* Restore access time of mailbox. */
+
+    t[0].tv_sec = f_stat.st_atime;
+    t[0].tv_usec = 0;
+    t[1].tv_sec = f_stat.st_mtime;
+    t[1].tv_usec = 0;
+
+    utimes(mailBox->box, t);
 
     return count;
 }
