void tidy_out( TidyDocImpl* doc, ctmbstr msg, ... ) { if ( !cfgBool(doc, TidyQuiet) ) { TidyOutputSink *outp = &doc->errout->sink; ctmbstr cp; enum { sizeBuf=2048 }; char *buf = (char *)TidyDocAlloc(doc,sizeBuf); byte b; va_list args; va_start( args, msg ); TY_(tmbvsnprintf)(buf, sizeBuf, msg, args); va_end( args ); for ( cp=buf; *cp; ++cp ) { b = (*cp & 0xff); if (b == (byte)'\n') TY_(WriteChar)( b, doc->errout ); /* for EOL translation */ else outp->putByte( outp->sinkData, b ); /* #383 - no encoding */ } TidyDocFree(doc, buf); } }
static Dict* NewDict( TidyDocImpl* doc, ctmbstr name ) { Dict *np = (Dict*) TidyDocAlloc( doc, sizeof(Dict) ); np->id = TidyTag_UNKNOWN; np->name = name ? TY_(tmbstrdup)( doc->allocator, name ) : NULL; np->versions = VERS_UNKNOWN; np->attrvers = NULL; np->model = CM_UNKNOWN; np->parser = 0; np->chkattrs = 0; np->next = NULL; return np; }
static const Dict *install(TidyDocImpl* doc, TidyTagImpl* tags, const Dict* old) { DictHash *np; uint hashval; if (old) { np = (DictHash *)TidyDocAlloc(doc, sizeof(*np)); np->tag = old; hashval = hash(old->name); np->next = tags->hashtab[hashval]; tags->hashtab[hashval] = np; } return old; }
void tidy_out( TidyDocImpl* doc, ctmbstr msg, ... ) { if ( !cfgBool(doc, TidyQuiet) ) { ctmbstr cp; enum { sizeBuf=2048 }; char *buf = (char *)TidyDocAlloc(doc,sizeBuf); va_list args; va_start( args, msg ); TY_(tmbvsnprintf)(buf, sizeBuf, msg, args); va_end( args ); #if !defined(NDEBUG) && defined(_MSC_VER) add_std_out(0); #endif for ( cp=buf; *cp; ++cp ) TY_(WriteChar)( *cp, doc->errout ); #if !defined(NDEBUG) && defined(_MSC_VER) add_std_out(1); #endif TidyDocFree(doc, buf); } }
static void messagePos( TidyDocImpl* doc, TidyReportLevel level, uint code, int line, int col, ctmbstr msg, va_list args ) { enum { sizeMessageBuf=2048 }; char *messageBuf = TidyDocAlloc(doc,sizeMessageBuf); Bool go = UpdateCount( doc, level ); if ( go ) { va_list args_copy; va_copy(args_copy, args); TY_(tmbvsnprintf)(messageBuf, sizeMessageBuf, msg, args); if ( doc->mssgFilt ) { TidyDoc tdoc = tidyImplToDoc( doc ); go = doc->mssgFilt( tdoc, level, line, col, messageBuf ); } if ( doc->mssgFilt2 ) { /* mssgFilt2 is intended to allow LibTidy users to localize messages via their own means by providing a key string and the parameters to fill it. For the key string to remain consistent, we have to ensure that we only ever return the built-in English version of this string. */ TidyDoc tdoc = tidyImplToDoc( doc ); go = go | doc->mssgFilt2( tdoc, level, line, col, tidyDefaultString(code), args_copy ); } if ( doc->mssgFilt3 ) { /* mssgFilt3 is intended to allow LibTidy users to localize messages via their own means by providing a key string and the parameters to fill it. */ TidyDoc tdoc = tidyImplToDoc( doc ); go = go | doc->mssgFilt3( tdoc, level, line, col, tidyErrorCodeAsString(code), args_copy ); } } if ( go ) { enum { sizeBuf=1024 }; char *buf = TidyDocAlloc(doc,sizeBuf); const char *cp; if ( line > 0 && col > 0 ) { ReportPosition(doc, line, col, buf, sizeBuf); #if !defined(NDEBUG) && defined(_MSC_VER) SPRTF("%s",buf); #endif for ( cp = buf; *cp; ++cp ) TY_(WriteChar)( *cp, doc->errout ); } LevelPrefix( level, buf, sizeBuf ); #if !defined(NDEBUG) && defined(_MSC_VER) SPRTF("%s",buf); SPRTF("%s\n",messageBuf); #else for ( cp = buf; *cp; ++cp ) TY_(WriteChar)( *cp, doc->errout ); for ( cp = messageBuf; *cp; ++cp ) TY_(WriteChar)( *cp, doc->errout ); TY_(WriteChar)( '\n', doc->errout ); #endif TidyDocFree(doc, buf); } TidyDocFree(doc, messageBuf); }
static void messagePos( TidyDocImpl* doc, TidyReportLevel level, uint code, int line, int col, ctmbstr msg, va_list args ) { enum { sizeMessageBuf=2048 }; char *messageBuf = TidyDocAlloc(doc,sizeMessageBuf); Bool go = UpdateCount( doc, level ); if ( go ) { va_list args_copy; va_copy(args_copy, args); TY_(tmbvsnprintf)(messageBuf, sizeMessageBuf, msg, args_copy); if ( doc->mssgFilt ) { TidyDoc tdoc = tidyImplToDoc( doc ); go = doc->mssgFilt( tdoc, level, line, col, messageBuf ); } if ( doc->mssgFilt2 ) { /* mssgFilt2 is intended to allow LibTidy users to localize messages via their own means by providing a key string and the parameters to fill it. For the key string to remain consistent, we have to ensure that we only ever return the built-in English version of this string. */ TidyDoc tdoc = tidyImplToDoc( doc ); va_end(args_copy); va_copy(args_copy, args); go = go | doc->mssgFilt2( tdoc, level, line, col, tidyDefaultString(code), args_copy ); } if ( doc->mssgFilt3 ) { /* mssgFilt3 is intended to allow LibTidy users to localize messages via their own means by providing a key string and the parameters to fill it. */ TidyDoc tdoc = tidyImplToDoc( doc ); va_end(args_copy); va_copy(args_copy, args); go = go | doc->mssgFilt3( tdoc, level, line, col, tidyErrorCodeAsString(code), args_copy ); } va_end(args_copy); } if ( go ) { enum { sizeBuf=1024 }; TidyOutputSink *outp = &doc->errout->sink; char *buf = (char *)TidyDocAlloc(doc,sizeBuf); const char *cp; byte b; if ( line > 0 && col > 0 ) { ReportPosition(doc, line, col, buf, sizeBuf); for ( cp = buf; *cp; ++cp ) { b = (*cp & 0xff); outp->putByte( outp->sinkData, b ); } } LevelPrefix( level, buf, sizeBuf ); for ( cp = buf; *cp; ++cp ) { b = (*cp & 0xff); outp->putByte( outp->sinkData, b ); } for ( cp = messageBuf; *cp; ++cp ) { b = (*cp & 0xff); outp->putByte( outp->sinkData, b ); } TY_(WriteChar)( '\n', doc->errout ); TidyDocFree(doc, buf); } TidyDocFree(doc, messageBuf); }