*** macro.c.940814 Sun Aug 14 03:27:30 1994 --- macro.c Tue Sep 24 11:17:12 2013 *************** *** 8,14 **** --- 8,18 ---- #include #include + #ifdef __STDC__ + #include + #else #include + #endif #include "plain2.h" #include "macro.h" *************** *** 181,189 **** --- 185,197 ---- buf++; } } + #ifdef __STDC__ + putMacro(int macroNum, ...) + #else putMacro(macroNum, va_alist) int macroNum; va_dcl + #endif { va_list ap; union macroArg { *************** *** 218,224 **** } mip = mip->cmac_next; } ! va_start(ap); for (i = 1; i <= maxarg; i++) { switch(argtype[i]) { case ATYPE_VOID: --- 226,232 ---- } mip = mip->cmac_next; } ! va_start(ap, macroNum); for (i = 1; i <= maxarg; i++) { switch(argtype[i]) { case ATYPE_VOID: *************** *** 278,286 **** --- 286,343 ---- for (i = 0; i < M_MAXNUM; i++) outMacro[i] = NULL; } + + #ifndef MDEF_DEF_LEN + #define MDEF_DEF_LEN BUFSIZ + #endif + + struct macDefs* + allocDynamicMacroDefs(src) + struct macDefs *src; + { + struct macDefs *mcp; + struct macDefs *dst; + struct macDefs *tmp; + int i; + int c; + i = 0; + mcp = src; + while(mcp->mdef_number >=0) { + mcp++; + i++; + } + c = i; + #if 0 + fprintf(stderr, "; c %d\n", c); + #endif + if(c>0) { + dst = (struct macDefs*)malloc(sizeof(struct macDefs)*(c+1)); + mcp = src; + tmp = dst; + while(mcp->mdef_number >=0) { + tmp->mdef_number = mcp->mdef_number; + tmp->mdef_def = (char*)malloc(MDEF_DEF_LEN); + strcpy(tmp->mdef_def, mcp->mdef_def); + mcp++; + tmp++; + } + if(mcp->mdef_number == -1) { + tmp->mdef_number = -1; + } + } + else { + dst = NULL; + } + + return dst; + } + initMacroDefs(mcp) struct macDefs *mcp; { + struct macDefs *origmcp; + origmcp = mcp; + mcp = allocDynamicMacroDefs(mcp); while(mcp->mdef_number >= 0) { if (outMacro[mcp->mdef_number] == NULL) outMacro[mcp->mdef_number] =