lint does not understand the %m format, leading to false positives. The too few format args is one of the important ones, IMO, so we should try to make it accurate.
The diff below teaches lint that %m does not consume arguments. Index: lint2/chk.c =================================================================== RCS file: /home/tedu/cvs/src/usr.bin/xlint/lint2/chk.c,v retrieving revision 1.18 diff -u -r1.18 chk.c --- lint2/chk.c 27 Jul 2010 20:07:56 -0000 1.18 +++ lint2/chk.c 18 Jun 2011 04:38:30 -0000 @@ -812,6 +812,11 @@ break; } + if (fc == 'm') { + fc = *fp++; + continue; + } + if ((tp = *ap++) == NULL) { tofewarg(hte, call); break;