37 lines
		
	
	
	
		
			687 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
	
		
			687 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const fs = require('../fs')
							 | 
						||
| 
								 | 
							
								const u = require('universalify').fromPromise
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function utimesMillis (path, atime, mtime) {
							 | 
						||
| 
								 | 
							
								  // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)
							 | 
						||
| 
								 | 
							
								  const fd = await fs.open(path, 'r+')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  let closeErr = null
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    await fs.futimes(fd, atime, mtime)
							 | 
						||
| 
								 | 
							
								  } finally {
							 | 
						||
| 
								 | 
							
								    try {
							 | 
						||
| 
								 | 
							
								      await fs.close(fd)
							 | 
						||
| 
								 | 
							
								    } catch (e) {
							 | 
						||
| 
								 | 
							
								      closeErr = e
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (closeErr) {
							 | 
						||
| 
								 | 
							
								    throw closeErr
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function utimesMillisSync (path, atime, mtime) {
							 | 
						||
| 
								 | 
							
								  const fd = fs.openSync(path, 'r+')
							 | 
						||
| 
								 | 
							
								  fs.futimesSync(fd, atime, mtime)
							 | 
						||
| 
								 | 
							
								  return fs.closeSync(fd)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  utimesMillis: u(utimesMillis),
							 | 
						||
| 
								 | 
							
								  utimesMillisSync
							 | 
						||
| 
								 | 
							
								}
							 |