package main import ( "os" "io" "log" "index/suffixarray" "strconv" ) func main() { idx := os.Args[1] + ".suf" f, err := os.Open(os.Args[1]) if err != nil { log.Fatal(err) } defer f.Close() n, err := strconv.Atoi(os.Args[2]) if err != nil { log.Fatal(err) } outf, err := os.Create(idx + ".new") if err != nil { log.Fatal(err) } defer outf.Close() data := make([]byte, n) count, err := f.Read(data) if err != nil && err != io.EOF { log.Fatal(err) } err = suffixarray.New(data[:count]).Write(outf) if err != nil { os.Remove(idx + ".new") log.Fatal(err) } outf.Sync() outf.Close() err = os.Rename(idx + ".new", idx) if err != nil { log.Fatal(err) } }