⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addhash.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -