Index: trunk/docs/Changelog
===================================================================
--- trunk/docs/Changelog	(revision 41)
+++ trunk/docs/Changelog	(revision 42)
@@ -1,3 +1,5 @@
 2.2.1:
+	* fix a regression that would make impossible local updates w/clients
+	* fix a few missing '\n' in sh_getopt.c
 	* sh_kern.c: fall back on mmap() if read() fails on /dev/kmem
 	* fix Solaris package creation
Index: trunk/src/sh_getopt.c
===================================================================
--- trunk/src/sh_getopt.c	(revision 41)
+++ trunk/src/sh_getopt.c	(revision 42)
@@ -521,5 +521,5 @@
 				  0 != (* op_table[i].func )(argv[1]))
 				fprintf (stderr, 
-					 _("Error processing option -%c"),
+					 _("Error processing option -%c\n"),
 					 op_table[i].shortopt);
 			      break;
@@ -531,5 +531,5 @@
 			      0 != (* op_table[i].func )(NULL))
 			    fprintf (stderr, 
-				     _("Error processing option -%c"),
+				     _("Error processing option -%c\n"),
 				     op_table[i].shortopt);
 			  break;
@@ -586,5 +586,5 @@
 				  0 != (* op_table[i].func )(argv[1]))
 				fprintf (stderr, 
-					 _("Error processing option -%s"),
+					 _("Error processing option -%s\n"),
 					 op_table[i].longopt);
 			      break;
@@ -600,5 +600,5 @@
 				  0 != (* op_table[i].func )(theequal))
 				fprintf (stderr, 
-					 _("Error processing option -%s"),
+					 _("Error processing option -%s\n"),
 					 op_table[i].longopt);
 			      break;
@@ -617,5 +617,5 @@
 			  0 != (* op_table[i].func )(NULL))
 			fprintf (stderr, 
-				 _("Error processing option -%s"),
+				 _("Error processing option -%s\n"),
 				 op_table[i].longopt);
 		      break;
Index: trunk/src/sh_unix.c
===================================================================
--- trunk/src/sh_unix.c	(revision 41)
+++ trunk/src/sh_unix.c	(revision 42)
@@ -3686,4 +3686,5 @@
 {
   static int init = 0;
+  struct stat buf;
 
   SL_ENTER(_("file_is_remote"));
@@ -3696,4 +3697,11 @@
   if (0 == sl_strncmp (sh.data.path, preq, 15))
     {
+      if (sh.data.path[15] != '\0') /* should be start of path */
+	{
+	  if (0 == stat(&(sh.data.path[15]), &buf))
+	    {
+	      SL_RETURN( S_FALSE, _("file_is_remote"));
+	    }
+	}
       SL_RETURN( S_TRUE, _("file_is_remote"));
     }
