diff --git a/harvester.go b/harvester.go index e44846b2a833c8e9afe0e806ba0d00eeb7f78ce9..98d645379a2e715fec0d3710a3bc0ec489bfef7c 100644 --- a/harvester.go +++ b/harvester.go @@ -34,6 +34,8 @@ func (h *Harvester) Harvest(output chan *FileEvent) { // get current offset in file offset, _ := h.file.Seek(0, os.SEEK_CUR) + log.Printf("Current file offset: %d\n", offset) + // TODO(sissel): Make the buffer size tunable at start-time reader := bufio.NewReaderSize(h.file, 16<<10) // 16kb buffer by default diff --git a/registrar.go b/registrar.go index cc0149009ff87e6d5fd28c360fa4b9c473f57b32..19998286881f8cd8e681ff361d409a68cf5cc02b 100644 --- a/registrar.go +++ b/registrar.go @@ -2,8 +2,6 @@ package main import ( "log" - "os" - "encoding/json" ) func Registrar(input chan []*FileEvent) { @@ -28,25 +26,12 @@ func Registrar(input chan []*FileEvent) { Inode: ino, Device: dev, } + log.Printf("State %s: %d\n", *event.Source, event.Offset) } if len(state) > 0 { - write(state) - os.Rename(".lumberjack.new", ".lumberjack") + WriteRegistry(state, ".lumberjack") } } } -func write(state map[string]*FileState) { - log.Printf("Saving registrar state.\n") - // Open tmp file, write, flush, rename - file, err := os.Create(".lumberjack.new") - if err != nil { - log.Printf("Failed to open .lumberjack.new for writing: %s\n", err) - return - } - - encoder := json.NewEncoder(file) - encoder.Encode(state) - file.Close() -} diff --git a/registrar_other.go b/registrar_other.go new file mode 100644 index 0000000000000000000000000000000000000000..330dbb2722a521a59c6e81c5608c4300e4864e68 --- /dev/null +++ b/registrar_other.go @@ -0,0 +1,23 @@ +// +build !windows + +package main +import ( + "encoding/json" + "os" + "log" +) + +func WriteRegistry(state map[string]*FileState, path string) { + // Open tmp file, write, flush, rename + file, err := os.Create(".lumberjack.new") + if err != nil { + log.Printf("Failed to open .lumberjack.new for writing: %s\n", err) + return + } + defer file.Close() + + encoder := json.NewEncoder(file) + encoder.Encode(state) + + os.Rename(".lumberjack.new", path) +} diff --git a/registrar_windows.go b/registrar_windows.go new file mode 100644 index 0000000000000000000000000000000000000000..ef8cf552d82a976a5abdcac33a2b63d3ea8b9974 --- /dev/null +++ b/registrar_windows.go @@ -0,0 +1,24 @@ +package main + +import ( + "encoding/json" + "os" + "log" +) + +func WriteRegistry(state map[string]*FileState, path string) { + tmp := path + ".new" + file, err := os.Create(tmp) + if err != nil { + log.Printf("Failed to open .lumberjack.new for writing: %s\n", err) + return + } + + encoder := json.NewEncoder(file) + encoder.Encode(state) + file.Close() + + old := path + ".old" + os.Rename(path, old) + os.Rename(tmp, path) +}