/* science direct is now doing "M3 - doi: DOI: 10.xxxx/xxxxx" */ int is_doi( char *s ) { if ( string_pattern( s, "##.####/", 0 ) ) return 0; if ( string_pattern( s, "doi:##.####/", 0 ) ) return 4; if ( string_pattern( s, "doi: ##.####/", 0 ) ) return 5; if ( string_pattern( s, "doi: DOI: ##.####/", 0 ) ) return 10; return -1; }
char getopt(int argc, char **argv, const char* pattern) { std::vector<std::string> options; char return_value; static int arg_post = 1; if (argc < 2) return -1; std::string string_pattern(pattern); while (arg_post < argc) { if (argv[arg_post][0] != '-') { ++arg_post; continue; } if (strlen(argv[arg_post]) == 1) { ++arg_post; continue; } if (string_pattern.find(argv[arg_post][1]) != std::string::npos) { return_value = argv[arg_post][1]; ++arg_post; if (argv[arg_post][0] != '-') { optarg = argv[arg_post]; } return return_value; } } return -1; }