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

📄 main.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "u.h"#include "lib.h"#include "kern/dat.h"#include "kern/fns.h"#include "user.h"#include "drawterm.h"char *argv0;char *user;extern int errfmt(Fmt*);voidsizebug(void){	/*	 * Needed by various parts of the code.	 * This is a huge bug.	 */	assert(sizeof(char)==1);	assert(sizeof(short)==2);	assert(sizeof(ushort)==2);	assert(sizeof(int)==4);	assert(sizeof(uint)==4);	assert(sizeof(long)==4);	assert(sizeof(ulong)==4);	assert(sizeof(vlong)==8);	assert(sizeof(uvlong)==8);}intmain(int argc, char **argv){	eve = getuser();	if(eve == nil)		eve = "drawterm";	sizebug();	osinit();	procinit0();	printinit();	screeninit();	chandevreset();	chandevinit();	quotefmtinstall();	if(bind("#c", "/dev", MBEFORE) < 0)		panic("bind #c: %r");	if(bind("#m", "/dev", MBEFORE) < 0)		panic("bind #m: %r");	if(bind("#i", "/dev", MBEFORE) < 0)		panic("bind #i: %r");	if(bind("#I", "/net", MBEFORE) < 0)		panic("bind #I: %r");	if(bind("#U", "/", MAFTER) < 0)		panic("bind #U: %r");	bind("#A", "/dev", MAFTER);	if(open("/dev/cons", OREAD) != 0)		panic("open0: %r");	if(open("/dev/cons", OWRITE) != 1)		panic("open1: %r");	if(open("/dev/cons", OWRITE) != 2)		panic("open2: %r");	cpumain(argc, argv);	return 0;}char*getkey(char *user, char *dom){	char buf[1024];	snprint(buf, sizeof buf, "%s@%s password", user, dom);	return readcons(buf, nil, 1);}char*findkey(char **puser, char *dom){	char buf[1024], *f[50], *p, *ep, *nextp, *pass, *user;	int nf, haveproto,  havedom, i;	for(p=secstorebuf; *p; p=nextp){		nextp = strchr(p, '\n');		if(nextp == nil){			ep = p+strlen(p);			nextp = "";		}else{			ep = nextp++;		}		if(ep-p >= sizeof buf){			print("warning: skipping long line in secstore factotum file\n");			continue;		}		memmove(buf, p, ep-p);		buf[ep-p] = 0;		nf = tokenize(buf, f, nelem(f));		if(nf == 0 || strcmp(f[0], "key") != 0)			continue;		pass = nil;		haveproto = havedom = 0;		user = nil;		for(i=1; i<nf; i++){			if(strncmp(f[i], "user=", 5) == 0)				user = f[i]+5;			if(strncmp(f[i], "!password=", 10) == 0)				pass = f[i]+10;			if(strncmp(f[i], "dom=", 4) == 0 && strcmp(f[i]+4, dom) == 0)				havedom = 1;			if(strcmp(f[i], "proto=p9sk1") == 0)				haveproto = 1;		}		if(!haveproto || !havedom || !pass || !user)			continue;		*puser = strdup(user);		pass = strdup(pass);		memset(buf, 0, sizeof buf);		return pass;	}	return nil;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -