1*219b2ee8SDavid du Colombier #include "lib.h" 23e12c5d1SDavid du Colombier #include <sys/types.h> 3*219b2ee8SDavid du Colombier #include <time.h> 43e12c5d1SDavid du Colombier #include <utime.h> 53e12c5d1SDavid du Colombier #include <errno.h> 63e12c5d1SDavid du Colombier #include "sys9.h" 7*219b2ee8SDavid du Colombier #include "dir.h" 83e12c5d1SDavid du Colombier 93e12c5d1SDavid du Colombier int 103e12c5d1SDavid du Colombier utime(const char *path, const struct utimbuf *times) 113e12c5d1SDavid du Colombier { 12*219b2ee8SDavid du Colombier int n; 13*219b2ee8SDavid du Colombier char cd[DIRLEN]; 14*219b2ee8SDavid du Colombier Dir dir; 15*219b2ee8SDavid du Colombier time_t curt; 16*219b2ee8SDavid du Colombier 17*219b2ee8SDavid du Colombier if(_STAT(path, cd) < 0){ 18*219b2ee8SDavid du Colombier _syserrno(); 193e12c5d1SDavid du Colombier return -1; 203e12c5d1SDavid du Colombier } 21*219b2ee8SDavid du Colombier convM2D(cd, &dir); 22*219b2ee8SDavid du Colombier if(times == 0) { 23*219b2ee8SDavid du Colombier curt = time(0); 24*219b2ee8SDavid du Colombier dir.atime = curt; 25*219b2ee8SDavid du Colombier dir.mtime = curt; 26*219b2ee8SDavid du Colombier } else { 27*219b2ee8SDavid du Colombier dir.atime = times->actime; 28*219b2ee8SDavid du Colombier dir.mtime = times->modtime; 29*219b2ee8SDavid du Colombier } 30*219b2ee8SDavid du Colombier convD2M(&dir, cd); 31*219b2ee8SDavid du Colombier n = _WSTAT(path, cd); 32*219b2ee8SDavid du Colombier if(n < 0) 33*219b2ee8SDavid du Colombier _syserrno(); 34*219b2ee8SDavid du Colombier return n; 35*219b2ee8SDavid du Colombier } 36