Package: splint
Version: 3.1.1-4
Severity: wishlist

The attached patch adds support for variadic macros like
#define myprint(msg, ...) printf(msg, __VA_ARGS__)

Hochachtungsvoll,
        Bernhard R. Link
Nur in splint/bin: splint.
Nur in splint: bugs.
Nur in splint: config.h.
Nur in splint: config.log.
Nur in splint: config.status.
Nur in splint/imports: Makefile.
Nur in splint/lib: Makefile.
Nur in splint: Makefile.
Nur in splint: Makefile.bak.
Nur in splint/src: abstract.o.
Nur in splint/src: aliasTable.o.
Nur in splint/src: annotationInfo.o.
Nur in splint/src: annotationTable.o.
Nur in splint/src: cgrammar.o.
Nur in splint/src: checking.o.
Nur in splint/src: clabstract.o.
Nur in splint/src: clause.o.
Nur in splint/src: clauseStack.o.
Nur in splint/src: constraintExprData.o.
Nur in splint/src: constraintExpr.o.
Nur in splint/src: constraintGeneration.o.
Nur in splint/src: constraintList.o.
Nur in splint/src: constraint.o.
Nur in splint/src: constraintResolve.o.
Nur in splint/src: constraintTerm.o.
Nur in splint/src: context.o.
Nur in splint/src: cpperror.o.
Nur in splint/src: cppexp.o.
Nur in splint/src: cpphash.o.
diff -r -u splint-3.1.1/src/cpplib.c splint/src/cpplib.c
--- splint-3.1.1/src/cpplib.c   2003-04-21 00:55:04.000000000 +0200
+++ splint/src/cpplib.c 2006-03-29 14:13:18.000000000 +0200
@@ -2183,6 +2183,13 @@
 /[EMAIL PROTECTED]@*/
 #define REST_EXTENSION_LENGTH  (sizeof (rest_extension) - 1)
 
+/[EMAIL PROTECTED]@*/
+static char rest_name[] = "__VA_ARGS__";
+/*:[EMAIL PROTECTED]/
+
+/[EMAIL PROTECTED]@*/
+#define REST_NAME_LENGTH       (sizeof (rest_name) - 1)
+
 /* Create a DEFINITION node from a #define directive.  Arguments are
    as for do_define.  */
 
@@ -2253,6 +2260,17 @@
                                  cstring_fromChars (rest_extension)));
          }
 
+       if (limit - bp > size_toInt (REST_EXTENSION_LENGTH)
+           && strncmp (rest_extension, bp, REST_EXTENSION_LENGTH) == 0)
+         {
+           rest_args = 1;
+           temp->rest_args = 1;
+           temp->name = rest_name;
+           temp->length = REST_NAME_LENGTH;
+         }
+       else
+         {
+
        if (!is_idstart[(int) *bp])
          {
            cppReader_pedwarnLit (pfile,
@@ -2275,6 +2293,8 @@
 
        temp->length = size_fromInt (bp - temp->name);
 
+         }
+
        if (rest_args != 0)
          {
            bp += REST_EXTENSION_LENGTH;
Nur in splint/src: cpplib.o.
Nur in splint/src: cppmain.o.
Nur in splint/src: cprim.o.
Nur in splint/src: cscannerHelp.o.
Nur in splint/src: cscanner.o.
Nur in splint/src: cstringList.o.
Nur in splint/src: cstring.o.
Nur in splint/src: cstringSList.o.
Nur in splint/src: cstringTable.o.
Nur in splint/src: ctypeList.o.
Nur in splint/src: ctype.o.
Nur in splint/src: cvar.o.
Nur in splint/src: declaratorInvNodeList.o.
Nur in splint/src: declaratorNodeList.o.
Nur in splint/src: .deps.
Nur in splint/src: ekind.o.
Nur in splint/src: enumNameList.o.
Nur in splint/src: enumNameSList.o.
Nur in splint/src: exprChecks.o.
Nur in splint/src: exprData.o.
Nur in splint/src: exprNodeList.o.
Nur in splint/src: exprNode.o.
Nur in splint/src: exprNodeSList.o.
Nur in splint/src: fcnNodeList.o.
Nur in splint/src: fileIdList.o.
Nur in splint/src: fileLib.o.
Nur in splint/src: filelocList.o.
Nur in splint/src: fileloc.o.
Nur in splint/src: filelocStack.o.
Nur in splint/src: fileTable.o.
Nur in splint/src: flagMarkerList.o.
Nur in splint/src: flagMarker.o.
Nur in splint/src: flags.o.
Nur in splint/src: flagSpec.o.
Nur in splint/src: functionClauseList.o.
Nur in splint/src: functionClause.o.
Nur in splint/src: functionConstraint.o.
Nur in splint/src: general.o.
Nur in splint/src: genericTable.o.
Nur in splint/src: globalsClause.o.
Nur in splint/src: globals.o.
Nur in splint/src: globSet.o.
Nur in splint/src: guardSet.o.
Nur in splint/src/Headers: flag_codes.gen.
Nur in splint/src: help.o.
Nur in splint/src: idDeclList.o.
Nur in splint/src: idDecl.o.
Nur in splint/src: importNodeList.o.
Nur in splint/src: imports.o.
Nur in splint/src: initDeclNodeList.o.
Nur in splint/src: inputStream.o.
Nur in splint/src: interfaceNodeList.o.
Nur in splint/src: intSet.o.
Nur in splint/src: lclctypes.o.
Nur in splint/src: lclinit.o.
Nur in splint/src: lcllib.o.
Nur in splint/src: lclscanline.o.
Nur in splint/src: lclscan.o.
Nur in splint/src: lclsyntable.o.
Nur in splint/src: lcltokentable.o.
Nur in splint/src: letDeclNodeList.o.
Nur in splint/src: lex.yy.c.
Nur in splint/src: lh.o.
Nur in splint/src: llerror.o.
Nur in splint/src: llgrammar.o.
Nur in splint/src: llmain.o.
Nur in splint/src: lltok.o.
Nur in splint/src: loopHeuristics.o.
Nur in splint/src: lslinit.o.
Nur in splint/src: lslOpList.o.
Nur in splint/src: lslOpSet.o.
Nur in splint/src: lslparse.o.
Nur in splint/src: lsymbolList.o.
Nur in splint/src: lsymbol.o.
Nur in splint/src: lsymbolSet.o.
Nur in splint/src: ltokenList.o.
Nur in splint/src: ltoken.o.
Nur in splint/src: macrocache.o.
Nur in splint/src: Makefile.
Nur in splint/src: mapping.o.
Nur in splint/src: messageLog.o.
Nur in splint/src: message.o.
Nur in splint/src: metaStateConstraintList.o.
Nur in splint/src: metaStateConstraint.o.
Nur in splint/src: metaStateExpression.o.
Nur in splint/src: metaStateInfo.o.
Nur in splint/src: metaStateSpecifier.o.
Nur in splint/src: metaStateTable.o.
Nur in splint/src: modifiesClause.o.
Nur in splint/src: mtAnnotationDecl.o.
Nur in splint/src: mtAnnotationList.o.
Nur in splint/src: mtAnnotationsNode.o.
Nur in splint/src: mtContextNode.o.
Nur in splint/src: mtDeclarationNode.o.
Nur in splint/src: mtDeclarationPiece.o.
Nur in splint/src: mtDeclarationPieces.o.
Nur in splint/src: mtDefaultsDeclList.o.
Nur in splint/src: mtDefaultsDecl.o.
Nur in splint/src: mtDefaultsNode.o.
Nur in splint/src: mtgrammar.o.
Nur in splint/src: mtLoseReferenceList.o.
Nur in splint/src: mtLoseReference.o.
Nur in splint/src: mtMergeClauseList.o.
Nur in splint/src: mtMergeClause.o.
Nur in splint/src: mtMergeItem.o.
Nur in splint/src: mtMergeNode.o.
Nur in splint/src: mtreader.o.
Nur in splint/src: mtscanner.o.
Nur in splint/src: mttok.o.
Nur in splint/src: mtTransferAction.o.
Nur in splint/src: mtTransferClauseList.o.
Nur in splint/src: mtTransferClause.o.
Nur in splint/src: mtValuesNode.o.
Nur in splint/src: multiVal.o.
Nur in splint/src: nameChecks.o.
Nur in splint/src: osd.o.
Nur in splint/src: pairNodeList.o.
Nur in splint/src: paramNodeList.o.
Nur in splint/src: pointers.o.
Nur in splint/src: programNodeList.o.
Nur in splint/src: qtype.o.
Nur in splint/src: qualList.o.
Nur in splint/src: qual.o.
Nur in splint/src: quantifierNodeList.o.
Nur in splint/src: randomNumbers.o.
Nur in splint/src: rcfiles.o.
Nur in splint/src: reader.o.
Nur in splint/src: replaceNodeList.o.
Nur in splint/src: scanline.o.
Nur in splint/src: scan.o.
Nur in splint/src: shift.o.
Nur in splint/src: signature.o.
Nur in splint/src: sigNodeSet.o.
Nur in splint/src: sortList.o.
Nur in splint/src: sort.o.
Nur in splint/src: sortSetList.o.
Nur in splint/src: sortSet.o.
Nur in splint/src: splint.
Nur in splint/src: sRefList.o.
Nur in splint/src: sRef.o.
Nur in splint/src: sRefSetList.o.
Nur in splint/src: sRefSet.o.
Nur in splint/src: sRefTable.o.
Nur in splint/src: stateClauseList.o.
Nur in splint/src: stateClause.o.
Nur in splint/src: stateCombinationTable.o.
Nur in splint/src: stateInfo.o.
Nur in splint/src: stateValue.o.
Nur in splint/src: stDeclNodeList.o.
Nur in splint/src: storeRefNodeList.o.
Nur in splint/src: structNames.o.
Nur in splint/src: symtable.o.
Nur in splint/src: syntable.o.
Nur in splint/src: termNodeList.o.
Nur in splint/src: tokentable.o.
Nur in splint/src: traitRefNodeList.o.
Nur in splint/src: transferChecks.o.
Nur in splint/src: typeIdSet.o.
Nur in splint/src: typeNameNodeList.o.
Nur in splint/src: uentryList.o.
Nur in splint/src: uentry.o.
Nur in splint/src: usymIdSet.o.
Nur in splint/src: usymtab_interface.o.
Nur in splint/src: usymtab.o.
Nur in splint/src: valueTable.o.
Nur in splint/src: varDeclarationNodeList.o.
Nur in splint/src: varKinds.o.
Nur in splint/src: varNodeList.o.
Nur in splint/src: warnClause.o.
Nur in splint/src: ynm.o.
Nur in splint: stamp-h1.
Nur in splint-3.1.1: test.

Reply via email to