Index: trunk/src/sh_hash.c
===================================================================
--- trunk/src/sh_hash.c	(revision 198)
+++ trunk/src/sh_hash.c	(revision 199)
@@ -1139,6 +1139,6 @@
   char hashbuf[KEYBUF_SIZE];
 
-  int  retval  = 0;
-  int  exitval = EXIT_SUCCESS;
+  volatile int  retval  = 0;
+  volatile int  exitval = EXIT_SUCCESS;
 
   SL_ENTER(_("sh_hash_init"));
Index: trunk/src/sh_log_check.c
===================================================================
--- trunk/src/sh_log_check.c	(revision 198)
+++ trunk/src/sh_log_check.c	(revision 199)
@@ -48,4 +48,6 @@
 const char * save_dir = NULL;
 
+static void * sh_dummy_path = NULL;
+
 static char * build_path (struct sh_logfile * record)
 {
@@ -53,4 +55,6 @@
   int    retval;
   char * path = NULL;
+
+  sh_dummy_path = (void *)&path;
 
   if (!save_dir)
Index: trunk/src/sh_log_parse_pacct.c
===================================================================
--- trunk/src/sh_log_parse_pacct.c	(revision 198)
+++ trunk/src/sh_log_parse_pacct.c	(revision 199)
@@ -282,4 +282,6 @@
 }
 
+static void * sh_dummy_record = NULL;
+
 struct sh_logrecord * sh_parse_pacct (sh_string * logline, void * fileinfo)
 {
@@ -290,4 +292,6 @@
 
   (void) fileinfo;
+
+  sh_dummy_record = (void *) &record;
 
   if (sh_string_len(logline) > 0 && flag_err_debug == SL_TRUE)
Index: trunk/src/sh_log_parse_syslog.c
===================================================================
--- trunk/src/sh_log_parse_syslog.c	(revision 198)
+++ trunk/src/sh_log_parse_syslog.c	(revision 199)
@@ -60,5 +60,5 @@
 
   const unsigned int Tpos = 10;
-  unsigned int tlen = 16;
+  volatile unsigned int tlen = 16;
 
   (void) fileinfo;
Index: trunk/src/sh_port2proc.c
===================================================================
--- trunk/src/sh_port2proc.c	(revision 198)
+++ trunk/src/sh_port2proc.c	(revision 199)
@@ -155,12 +155,4 @@
 # endif
 #endif
-
-struct sock_store {
-  unsigned long sock;
-  size_t        pid;
-  char *        path;
-  char *        user;
-  struct sock_store * next;
-};
 
 #if defined(__linux__)
Index: trunk/src/sh_readconf.c
===================================================================
--- trunk/src/sh_readconf.c	(revision 198)
+++ trunk/src/sh_readconf.c	(revision 199)
@@ -270,11 +270,24 @@
       char * p = str;
       ++p; while (isspace((int)*p)) ++p;
-      if (0 == strcmp (p, _("end")     ) ||
-	  0 == strncmp(p, _("end "),  4) || /* Comment to follow */
-	  0 == strcmp (p, _("endif")   ) ||
-	  0 == strncmp(p, _("endif "),6) ||
-	  0 == strcmp (p, _("fi")      ) ||
-	  0 == strncmp(p, _("fi "),   3)
-	  )
+      if ( 
+	  (0 == strncmp (p, _("end"), 3) && (p[3] == '\0' || isspace((int)p[3]))) ||
+	  (0 == strncmp (p, _("fi"),  2) && (p[2] == '\0' || isspace((int)p[2])))
+	   )
+	{
+	  return 1;
+	}
+    }
+  return retval;
+}
+   
+static int sh_readconf_is_else (char * str)
+{
+  int retval = 0;
+
+  if (str[0] == '@')
+    {
+      char * p = str;
+      ++p; while (isspace((int)*p)) ++p;
+      if ( 0 == strncmp (p, _("else"), 4) && (p[4] == '\0' || isspace((int)p[4])) )
 	{
 	  return 1;
@@ -509,4 +522,18 @@
 	    }
 	  }
+	else if (sh_readconf_is_else(line))
+	  {
+	    if (0 == cond_depth) {
+	      sh_error_handle ((-1), FIL__, __LINE__, 0, MSG_EINVALD,
+			       _("config file"), 
+			       (long) conf_line);
+	    }
+	    else if (cond_excl == cond_depth) {
+	      cond_excl = 0;
+	    }
+	    else if (cond_excl == 0) {
+	      cond_excl = cond_depth;
+	    }
+	  }
 	else
 	  {
Index: trunk/src/sh_suidchk.c
===================================================================
--- trunk/src/sh_suidchk.c	(revision 198)
+++ trunk/src/sh_suidchk.c	(revision 199)
@@ -1688,5 +1688,5 @@
 
 #ifdef FSTYPE_MNTENT		/* 4.3BSD etc.  */
-static int xatoi (char *cp);
+static int xatoi (const char *cp);
 #endif
 
@@ -1945,5 +1945,5 @@
   while (type == NULL && (mnt = getmntent (mfp)) != NULL)
     {
-      char *devopt;
+      const char *devopt;
       dev_t dev;
       struct stat disk_stats;
@@ -2147,5 +2147,5 @@
 static int
 xatoi (cp)
-     char *cp;
+     const char *cp;
 {
   int val;
Index: trunk/src/sh_unix.c
===================================================================
--- trunk/src/sh_unix.c	(revision 198)
+++ trunk/src/sh_unix.c	(revision 199)
@@ -2048,10 +2048,11 @@
   env[1] = sh_util_strdup(_("SHELL=/bin/sh"));
   env[2] = sh_util_strdup(_("IFS= \t\n"));
-  if (getenv("TZ")) {
-    char * tz = sh_util_strdup(getenv("TZ"));
-    if (SL_TRUE == sl_ok_adds (4, strlen(tz))) {
-	env[3] = SH_ALLOC(4+strlen(tz));
+  if (getenv("TZ")) {                         /* flawfinder: ignore */
+    char * tz = sh_util_strdup(getenv("TZ")); /* flawfinder: ignore */
+    size_t tzlen = strlen(tz);
+    if (SL_TRUE == sl_ok_adds (4, tzlen)) {
+	env[3] = SH_ALLOC(4+tzlen);
 	sl_strlcpy(env[3], "TZ=", 4);
-	sl_strlcat(env[3], tz   , 4+strlen(tz));
+	sl_strlcat(env[3], tz   , 4+tzlen);
     } else {
       env[3] = NULL;
@@ -2084,4 +2085,5 @@
       while((r = waitpid(pid, &status, WCONTINUED|WUNTRACED)) != pid && r != -1) ;
 
+#if !defined(USE_UNO)
       if (r == -1 || !WIFEXITED(status)) 
 	{
@@ -2092,4 +2094,5 @@
 	  status = WEXITSTATUS(status);
 	}
+#endif
      }
 
