How to convert this code?  There is no single OPT_* that reflects when
the first warning is emitted.

          if (params == 0 && (warn_format_nonliteral || warn_format_security))
            warning (0, "format not a string literal and no format arguments");
          else
            warning (OPT_Wformat_nonliteral,
                     "format not a string literal, argument types not checked");

One option is:

          if (params == 0)
            warning (OPT_Wformat_security,
                     "format not a string literal and no format arguments");
          warning (OPT_Wformat_nonliteral,
                   "format not a string literal, argument types not checked");

but a little re-wording might be useful for when you get both
warnings.  Alternately:

          if (params == 0 && warn_format_security)
            warning (OPT_Wformat_security,
                     "format not a string literal and no format arguments");
          else
            warning (OPT_Wformat_nonliteral,
                     "format not a string literal, argument types not checked");

or pedantically:

          if (params == 0 && warn_format_security)
            warning (OPT_Wformat_security,
                     "format not a string literal and no format arguments");
          els if (params == 0 && warn_format_nonliteral)
            warning (OPT_Wformat_nonliteral,
                     "format not a string literal and no format arguments");
          else
            warning (OPT_Wformat_nonliteral,
                     "format not a string literal, argument types not checked");

Reply via email to