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.