Index: trunk/src/sh_suidchk.c
===================================================================
--- trunk/src/sh_suidchk.c	(revision 118)
+++ trunk/src/sh_suidchk.c	(revision 119)
@@ -112,4 +112,8 @@
   },
   {
+    N_("suidchecknosuid"),
+    sh_suidchk_set_nosuid
+  },
+  {
     N_("suidcheckquarantinefiles"),
     sh_suidchk_set_quarantine
@@ -134,4 +138,5 @@
 static time_t  ShSuidchkInterval = 7200;
 static long    ShSuidchkFps      = 0;
+static int     ShSuidchkNosuid   = S_FALSE;
 static int     ShSuidchkYield    = S_FALSE;
 static int     ShSuidchkQEnable  = S_FALSE;
@@ -954,6 +959,5 @@
 		  0 != strncmp (_("mmfs"),    fs, 4) && 
 		  0 != strncmp (_("msdos"),   fs, 5) &&
-		  0 != strncmp (_("nfs"),     fs, 3) && 
-		  0 != strncmp (_("nosuid"),  fs, 6) &&
+		  0 != strncmp (_("nfs"),     fs, 3) &&
 		  0 != strncmp (_("proc"),    fs, 4) &&
 		  0 != strncmp (_("vfat"),    fs, 4)
@@ -961,6 +965,8 @@
 		  )
 		{
-		  /* fprintf(stderr, "%s: %s\n", fs, tmpcat); */
-		  (void) sh_suidchk_check_internal(tmpcat);
+		  if ((ShSuidchkNosuid == S_TRUE) || 
+		      (0 != strncmp (_("nosuid"),  fs, 6)))
+		    /* fprintf(stderr, "%s: %s\n", fs, tmpcat); */
+		    (void) sh_suidchk_check_internal(tmpcat);
 		}
 	    }
@@ -1374,4 +1380,12 @@
 }
 
+int sh_suidchk_set_nosuid (const char * c)
+{
+  int i;
+  SL_ENTER(_("sh_suidchk_set_nosuid"));
+  i = sh_util_flagval(c, &ShSuidchkNosuid);
+  SL_RETURN(i, _("sh_suidchk_set_nosuid"));
+}
+
 int sh_suidchk_set_quarantine (const char * c)
 {
@@ -1907,5 +1921,5 @@
 	   */
 #ifdef HAVE_HASMNTOPT
-	  if (NULL == hasmntopt(mnt, "nosuid"))
+	  if (NULL == hasmntopt(mnt, "nosuid") || (ShSuidchkNosuid == S_TRUE))
 	    type = mnt->mnt_type;
 	  else
@@ -1985,5 +1999,5 @@
        /* patch by Konstantin Khrooschev <nathoo@co.ru> 
 	*/
-       if( fss.f_flag & ST_NOSUID )
+       if( (fss.f_flag & ST_NOSUID)  && (ShSuidchkNosuid == S_FALSE))
          type = _("nosuid");
     }
@@ -2035,7 +2049,7 @@
 #ifdef MNT_VISFLAGMASK
       flags = fss.f_flags & MNT_VISFLAGMASK;
-      if (flags & MNT_NOSUID)
+      if ((flags & MNT_NOSUID) && (ShSuidchkNosuid == S_FALSE))
 #else 
-      if (fss.f_flags & MNT_NOSUID) 
+      if ((fss.f_flags & MNT_NOSUID) && (ShSuidchkNosuid == S_FALSE)) 
 #endif
          type = _("nosuid");
