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");