touch.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 66 行
C
66 行
#include <u.h>#include <libc.h>int touch(int, char *);ulong now;voidusage(void){ fprint(2, "usage: touch [-c] [-t time] files\n"); exits("usage");}voidmain(int argc, char **argv){ char *t, *s; int nocreate = 0; int status = 0; now = time(0); ARGBEGIN{ case 't': t = EARGF(usage()); now = strtoul(t, &s, 0); if(s == t || *s != '\0') usage(); break; case 'c': nocreate = 1; break; default: usage(); }ARGEND if(!*argv) usage(); while(*argv) status += touch(nocreate, *argv++); if(status) exits("touch"); exits(0);}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|OEXCL, 0666)) < 0){ fprint(2, "touch: %s: cannot create: %r\n", name); return 1; } dirfwstat(fd, &stbuff); close(fd); return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?