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

📄 setup.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#/* * *	UNIX debugger * */#include "defs.h"MSG		BADNAM;MSG		BADMAG;MAP		txtmap;MAP		datmap;SYMSLAVE	*symvec;INT		wtflag;INT		fcor;INT		fsym;L_INT		maxfile;L_INT		maxstor;L_INT		txtsiz;L_INT		datsiz;L_INT		datbas;L_INT		stksiz;STRING		errflg;INT		magic;L_INT		symbas;L_INT		symnum;L_INT		entrypt;INT		argcount;INT		signo;POS		corhdr[512];POS		*endhdr &corhdr[512];STRING		symfil	"a.out";STRING		corfil	"core";#define TXTHDRSIZ	(sizeof(txthdr))setsym(){	INT		relflg;	INT		symval, symflg;	SYMSLAVE	*symptr;	SYMPTR		symp;	TXTHDR		txthdr;	fsym=getfile(symfil,1);	txtmap.ufd=fsym;	IF read(fsym, txthdr, TXTHDRSIZ)==TXTHDRSIZ	THEN	magic=txthdr[0];		IF magic!=0411 ANDF magic!=0410 ANDF magic!=0407 ANDF magic!=0405		THEN	magic=0;		ELSE	symnum=txthdr[4]/SYMTABSIZ;			txtsiz=txthdr[1];			datsiz=txthdr[2];			symbas=txtsiz+datsiz;			txtmap.b1=0;			txtmap.e1=(magic==0407?symbas:txtsiz);			txtmap.f1 = TXTHDRSIZ;			txtmap.b2=datbas=(magic==0410?round(txtsiz,TXTRNDSIZ):0);			txtmap.e2=txtmap.b2+(magic==0407?symbas:datsiz);			txtmap.f2 = TXTHDRSIZ+(magic==0407?0:txtmap.e1);			entrypt=txthdr[5];			relflg=txthdr[7];			IF relflg!=1 THEN symbas =<< 1; FI			symbas += TXTHDRSIZ;			/* set up symvec */			symvec=sbrk(shorten((1+symnum))*sizeof (SYMSLAVE));			IF (symptr=symvec)==-1			THEN	printf("%s\n",BADNAM);				symptr=symvec=sbrk(sizeof (SYMSLAVE));			ELSE	symset();				WHILE (symp=symget()) ANDF errflg==0				DO  symval=symp->symv; symflg=symp->symf;				    symptr->valslave=symval;				    symptr->typslave=SYMTYPE(symflg);				    symptr++;				OD			FI			symptr->typslave=ESYM;		FI	FI	IF magic==0 THEN txtmap.e1=maxfile; FI}setcor(){	fcor=getfile(corfil,2);	datmap.ufd=fcor;	IF read(fcor, corhdr, ctob(USIZE))==ctob(USIZE)	THEN	txtsiz = corhdr->u_tsize << 6;		datsiz = corhdr->u_dsize << 6;		stksiz = corhdr->u_ssize << 6;		datmap.b1 = datbas = (magic==0410?round(txtsiz,TXTRNDSIZ):0);		datmap.e1=(magic==0407?txtsiz:datmap.b1)+datsiz;		datmap.f1 = ctob(USIZE);		datmap.b2 = maxstor-stksiz;		datmap.e2 = maxstor;		datmap.f2 = ctob(USIZE)+(magic==0410?datsiz:datmap.e1);		IF magic ANDF magic!=corhdr[0].u_exdata.ux_mag		THEN	printf("%s\n",BADMAG);		FI	ELSE	datmap.e1 = maxfile;	FI}create(f)STRING	f;{	int fd;	IF (fd=creat(f,0644))>=0	THEN close(fd); return(open(f,wtflag));	ELSE return(-1);	FI}getfile(filnam,cnt)STRING	filnam;{	REG INT		fsym;	IF !eqstr("-",filnam)	THEN	fsym=open(filnam,wtflag);		IF fsym<0 ANDF argcount>cnt		THEN	IF wtflag			THEN	fsym=create(filnam);			FI			IF fsym<0			THEN printf("cannot open `%s'\n", filnam);			FI		FI	ELSE	fsym = -1;	FI	return(fsym);}

⌨️ 快捷键说明

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