GeoLocation

#!/bin/gawk -f

function getcoord(string,   a) {
  split(string, a, ":")
  gsub(/\"/, "", a[2])
  return a[2]
}

function httpget() {
  host = "geoiplookup.wikimedia.org"
  socket = "/inet/tcp/0/" host "/80"

  printf "GET / HTTP/1.1\r\nHost: %s\n\n", host |& socket
  for (header in headers) {
    printf "%s\r\n", headers[header] |& socket
  }
  printf "\r\n" |& socket

  NR = 0
  in_body = 0
  while (socket |& getline) {
    if (in_body)
      return $0

    if (/^\r$/)
      in_body = 1
  }
}

BEGIN {
  data = httpget()

  split(data, coords, /,/)
  lat = getcoord(coords[3])
  lon = getcoord(coords[4])

  printf "http://maps.google.com/maps?q=%s,%s\n", lat, lon
}