static int bibtex_cleandata( newstr *tag, newstr *s, fields *info, param *p ) { int i, status; list tokens; newstr *tok; if ( !s->len ) return BIBL_OK; /* protect url from undergoing any parsing */ if ( is_url_tag( tag ) ) return BIBL_OK; list_init( &tokens ); status = bibtex_split( &tokens, s ); if ( status!=BIBL_OK ) goto out; for ( i=0; i<tokens.n; ++i ) { tok = list_get( &tokens, i ); if ( bibtex_protected( tok ) ) { if (!strncasecmp(tok->data,"\\href{", 6)) { bibtex_addtitleurl( info, tok ); } } if ( p->latexin && !is_name_tag( tag ) && !is_url_tag( tag ) ) bibtex_cleantoken( tok ); } newstr_empty( s ); for ( i=0; i<tokens.n; ++i ) { tok = list_get( &tokens, i ); if ( i>0 ) newstr_addchar( s, ' ' ); newstr_newstrcat( s, tok ); } out: list_free( &tokens ); return status; }
static void bibtex_cleandata( newstr *s, fields *info, param *p ) { list tokens; int i; if ( !s->len ) return; list_init( &tokens ); bibtex_split( &tokens, s ); for ( i=0; i<tokens.n; ++i ) { if ( !bibtex_protected( &(tokens.str[i] ) ) ) { bibtex_usestrings( &(tokens.str[i]) ); } else { if (!strncasecmp(tokens.str[i].data,"\\href{", 6)) { bibtex_addtitleurl( info, &(tokens.str[i]) ); } bibtex_cleantoken( &(tokens.str[i]), p ); } } newstr_empty( s ); for ( i=0; i<tokens.n; ++i ) { if ( bibtex_protected( &(tokens.str[i]) ) ) bibtex_removeprotection( &(tokens.str[i])); newstr_strcat( s, tokens.str[i].data ); } list_free( &tokens ); }