addhash.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 67 行
C
67 行
#include <u.h>#include <libc.h>#include <bio.h>#include <regexp.h>#include "hash.h"Hash hash;voidusage(void){ fprint(2, "addhash [-o out] file scale [file scale]...\n"); exits("usage");}voidmain(int argc, char **argv){ int i, fd, n; char err[ERRMAX], *out; Biobuf *b, bout; out = nil; ARGBEGIN{ case 'o': out = EARGF(usage()); break; default: usage(); }ARGEND; if(argc==0 || argc%2) usage(); while(argc > 0){ if((b = Bopenlock(argv[0], OREAD)) == nil) sysfatal("open %s: %r", argv[0]); n = atoi(argv[1]); if(n == 0) sysfatal("0 scale given"); Breadhash(b, &hash, n); Bterm(b); argv += 2; argc -= 2; } fd = 1; if(out){ for(i=0; i<120; i++){ if((fd = create(out, OWRITE, 0666|DMEXCL)) >= 0) break; rerrstr(err, sizeof err); if(strstr(err, "file is locked")==nil && strstr(err, "exclusive lock")==nil) break; sleep(1000); } if(fd < 0) sysfatal("could not open %s: %r\n", out); } Binit(&bout, fd, OWRITE); Bwritehash(&bout, &hash); Bterm(&bout); exits(0);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?