Geo-IP
view release on metacpan or search on metacpan
RETVAL = GeoIP_country_name_by_name(gi,name);
OUTPUT:
RETVAL
void
name_by_ipnum_v6(gi, ptr)
GeoIP *gi
char * ptr
PREINIT:
char * n;
PPCODE:
ST(0) = sv_newmortal();
n = GeoIP_name_by_ipnum_v6(gi,*(geoipv6_t*)ptr);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
void
name_by_addr_v6(gi, addr)
GeoIP *gi
char * addr
PREINIT:
char * n;
PPCODE:
ST(0) = sv_newmortal();
n = GeoIP_name_by_addr_v6(gi,addr);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
void
name_by_name_v6(gi, name)
GeoIP *gi
char * name
PREINIT:
char * n;
PPCODE:
ST(0) = sv_newmortal();
n = GeoIP_name_by_name_v6(gi,name);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
void
org_by_addr(gi, addr)
GeoIP *gi
char * addr
PREINIT:
char * n;
PPCODE:
ST(0) = sv_newmortal();
n = GeoIP_org_by_addr(gi,addr);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
void
org_by_name(gi, name)
GeoIP *gi
char * name
PREINIT:
char * n;
PPCODE:
ST(0) = sv_newmortal();
n = GeoIP_org_by_name(gi,name);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
void
range_by_ip(gi, addr)
GeoIP *gi
const char * addr
PREINIT:
char ** r;
PPCODE:
r = GeoIP_range_by_ip(gi,addr);
if (r != NULL){
EXTEND(SP,2);
PUSHs( sv_2mortal( newSVpv(r[0], 0) ) );
PUSHs( sv_2mortal( newSVpv(r[1], 0) ) );
if ( r[0] )
free(r[0]);
if ( r[1] )
free(r[1]);
free(r);
}
void
region_by_addr(gi, addr)
GeoIP *gi
char * addr
PREINIT:
GeoIPRegion * gir;
PPCODE:
gir = GeoIP_region_by_addr(gi,addr);
if (gir){
EXTEND(SP,2);
( gir->country_code[0] == '\0' && gir->country_code[1] == '\0' )
? PUSHs ( sv_newmortal() )
: PUSHs ( sv_2mortal( newSVpv(gir->country_code, 2) ) );
( gir->region[0] == '\0' && gir->region[1] == '\0' )
? PUSHs ( sv_newmortal() )
GeoIPRegion_delete(gir);
}
void
region_by_name(gi, name)
GeoIP *gi
char * name
PREINIT:
GeoIPRegion * gir;
PPCODE:
gir = GeoIP_region_by_name(gi,name);
if (gir){
EXTEND(SP,2);
( gir->country_code[0] == '\0' && gir->country_code[1] == '\0' )
? PUSHs ( sv_newmortal() )
: PUSHs ( sv_2mortal( newSVpv(gir->country_code, 2) ) );
( gir->region[0] == '\0' && gir->region[1] == '\0' )
? PUSHs ( sv_newmortal() )
CODE:
RETVAL = (const char *) GeoIP_time_zone_by_country_and_region(gir->country_code, gir->region);
OUTPUT:
RETVAL
void
city(gir)
GeoIPRecord *gir
PREINIT:
SV * n;
PPCODE:
n = newSVpv( gir->city ? gir->city : "", 0);
#if defined(sv_utf8_decode)
if ( gir->charset == GEOIP_CHARSET_UTF8 )
SvUTF8_on(n);
#endif
sv_2mortal(n);
ST(0) = n;
XSRETURN(1);
const char *
( run in 0.438 second using v1.01-cache-2.11-cpan-5511b514fd6 )