#include <u.h>
#include <libc.h>

int touch(int, char *);
ulong now;
int tflag;

void
usage(void)
{
	fprint(2, "usage: touch [-c] [-t time] files\n");
	exits("usage");
}

void
main(int argc, char **argv)
{
	int nocreate = 0;
	int status = 0;

	now = time(0);
	ARGBEGIN{
	case 't':
		tflag = 1;
		now = strtoul(EARGF(usage()), 0, 0);
		break;
	case 'c':
		nocreate = 1;
		break;
	default:	
		usage();
	}ARGEND

	if(!*argv)
		usage();
	while(*argv)
		status += touch(nocreate, *argv++);
	if(status)
		exits("touch");
	exits(0);
}

int
touch(int nocreate, char *name)
{
	Dir stbuff;
	int fd;

	nulldir(&stbuff);
	stbuff.mtime = now;
	if(dirwstat(name, &stbuff) >= 0)
		return 0;
	if(nocreate){
		fprint(2, "touch: %s: cannot wstat: %r\n", name);
		return 1;
	}
	if((fd = create(name, OREAD, 0666)) < 0) {
		fprint(2, "touch: %s: cannot create: %r\n", name);
		return 1;
	}
	if(tflag && dirfwstat(fd, &stbuff) < 0){
		fprint(2, "touch: %s: cannot wstat: %r\n", name);
		close(fd);
		return 1;
	}
	close(fd);
	return 0;
}
