ctmbstr tmbsubstr( ctmbstr s1, ctmbstr s2 ) { uint len1 = tmbstrlen(s1), len2 = tmbstrlen(s2); int ix, diff = len1 - len2; for ( ix = 0; ix <= diff; ++ix ) { if ( tmbstrncasecmp(s1+ix, s2, len2) == 0 ) return (ctmbstr) s1+ix; } return NULL; }
/* add missing type attribute when appropriate */ void CheckSCRIPT( TidyDocImpl* doc, Node *node ) { AttVal *lang, *type; char buf[16]; CheckAttributes( doc, node ); lang = GetAttrByName( node, "language" ); type = GetAttrByName( node, "type" ); if ( !type ) { /* ReportMissingAttr( doc, node, "type" ); */ /* check for javascript */ if ( lang ) { tmbstrncpy( buf, lang->value, sizeof(buf) ); buf[10] = '\0'; if ( tmbstrncasecmp(buf, "javascript", 10) == 0 || tmbstrncasecmp(buf, "jscript", 7) == 0 ) { AddAttribute( doc, node, "type", "text/javascript" ); } else if ( tmbstrcasecmp(buf, "vbscript") == 0 ) { /* per Randy Waki 8/6/01 */ AddAttribute( doc, node, "type", "text/vbscript" ); } } else AddAttribute( doc, node, "type", "text/javascript" ); type = GetAttrByName( node, "type" ); ReportAttrError( doc, node, type, INSERTING_ATTRIBUTE ); } }