1
0
Fork 0

Add file permission detection/restoring

This commit is contained in:
Aaron Lindsay 2013-08-13 23:18:17 -04:00
parent fae1ed38d5
commit 78e45facd7
2 changed files with 17 additions and 1 deletions

View File

@ -113,6 +113,12 @@ func ProcessLocalEvent(globals AsinkGlobals, event *asink.Event) {
panic(err)
}
fileinfo, err := os.Stat(event.Path)
if err != nil && !util.ErrorFileNotFound(err) {
panic(err)
}
event.Permissions = fileinfo.Mode()
//get the file's hash
hash, err := HashFile(tmpfilename)
event.Hash = hash
@ -207,6 +213,12 @@ func ProcessRemoteEvent(globals AsinkGlobals, event *asink.Event) {
panic(err)
}
}
if latestLocal == nil || event.Permissions != latestLocal.Permissions {
err := os.Chmod(event.Path, event.Permissions)
if err != nil && !util.ErrorFileNotFound(err) {
panic(err)
}
}
} else {
//intentionally ignore errors in case this file has been deleted out from under us
os.Remove(event.Path)

View File

@ -1,5 +1,9 @@
package asink
import (
"os"
)
//event type
type EventType uint32
@ -34,7 +38,7 @@ type Event struct {
Hash string
Predecessor string
Timestamp int64
Permissions uint32
Permissions os.FileMode
InDB bool `json:"-"` //defaults to false. Omitted from json marshalling.
}