Index: trunk/src/sh_socket.c
===================================================================
--- trunk/src/sh_socket.c	(revision 199)
+++ trunk/src/sh_socket.c	(revision 200)
@@ -53,6 +53,6 @@
       SL_RET0(_("sh_socket_server_cmd"));
     }
-  if ((srvcmd[0] == 'S') || (srvcmd[1] == 'T') || 
-      (srvcmd[2] == 'O') || (srvcmd[3] == 'P'))
+  if ((srvcmd[0] == 'S') && (srvcmd[1] == 'T') && 
+      (srvcmd[2] == 'O') && (srvcmd[3] == 'P'))
     {
       TPT((0, FIL__, __LINE__, _("msg=<stop command from server>\n")));
@@ -60,10 +60,11 @@
       raise(SIGQUIT);
 #else
-      TPT((0, FIL__, __LINE__, _("msg=<sigquit not defined>\n")));
+      sig_terminate       = 1;
+      ++sig_raised;
 #endif
     } 
-  else if ((srvcmd[0] == 'R') || (srvcmd[1] == 'E') || 
-	   (srvcmd[2] == 'L') || (srvcmd[3] == 'O') ||
-	   (srvcmd[4] == 'A') || (srvcmd[5] == 'D'))
+  else if ((srvcmd[0] == 'R') && (srvcmd[1] == 'E') &&
+	   (srvcmd[2] == 'L') && (srvcmd[3] == 'O') &&
+	   (srvcmd[4] == 'A') && (srvcmd[5] == 'D'))
     {
       TPT((0, FIL__, __LINE__, _("msg=<reload command from server>\n")));
@@ -71,6 +72,26 @@
       raise(SIGHUP);
 #else
-      TPT((0, FIL__, __LINE__, _("msg=<sighup not defined>\n")));
-#endif
+      sig_config_read_again = 1;
+      ++sig_raised;
+#endif
+    }
+  else if ((srvcmd[0] == 'S') && (srvcmd[1] == 'C') &&
+	   (srvcmd[2] == 'A') && (srvcmd[3] == 'N'))
+    {
+      TPT((0, FIL__, __LINE__, _("msg=<scan command from server>\n")));
+      if (sh.flag.isdaemon == ON) 
+	{ 
+#ifdef SIGTTOU
+	  raise(SIGTTOU);
+#else
+	  sig_force_check = 1;
+	  ++sig_raised;
+#endif
+	} 
+      else 
+	{
+	  sig_force_check = 1;
+	  ++sig_raised;
+	}
     }
   else
Index: trunk/src/sh_unix.c
===================================================================
--- trunk/src/sh_unix.c	(revision 199)
+++ trunk/src/sh_unix.c	(revision 200)
@@ -3602,5 +3602,6 @@
 	  tmp2 = sh_util_safe_name (theFile->fullpath);
 
-	  if (fstat_return != 0)
+
+	  if (fd >= 0 && fstat_return != 0)
 	    {
 	      char errbuf[SH_ERRBUF_SIZE];
@@ -3613,5 +3614,5 @@
 			       tmp2);
 	    }
-	  else if (!S_ISREG(fbuf.st_mode))
+	  else if (fd >= 0 && !S_ISREG(fbuf.st_mode))
 	    {
 	      sh_error_handle (level, FIL__, __LINE__, fstat_errno, 
Index: trunk/src/slib.c
===================================================================
--- trunk/src/slib.c	(revision 199)
+++ trunk/src/slib.c	(revision 200)
@@ -2665,51 +2665,51 @@
     {
     case SL_EBOGUS: 
-      return _("Bogus file. Modified during access.");
+      return _("Bogus file. Modified during access");
     case SL_EWRITE: 
-      return _("Write error.");
+      return _("Write error");
     case SL_EREAD: 
-      return _("Read error.");
+      return _("Read error");
     case SL_ESYNC: 
-      return _("Error in fsync().");
+      return _("Error in fsync()");
     case SL_EFORWARD: 
-      return _("Error in lseek().");
+      return _("Error in lseek()");
     case SL_EREWIND: 
-      return _("Error in lseek().");
+      return _("Error in lseek()");
     case SL_EUNLINK: 
-      return _("Error in unlink().");
+      return _("Error in unlink()");
     case SL_EMEM: 
-      return _("Out of memory.");
+      return _("Out of memory");
     case SL_EINTERNAL: 
-      return _("Internal error.");
+      return _("Internal error");
     case SL_ETICKET:
-      return _("Bad ticket.");
+      return _("Bad ticket");
     case SL_EREPEAT: 
-      return _("Illegal repeated use of function.");
+      return _("Illegal repeated use of function");
     case SL_ERANGE: 
-      return _("Argument out of range.");
+      return _("Argument out of range");
     case SL_ENULL: 
-      return _("Dereferenced NULL pointer.");
+      return _("Dereferenced NULL pointer");
 
     case SL_EBADUID: 
-      return _("Owner not trustworthy.");
+      return _("Owner not trustworthy");
     case SL_EBADGID:
-      return _("Group writeable and member not trustworthy.");
+      return _("Group writeable and member not trustworthy");
     case SL_EBADOTH:
-      return _("World writeable.");
+      return _("World writeable");
     case SL_EISDIR:
-      return _("Is a directory.");
+      return _("Is a directory");
     case SL_EBADFILE:
-      return _("File access error.");
+      return _("File access error");
     case SL_EBADNAME:
-      return _("Invalid filename (prob. too long or null).");
+      return _("Invalid filename (prob. too long or null)");
 
     case SL_ETRUNC:
-      return _("Truncation occured.");
+      return _("Truncation occured");
     case SL_ESTAT:
-      return _("stat() failed.");
+      return _("stat() failed");
     case SL_EFSTAT:
-      return _("fstat() failed.");
+      return _("fstat() failed");
     default:
-      return _("Unknown error.");
+      return _("Unknown error");
     }
 }
Index: trunk/src/yulectl.c
===================================================================
--- trunk/src/yulectl.c	(revision 199)
+++ trunk/src/yulectl.c	(revision 200)
@@ -327,4 +327,5 @@
   printf(_("Commands: RELOAD    <reload configuration>\n"));
   printf(_("          STOP      <terminate>\n"));
+  printf(_("          SCAN      <initiate file system check\n"));
   printf(_("          CANCEL    <cancel previous command>\n"));
   printf(_("          LIST      <list queued commands>\n"));
@@ -400,16 +401,25 @@
   strcat(home, _("/.yulectl_cred"));
   fp = fopen(home, "r");
+
+#if !defined(HAVE_GETPEEREID) && !defined(SO_PEERCRED) && !defined(HAVE_STRUCT_CMSGCRED) && !defined(HAVE_STRUCT_FCRED) && !(defined(HAVE_STRUCT_SOCKCRED) && defined(LOCAL_CREDS))
   if (fp == NULL)
     {
-      if (verbose && (errno == ENOENT))
-	fprintf (stdout, 
-		 _("# No password file (%s) exists\n"),
+      if (errno == ENOENT) {
+	fprintf (stderr, 
+		 _("ERROR No password file (%s) exists\n"),
 		 home);
-      else if (verbose)
-	fprintf (stdout, 
-		 _("# Password file (%s) not accessible for euid %ld uid %ld\n"),
+      }
+      else {
+	fprintf (stderr, 
+		 _("ERROR: Password file (%s) not accessible for euid %ld uid %ld\n"),
 		 home, (long)geteuid(), (long)getuid());
-      return;
-    }
+      }
+      exit(EXIT_FAILURE);
+    }
+#else
+  if (fp == NULL)
+    return;
+#endif
+
   if (NULL == fgets(message2, sizeof(message2), fp))
     {
