Browse code

Move syscall.Stats logic to os specific file.

related to #2909.

Andrews Medina authored on 2013/11/28 11:22:47
Showing 4 changed files
... ...
@@ -181,7 +181,7 @@ func (info *FileInfo) addChanges(oldInfo *FileInfo, changes *[]Change) {
181 181
 				oldStat.Rdev != newStat.Rdev ||
182 182
 				// Don't look at size for dirs, its not a good measure of change
183 183
 				(oldStat.Size != newStat.Size && oldStat.Mode&syscall.S_IFDIR != syscall.S_IFDIR) ||
184
-				oldStat.Mtim != newStat.Mtim {
184
+				getLastModification(oldStat) != getLastModification(newStat) {
185 185
 				change := Change{
186 186
 					Path: newChild.path(),
187 187
 					Kind: ChangeModify,
... ...
@@ -83,8 +83,10 @@ func ApplyLayer(dest string, layer Archive) error {
83 83
 	}
84 84
 
85 85
 	for k, v := range modifiedDirs {
86
-		aTime := time.Unix(v.Atim.Unix())
87
-		mTime := time.Unix(v.Mtim.Unix())
86
+		lastAccess := getLastAccess(v)
87
+		lastModification := getLastModification(v)
88
+		aTime := time.Unix(lastAccess.Unix())
89
+		mTime := time.Unix(lastModification.Unix())
88 90
 
89 91
 		if err := os.Chtimes(k, aTime, mTime); err != nil {
90 92
 			return err
91 93
new file mode 100644
... ...
@@ -0,0 +1,11 @@
0
+package archive
1
+
2
+import "syscall"
3
+
4
+func getLastAccess(stat *syscall.Stat_t) syscall.Timespec {
5
+	return stat.Atimespec
6
+}
7
+
8
+func getLastModification(stat *syscall.Stat_t) syscall.Timespec {
9
+	return stat.Mtimespec
10
+}
0 11
new file mode 100644
... ...
@@ -0,0 +1,11 @@
0
+package archive
1
+
2
+import "syscall"
3
+
4
+func getLastAccess(stat *syscall.Stat_t) syscall.Timespec {
5
+	return stat.Atim
6
+}
7
+
8
+func getLastModification(stat *syscall.Stat_t) syscall.Timespec {
9
+	return stat.Mtim
10
+}