/* many fields have been abused to embed URLs, DOIs, etc. */ int is_embedded_link( char *s ) { if ( is_uri_remote_scheme( s ) != -1 ) return 1; if ( is_reference_database( s ) != -1 ) return 1; if ( is_doi( s ) !=-1 ) return 1; return 0; }
/* Wiley EndNote download has DOI's in "%1" tag */ static void addnotes( fields *info, char *tag, char *data, int level ) { int doi = is_doi( data ); if ( doi!=-1 ) fields_add( info, "DOI", &(data[doi]), level ); else fields_add( info, tag, data, level ); }
/* Wiley's EndNote download has DOI's in "%1" tag */ static int endin_addnotes( fields *info, char *tag, char *data, int level ) { int doi = is_doi( data ); if ( doi!=-1 ) return fields_add( info, "DOI", &(data[doi]), level ); else return fields_add( info, tag, data, level ); }
/* oxfordjournals hide the DOI in the NOTES N1 field */ static void notes_add( fields *info, char *tag, newstr *s, int level ) { int doi = is_doi( s->data ); if ( doi!=-1 ) fields_add( info, "DOI", &(s->data[doi]), level ); else fields_add( info, tag, s->data, level ); }
/* scopus puts DOI in the DO or DI tag, but it needs cleaning */ static int risin_doi( fields *bibin, newstr *intag, newstr *invalue, int level, param *pm, char *outtag, fields *bibout ) { int fstatus, doi; doi = is_doi( invalue->data ); if ( doi!=-1 ) { fstatus = fields_add( bibout, "DOI", &(invalue->data[doi]), level ); if ( fstatus!=FIELDS_OK ) return BIBL_ERR_MEMERR; } return BIBL_OK; }