@@ -92,11 +92,11 @@ addToLibrary({
9292 node . node_ops = MEMFS . ops_table . chrdev . node ;
9393 node . stream_ops = MEMFS . ops_table . chrdev . stream ;
9494 }
95- node . timestamp = Date . now ( ) ;
95+ node . atime = node . mtime = node . ctime = Date . now ( ) ;
9696 // add the new node to the parent
9797 if ( parent ) {
9898 parent . contents [ name ] = node ;
99- parent . timestamp = node . timestamp ;
99+ parent . atime = parent . mtime = parent . ctime = node . atime ;
100100 }
101101 return node ;
102102 } ,
@@ -161,21 +161,20 @@ addToLibrary({
161161 } else {
162162 attr . size = 0 ;
163163 }
164- attr . atime = new Date ( node . timestamp ) ;
165- attr . mtime = new Date ( node . timestamp ) ;
166- attr . ctime = new Date ( node . timestamp ) ;
164+ attr . atime = new Date ( node . atime ) ;
165+ attr . mtime = new Date ( node . mtime ) ;
166+ attr . ctime = new Date ( node . ctime ) ;
167167 // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
168168 // but this is not required by the standard.
169169 attr . blksize = 4096 ;
170170 attr . blocks = Math . ceil ( attr . size / attr . blksize ) ;
171171 return attr ;
172172 } ,
173173 setattr ( node , attr ) {
174- if ( attr . mode !== undefined ) {
175- node . mode = attr . mode ;
176- }
177- if ( attr . timestamp !== undefined ) {
178- node . timestamp = attr . timestamp ;
174+ for ( const key of [ "mode" , "atime" , "mtime" , "ctime" ] ) {
175+ if ( attr [ key ] ) {
176+ node [ key ] = attr [ key ] ;
177+ }
179178 }
180179 if ( attr . size !== undefined ) {
181180 MEMFS . resizeFileStorage ( node , attr . size ) ;
@@ -207,22 +206,21 @@ addToLibrary({
207206 }
208207 // do the internal rewiring
209208 delete old_node . parent . contents [ old_node . name ] ;
210- old_node . parent . timestamp = Date . now ( )
211- old_node . name = new_name ;
212209 new_dir . contents [ new_name ] = old_node ;
213- new_dir . timestamp = old_node . parent . timestamp ;
210+ old_node . name = new_name ;
211+ new_dir . ctime = new_dir . mtime = old_node . parent . ctime = old_node . parent . mtime = Date . now ( ) ;
214212 } ,
215213 unlink ( parent , name ) {
216214 delete parent . contents [ name ] ;
217- parent . timestamp = Date . now ( ) ;
215+ parent . ctime = parent . mtime = Date . now ( ) ;
218216 } ,
219217 rmdir ( parent , name ) {
220218 var node = FS . lookupNode ( parent , name ) ;
221219 for ( var i in node . contents ) {
222220 throw new FS . ErrnoError ( { { { cDefs . ENOTEMPTY } } } ) ;
223221 }
224222 delete parent . contents [ name ] ;
225- parent . timestamp = Date . now ( ) ;
223+ parent . ctime = parent . mtime = Date . now ( ) ;
226224 } ,
227225 readdir ( node ) {
228226 var entries = [ '.' , '..' ] ;
@@ -282,7 +280,7 @@ addToLibrary({
282280
283281 if ( ! length ) return 0 ;
284282 var node = stream . node ;
285- node . timestamp = Date . now ( ) ;
283+ node . mtime = node . ctime = Date . now ( ) ;
286284
287285 if ( buffer . subarray && ( ! node . contents || node . contents . subarray ) ) { // This write is from a typed array to a typed array?
288286 if ( canOwn ) {
0 commit comments