/* outer_bufsize.h Determine following buffer sizes for outerw - see minbufsize.h MAXATTRSIZE MAXCOMMENTLINE MAXDATUMSIZE MAXOBJECTPARAMSIZE OUTBUFSIZE OUTVARBUFSIZE PARSAVSIZE MAXPATHSIZE TOKEN TOTATTRSIZE MAXVARNAMESIZE 27 Jan 96 1) parametrized & sanity checked some buffer sizes 2) allowed method maker to optionally specify them by use of precompilation switch IOBUF_INCLUDE. If specified, it should be set = to a valid include file including (sorry for the pun!) its punctuation; eg, -DIOBUF_INCLUDE='"/my_method/src/my_method_buf_sizes.h"' This file may define any or all of the symbols MAXATTRSIZE, MAXCOMMENTLINE, MAXDATUMSIZE, MAXOBJECTPARAMSIZE, MAXPATHSIZE, PARSAVSIZE, TOTATTRSIZE, & MAXVARNAMESIZE. (see text below for defns). wjs 5 Mar 96 moved minima to 'minbufsize.h' and iobuf_include reference is there, also. minbufsize.h can, then, be included in an inner.c and it will include any user-specified values clh */ /* Default them or "absolute" sanity check them */ #ifdef MAXATTRSIZE /* Includes neither [, ], nor ; */ #if MAXATTRSIZE < MINATTRSIZE #undef MAXATTRSIZE #define MAXATTRSIZE MINATTRSIZE #endif #else #define MAXATTRSIZE MINATTRSIZE #endif #ifdef MAXCOMMENTLINE /* Includes neither # nor newline */ #if MAXCOMMENTLINE < MINCOMMENTLINE #undef MAXCOMMENTLINE #define MAXCOMMENTLINE MINCOMMENTLINE #endif #else #define MAXCOMMENTLINE MINCOMMENTLINE #endif #ifdef MAXDATUMSIZE /* Length of longest datum string */ #if MAXDATUMSIZE < MINDATUMSIZE #undef MAXDATUMSIZE #define MAXDATUMSIZE MINDATUMSIZE #endif #else #define MAXDATUMSIZE MINDATUMSIZE #endif #ifdef MAXOBJECTPARAMSIZE /* Max length of single arg passed from */ #if MAXOBJECTPARAMSIZE < MINOBJECTPARAMSIZE /* .objects file to method */ #undef MAXOBJECTPARAMSIZE #define MAXOBJECTPARAMSIZE MINOBJECTPARAMSIZE #endif #else #define MAXOBJECTPARAMSIZE MINOBJECTPARAMSIZE #endif #ifdef PARSAVSIZE /* Max length html query string */ #if PARSAVSIZE < MINPARSAVSIZE #define PARSAVSIZE MINPARSAVSIZE #endif #else #define PARSAVSIZE MINPARSAVSIZE #endif #ifdef MAXPATHSIZE /* Max length of html path */ #if MAXPATHSIZE < MINPATHSIZE #undef MAXPATHSIZE #define MAXPATHSIZE MINPATHSIZE #endif #else #define MAXPATHSIZE MINPATHSIZE #endif #ifdef TOTATTRSIZE /* Size of all attributes for a */ #if TOTATTRSIZE < MINTOTATTRSIZE /* variable, including [ , ] & ;s */ #undef TOTATTRSIZE #define TOTATTRSIZE MINTOTATTRSIZE #endif #else #define TOTATTRSIZE MINTOTATTRSIZE #endif #ifdef MAXVARNAMESIZE #if MAXVARNAMESIZE < MINVARNAMESIZE #undef MAXVARNAMESIZE #define MAXVARNAMESIZE MINVARNAMESIZE #endif #else #define MAXVARNAMESIZE MINVARNAMESIZE #endif /* End making sure each variable user could supply is defined */ /* and at least minimum valued */ /**********************************************************************/ /* Logical sanity checks-add more! */ /* Something from the parameter file must specify at least */ /* a variable name */ #if MAXOBJECTPARAMSIZE < MAXVARNAMESIZE #undef MAXOBJECTPARAMSIZE #define MAXOBJECTPARAMSIZE MAXVARNAMESIZE #endif /* Total attribute size must be at least 1 attrib + [ + ] */ /* Sanity check against ourselves!! */ #if TOTATTRSIZE < MAXATTRSIZE + 2 #undef TOTATTRSIZE #define TOTATTRSIZE MAXATTRSIZE + 2 #endif /* parsav holds an html QUERY_STRING, which is, essentially, a */ /* selection, I think. A selection is of the form var=val, and */ /* the query is preceded by a ?. This string is also subject to */ /* insertion of escape characters. Guess 10% escaped chars */ #define QUERY_STRING_LEN MAXVARNAMESIZE+MAXDATUMSIZE+2 #define QUERYESCAPES QUERY_STRING_LEN/10 #if QUERY_STRING_LEN+QUERYESCAPES > PARSAVSIZE #undef PARSAVSIZE #define PARSAVSIZE QUERY_STRING_LEN+QUERYESCAPES #endif /* End sanity checks */ /* Derivative sizes */ /* outvar* buffers generally must hold a comment, then */ /* a variable name plus its complete attribute list */ /* Further, comments in an html environment may need inserted */ /* escape characters. Guess 10% */ #define NCOMMENTESCAPES MAXCOMMENTLINE/10 #if MAXCOMMENTLINE+NCOMMENTESCAPES > MAXVARNAMESIZE+TOTATTRSIZE #define OUTVARBUFSIZE MAXCOMMENTLINE+NCOMMENTESCAPES #else #define OUTVARBUFSIZE MAXVARNAMESIZE+TOTATTRSIZE #endif /* Check it against original value */ #if OUTVARBUFSIZE < MINOUTVARBUFSIZE #undef OUTVARBUFSIZE #define OUTVARBUFSIZE < MINOUTVARBUFSIZE #endif /* output* buffers generally must hold a comment, then a datum */ /* The escaped comments comment applies here, too */ #if MAXCOMMENTLINE+NCOMMENTESCAPES > MAXDATUMSIZE #define OUTBUFSIZE MAXCOMMENTLINE+NCOMMENTESCAPES #else #define OUTBUFSIZE MAXDATUMSIZE #endif /* Check it against original value */ #if OUTBUFSIZE < MINOUTBUFSIZE #undef OUTBUFSIZE #define OUTBUFSIZE MINOUTBUFSIZE #endif /* Calculate size of largest parsing token */ #if MAXDATUMSIZE > MAXVARNAMESIZE /* Clearly must be >= variable name size*/ #define TOKEN MAXDATUMSIZE /* but I don't know how much bigger */ #else /* Since comparisons are allowed, must */ #define TOKEN MAXVARNAMESIZE /* >= datum size, too */ #endif /* Finally, whole parameter from .object */ #if MAXOBJECTPARAMSIZE > TOKEN /* file might be copied into token */ #undef TOKEN /* buffer. Probable user error, but */ #define TOKEN MAXOBJECTPARAMSIZE /* don't want to trap */ #endif /* Check it against original value */ #if TOKEN < MINTOKEN #undef TOKEN #define TOKEN MINTOKEN #endif