]> Sergey Matveev's repositories - btrtrc.git/commitdiff
There was no error for missing file, and no way to close the mmap returned from iplis...
authorMatt Joiner <anacrolix@gmail.com>
Thu, 8 Feb 2018 12:57:35 +0000 (23:57 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 8 Feb 2018 12:57:35 +0000 (23:57 +1100)
The function is also renamed due to the changed behaviour.

iplist/packed.go

index 427e55725e31a787c493e192345cdd4f6327b481..143bca038cbbe2d9c1b25b65ec243b69f3c46a81 100644 (file)
@@ -114,12 +114,20 @@ func (pil PackedIPList) Lookup(ip net.IP) (r Range, ok bool) {
        return lookup(pil.getFirst, pil.getRange, pil.len(), ip4)
 }
 
-func MMapPacked(filename string) (ret Ranger, err error) {
+type closerFunc func() error
+
+func (me closerFunc) Close() error {
+       return me()
+}
+
+func MMapPackedFile(filename string) (
+       ret interface {
+               Ranger
+               io.Closer
+       },
+       err error,
+) {
        f, err := os.Open(filename)
-       if os.IsNotExist(err) {
-               err = nil
-               return
-       }
        if err != nil {
                return
        }
@@ -128,7 +136,9 @@ func MMapPacked(filename string) (ret Ranger, err error) {
        if err != nil {
                return
        }
-       // TODO: Need a destructor that unmaps this.
-       ret = NewFromPacked(mm)
+       ret = struct {
+               Ranger
+               io.Closer
+       }{NewFromPacked(mm), closerFunc(mm.Unmap)}
        return
 }