X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/7ac98eb7e62335f5bb191d2c399d7dae5c1e62ab..5b99bfd6792ab9229bb5b1d9048833d21b22ecef:/src/flags.c diff --git a/src/flags.c b/src/flags.c index bc1597f..c26a6c6 100644 --- a/src/flags.c +++ b/src/flags.c @@ -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 ("")); } + if (flagcode_isModeName (flag)) + { + return (cstring_makeLiteral ("")); + } + 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 {