]> andersk Git - splint.git/blobdiff - src/flags.c
Fixed -help <mode> bug.
[splint.git] / src / flags.c
index bc1597faf1950d66b478f9fa2fd7837ba96636d0..c26a6c63816193ae44c70706830db9dffa947ba8 100644 (file)
@@ -705,6 +705,40 @@ printFlagManual (bool html)
   } end_allFlags ;
 }
 
+cstring 
+describeMode (cstring mode)
+{
+  cstringSList sflags = sortedFlags ();
+  cstring res = message ("Predefined mode %s sets: ", mode);
+
+  llassert (flags_isModeName (mode));
+
+  context_setMode (mode);
+
+  cstringSList_elements (sflags, flagname)
+    {
+      flagcode code = flags_identifyFlag (flagname);
+      fflag currentflag = flags[code];
+      
+      if (mstring_isDefined (currentflag.desc) && flagcode_isModeFlag (code))
+       {
+         if (context_getFlag (code))
+           {
+             res = message ("%q\n   +%s", res, cstring_fromChars (currentflag.flag));
+           }
+         else
+           {
+             res = message ("%q\n   -%s", res, cstring_fromChars (currentflag.flag)); 
+           }
+       }
+    } end_cstringSList_elements;
+  
+  cstringSList_free (sflags);
+
+  res = cstring_appendChar (res, '\n');
+  return (res);
+}
+
 cstring
 describeFlagCode (flagcode flag)
 {
@@ -716,6 +750,11 @@ describeFlagCode (flagcode flag)
       return (cstring_makeLiteral ("<invalid>"));
     }
 
+  if (flagcode_isModeName (flag)) 
+    {
+      return (cstring_makeLiteral ("<mode flag>"));
+    }
+
   context_resetAllFlags ();
   
   f = flags[flag];
@@ -850,10 +889,7 @@ describeFlag (cstring flagname)
       if (flags_isModeName (flagname))
        {
          cstring_free (oflagname);
-
-         return
-           (message ("%s: predefined mode (see Manual for information)",
-                     flagname));
+         return describeMode (flagname);
        }
       else
        {
This page took 0.045006 seconds and 4 git commands to generate.