mirror of https://github.com/dirtbags/moth.git
Begin work on reading mothballs
This commit is contained in:
parent
6a9fcb7b9c
commit
cb399d9d7e
|
@ -0,0 +1,52 @@
|
|||
package mothball
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Mothball struct {
|
||||
zf *zipfile.File,
|
||||
filename string,
|
||||
mtime time.Time,
|
||||
}
|
||||
|
||||
func Open(filename string) (*Mothball, error) {
|
||||
var m Mothball
|
||||
|
||||
m.filename = filename
|
||||
|
||||
err := m.Refresh()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return &m
|
||||
}
|
||||
|
||||
func (m Mothball) Close() (error) {
|
||||
return m.zf.Close()
|
||||
}
|
||||
|
||||
func (m Mothball) Refresh() (error) {
|
||||
mtime, err := os.Stat(m.filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if mtime == m.mtime {
|
||||
return nil
|
||||
}
|
||||
|
||||
zf, err := zip.OpenReader(m.filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
m.zf.Close()
|
||||
m.zf = zf
|
||||
m.mtime = mtime
|
||||
}
|
||||
|
||||
func (m Mothball)
|
Loading…
Reference in New Issue