Skip to content

Commit

Permalink
Merge pull request #63 from darrenstahlmsft/ReparseModifiedTime
Browse files Browse the repository at this point in the history
Only update directory modified times if not a reparse point
  • Loading branch information
jstarks authored Aug 16, 2016
2 parents 6a6862b + f43b71b commit 4b220a1
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions baselayer.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,18 +75,20 @@ func (w *baseLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) (err e
return err
}
createmode = syscall.OPEN_EXISTING
w.dirInfo = append(w.dirInfo, dirInfo{path, *fileInfo})
if fileInfo.FileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT == 0 {
w.dirInfo = append(w.dirInfo, dirInfo{path, *fileInfo})
}
}

mode := uint32(syscall.GENERIC_READ | syscall.GENERIC_WRITE | winio.WRITE_DAC | winio.WRITE_OWNER | winio.ACCESS_SYSTEM_SECURITY)
f, err = winio.OpenForBackup(path, mode, syscall.FILE_SHARE_READ, createmode)
if err != nil {
return err
return makeError(err, "Failed to OpenForBackup", path)
}

err = winio.SetFileBasicInfo(f, fileInfo)
if err != nil {
return err
return makeError(err, "Failed to SetFileBasicInfo", path)
}

w.f = f
Expand Down Expand Up @@ -144,13 +146,13 @@ func (w *baseLayerWriter) Close() error {
di := &w.dirInfo[len(w.dirInfo)-i-1]
f, err := winio.OpenForBackup(di.path, uint32(syscall.GENERIC_READ|syscall.GENERIC_WRITE), syscall.FILE_SHARE_READ, syscall.OPEN_EXISTING)
if err != nil {
return err
return makeError(err, "Failed to OpenForBackup", di.path)
}

err = winio.SetFileBasicInfo(f, &di.fileInfo)
f.Close()
if err != nil {
return err
return makeError(err, "Failed to SetFileBasicInfo", di.path)
}
}

Expand Down

0 comments on commit 4b220a1

Please sign in to comment.