/** Do not modify. This file is automatically generated * using gen_tld.pl and tld.list */ static const char *tld[] = { ".LOCALHOST", ".INVALID", ".EXAMPLE", ".COOP.BR", ".ZLG.BR", ".VET.BR", ".TUR.BR", ".TRD.BR", ".TMP.BR", ".SRV.BR", ".SLG.BR", ".REC.BR", ".QSL.BR", ".PSI.BR", ".PSC.BR", ".PRO.BR", ".PPG.BR", ".ORG.BR", ".ODO.BR", ".NTR.BR", ".NOT.BR", ".NOM.BR", ".NET.BR", ".MUSEUM", ".MUS.BR", ".MIL.BR", ".MED.BR", ".MAT.BR", ".LEL.BR", ".JOR.BR", ".INF.BR", ".IND.BR", ".IMB.BR", ".GOV.BR", ".GGF.BR", ".G12.BR", ".FST.BR", ".FOT.BR", ".FND.BR", ".FAR.BR", ".ETI.BR", ".ETC.BR", ".ESP.BR", ".ENG.BR", ".EDU.BR", ".ECN.BR", ".COM.BR", ".CNT.BR", ".CNG.BR", ".CIM.BR", ".BMD.BR", ".BIO.BR", ".ATO.BR", ".ART.BR", ".ARQ.BR", ".AGR.BR", ".ADV.BR", ".ADM.BR", ".TV.BR", ".FM.BR", ".AM.BR", ".TEST", ".NAME", ".INFO", ".COOP", ".ARPA", ".AERO", ".PRO", ".ORG", ".NET", ".MIL", ".INT", ".GOV", ".EDU", ".COM", ".BIZ", ".ZW", ".ZM", ".ZA", ".YU", ".YT", ".YE", ".WS", ".WF", ".VU", ".VN", ".VI", ".VG", ".VE", ".VC", ".VA", ".UZ", ".UY", ".US", ".UM", ".UK", ".UG", ".UA", ".TZ", ".TW", ".TV", ".TT", ".TR", ".TP", ".TO", ".TN", ".TM", ".TK", ".TJ", ".TH", ".TG", ".TF", ".TD", ".TC", ".SZ", ".SY", ".SV", ".SU", ".ST", ".SR", ".SO", ".SN", ".SM", ".SL", ".SK", ".SJ", ".SI", ".SH", ".SG", ".SE", ".SD", ".SC", ".SB", ".SA", ".RW", ".RU", ".RO", ".RE", ".QA", ".PY", ".PW", ".PT", ".PS", ".PR", ".PN", ".PM", ".PL", ".PK", ".PH", ".PG", ".PF", ".PE", ".PA", ".OM", ".NZ", ".NU", ".NR", ".NP", ".NO", ".NL", ".NI", ".NG", ".NF", ".NE", ".NC", ".NA", ".MZ", ".MY", ".MX", ".MW", ".MV", ".MU", ".MT", ".MS", ".MR", ".MQ", ".MP", ".MO", ".MN", ".MM", ".ML", ".MK", ".MH", ".MG", ".MD", ".MC", ".MA", ".LY", ".LV", ".LU", ".LT", ".LS", ".LR", ".LK", ".LI", ".LC", ".LB", ".LA", ".KZ", ".KY", ".KW", ".KR", ".KP", ".KN", ".KM", ".KI", ".KH", ".KG", ".KE", ".JP", ".JO", ".JM", ".JE", ".IT", ".IS", ".IR", ".IQ", ".IO", ".IN", ".IM", ".IL", ".IE", ".ID", ".HU", ".HT", ".HR", ".HN", ".HM", ".HK", ".GY", ".GW", ".GU", ".GT", ".GS", ".GR", ".GQ", ".GP", ".GN", ".GM", ".GL", ".GI", ".GH", ".GG", ".GF", ".GE", ".GD", ".GB", ".GA", ".FR", ".FO", ".FM", ".FK", ".FJ", ".FI", ".ET", ".ES", ".ER", ".EH", ".EG", ".EE", ".EC", ".DZ", ".DO", ".DM", ".DK", ".DJ", ".DE", ".CZ", ".CY", ".CX", ".CV", ".CU", ".CR", ".CO", ".CN", ".CM", ".CL", ".CK", ".CI", ".CH", ".CG", ".CF", ".CD", ".CC", ".CA", ".BZ", ".BY", ".BW", ".BV", ".BT", ".BS", ".BR", ".BO", ".BN", ".BM", ".BJ", ".BI", ".BH", ".BG", ".BF", ".BE", ".BD", ".BB", ".BA", ".AZ", ".AW", ".AU", ".AT", ".AS", ".AR", ".AQ", ".AO", ".AN", ".AM", ".AL", ".AI", ".AG", ".AF", ".AE", ".AD", ".AC" }; static size_t tldOffset(const char *domain) { const char *end = domain + strlen(domain); for(unsigned int i = 0; i < 321; ++i) { size_t len = strlen(tld[i]); if(strcasecmp(end - len, tld[i]) == 0) { return len; } } return 0; }