Skip to content

Instantly share code, notes, and snippets.

@edrex
Created May 17, 2016 16:44
Show Gist options
  • Save edrex/7595986d535ce6e781ba46f16169c13d to your computer and use it in GitHub Desktop.
Save edrex/7595986d535ce6e781ba46f16169c13d to your computer and use it in GitHub Desktop.
package main
import "os"
import "log"
import "github.com/cznic/kv"
import "bytes"
import "strconv"
func usage() {
log.Fatalf(`Usage: exifgps-fixup FILE`)
}
func main() {
var err error
prefix := []byte("exifgps|")
if len(os.Args) != 2 {
usage()
}
opts := kv.Options{}
db, err := kv.Open(os.Args[1], &opts)
if err != nil {
log.Fatalln(err)
}
defer db.Close()
enum, _, err := db.Seek(prefix)
if err != nil {
log.Fatalln(err)
}
for true {
var k, v []byte
k, v, err = enum.Next()
if err != nil || !bytes.HasPrefix(k, prefix) {
break
}
pipe := bytes.IndexByte(v, '|')
if pipe < 0 {
log.Printf("bogus row %q = %q", k, v)
continue
}
_, err := strconv.ParseFloat(string(v[:pipe]), 64)
_, err1 := strconv.ParseFloat(string(v[pipe+1:]), 64)
if err != nil || err1 != nil {
log.Printf("deleting bogus row %q = %q", k, v)
err = db.Delete(k)
if err != nil {
log.Fatalln(err)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment