xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/utime.c (revision d3c05884522721166d85a4d78bb2a932ad0e3f06)
1219b2ee8SDavid du Colombier #include "lib.h"
23e12c5d1SDavid du Colombier #include <sys/types.h>
3219b2ee8SDavid du Colombier #include <time.h>
43e12c5d1SDavid du Colombier #include <utime.h>
53e12c5d1SDavid du Colombier #include <errno.h>
69a747e4fSDavid du Colombier #include <stdlib.h>
73e12c5d1SDavid du Colombier #include "sys9.h"
8219b2ee8SDavid du Colombier #include "dir.h"
93e12c5d1SDavid du Colombier 
103e12c5d1SDavid du Colombier int
utime(const char * path,const struct utimbuf * times)113e12c5d1SDavid du Colombier utime(const char *path, const struct utimbuf *times)
123e12c5d1SDavid du Colombier {
13219b2ee8SDavid du Colombier 	int n;
14*d3c05884SDavid du Colombier 	Dir nd;
15219b2ee8SDavid du Colombier 	time_t curt;
16219b2ee8SDavid du Colombier 
17*d3c05884SDavid du Colombier 	_nulldir(&nd);
18219b2ee8SDavid du Colombier 	if(times == 0) {
19219b2ee8SDavid du Colombier 		curt = time(0);
20*d3c05884SDavid du Colombier 		nd.atime = curt;
21*d3c05884SDavid du Colombier 		nd.mtime = curt;
22219b2ee8SDavid du Colombier 	} else {
23*d3c05884SDavid du Colombier 		nd.atime = times->actime;
24*d3c05884SDavid du Colombier 		nd.mtime = times->modtime;
25219b2ee8SDavid du Colombier 	}
26*d3c05884SDavid du Colombier 	n = _dirwstat(path, &nd);
27219b2ee8SDavid du Colombier 	if(n < 0)
28219b2ee8SDavid du Colombier 		_syserrno();
29219b2ee8SDavid du Colombier 	return n;
30219b2ee8SDavid du Colombier }
31