亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mkfs.c

?? unix v7是最后一個廣泛發布的研究型UNIX版本
?? C
字號:
/* * Make a file system prototype. * usage: mkfs filsys proto/size [ m n ] */#define	NIPB	(BSIZE/sizeof(struct dinode))#define	NINDIR	(BSIZE/sizeof(daddr_t))#define	NDIRECT	(BSIZE/sizeof(struct direct))#define	LADDR	10#define	MAXFN	500#define	itoo(x)	(int)((x+15)&07)#ifndef STANDALONE#include <stdio.h>#include <a.out.h>#endif#include <sys/param.h>#include <sys/ino.h>#include <sys/inode.h>#include <sys/filsys.h>#include <sys/fblk.h>#include <sys/dir.h>time_t	utime;#ifndef STANDALONEFILE 	*fin;#elseint	fin;#endifint	fsi;int	fso;char	*charp;char	buf[BSIZE];union {	struct fblk fb;	char pad1[BSIZE];} fbuf;#ifndef STANDALONEstruct exec head;#endifchar	string[50];union {	struct filsys fs;	char pad2[BSIZE];} filsys;char	*fsys;char	*proto;int	f_n	= MAXFN;int	f_m	= 3;int	error;ino_t	ino;long	getnum();daddr_t	alloc();main(argc, argv)char *argv[];{	int f, c;	long n;#ifndef STANDALONE	time(&utime);	if(argc < 3) {		printf("usage: mkfs filsys proto/size [ m n ]\n");		exit(1);	}	fsys = argv[1];	proto = argv[2];#else	{		static char protos[60];		printf("file sys size: ");		gets(protos);		proto = protos;	}#endif#ifdef STANDALONE	{		char fsbuf[100];		do {			printf("file system: ");			gets(fsbuf);			fso = open(fsbuf, 1);			fsi = open(fsbuf, 0);		} while (fso < 0 || fsi < 0);	}	fin = NULL;	argc = 0;#else	fso = creat(fsys, 0666);	if(fso < 0) {		printf("%s: cannot create\n", fsys);		exit(1);	}	fsi = open(fsys, 0);	if(fsi < 0) {		printf("%s: cannot open\n", fsys);		exit(1);	}	fin = fopen(proto, "r");#endif	if(fin == NULL) {		n = 0;		for(f=0; c=proto[f]; f++) {			if(c<'0' || c>'9') {				printf("%s: cannot open\n", proto);				exit(1);			}			n = n*10 + (c-'0');		}		filsys.s_fsize = n;		n = n/25;		if(n <= 0)			n = 1;		if(n > 65500/NIPB)			n = 65500/NIPB;		filsys.s_isize = n + 2;		printf("isize = %D\n", n*NIPB);		charp = "d--777 0 0 $ ";		goto f3;	}#ifndef STANDALONE	/*	 * get name of boot load program	 * and read onto block 0	 */	getstr();	f = open(string, 0);	if(f < 0) {		printf("%s: cannot  open init\n", string);		goto f2;	}	read(f, (char *)&head, sizeof head);	if(head.a_magic != A_MAGIC1) {		printf("%s: bad format\n", string);		goto f1;	}	c = head.a_text + head.a_data;	if(c > BSIZE) {		printf("%s: too big\n", string);		goto f1;	}	read(f, buf, c);	wtfs((long)0, buf);f1:	close(f);	/*	 * get total disk size	 * and inode block size	 */f2:	filsys.s_fsize = getnum();	n = getnum();	n /= NIPB;	filsys.s_isize = n + 3;#endiff3:	if(argc >= 5) {		f_m = atoi(argv[3]);		f_n = atoi(argv[4]);		if(f_n <= 0 || f_n >= MAXFN)			f_n = MAXFN;		if(f_m <= 0 || f_m > f_n)			f_m = 3;	}	filsys.s_m = f_m;	filsys.s_n = f_n;	printf("m/n = %d %d\n", f_m, f_n);	if(filsys.s_isize >= filsys.s_fsize) {		printf("%ld/%ld: bad ratio\n", filsys.s_fsize, filsys.s_isize-2);		exit(1);	}	filsys.s_tfree = 0;	filsys.s_tinode = 0;	for(c=0; c<BSIZE; c++)		buf[c] = 0;	for(n=2; n!=filsys.s_isize; n++) {		wtfs(n, buf);		filsys.s_tinode += NIPB;	}	ino = 0;	bflist();	cfile((struct inode *)0);	filsys.s_time = utime;	wtfs((long)1, (char *)&filsys);	exit(error);}cfile(par)struct inode *par;{	struct inode in;	int dbc, ibc;	char db[BSIZE];	daddr_t ib[NINDIR];	int i, f, c;	/*	 * get mode, uid and gid	 */	getstr();	in.i_mode = gmode(string[0], "-bcd", IFREG, IFBLK, IFCHR, IFDIR);	in.i_mode |= gmode(string[1], "-u", 0, ISUID, 0, 0);	in.i_mode |= gmode(string[2], "-g", 0, ISGID, 0, 0);	for(i=3; i<6; i++) {		c = string[i];		if(c<'0' || c>'7') {			printf("%c/%s: bad octal mode digit\n", c, string);			error = 1;			c = 0;		}		in.i_mode |= (c-'0')<<(15-3*i);	}	in.i_uid = getnum();	in.i_gid = getnum();	/*	 * general initialization prior to	 * switching on format	 */	ino++;	in.i_number = ino;	for(i=0; i<BSIZE; i++)		db[i] = 0;	for(i=0; i<NINDIR; i++)		ib[i] = (daddr_t)0;	in.i_nlink = 1;	in.i_size = 0;	for(i=0; i<NADDR; i++)		in.i_un.i_addr[i] = (daddr_t)0;	if(par == (struct inode *)0) {		par = &in;		in.i_nlink--;	}	dbc = 0;	ibc = 0;	switch(in.i_mode&IFMT) {	case IFREG:		/*		 * regular file		 * contents is a file name		 */		getstr();		f = open(string, 0);		if(f < 0) {			printf("%s: cannot open\n", string);			error = 1;			break;		}		while((i=read(f, db, BSIZE)) > 0) {			in.i_size += i;			newblk(&dbc, db, &ibc, ib);		}		close(f);		break;	case IFBLK:	case IFCHR:		/*		 * special file		 * content is maj/min types		 */		i = getnum() & 0377;		f = getnum() & 0377;		in.i_un.i_addr[0] = (i<<8) | f;		break;	case IFDIR:		/*		 * directory		 * put in extra links		 * call recursively until		 * name of "$" found		 */		par->i_nlink++;		in.i_nlink++;		entry(in.i_number, ".", &dbc, db, &ibc, ib);		entry(par->i_number, "..", &dbc, db, &ibc, ib);		in.i_size = 2*sizeof(struct direct);		for(;;) {			getstr();			if(string[0]=='$' && string[1]=='\0')				break;			entry(ino+1, string, &dbc, db, &ibc, ib);			in.i_size += sizeof(struct direct);			cfile(&in);		}		break;	}	if(dbc != 0)		newblk(&dbc, db, &ibc, ib);	iput(&in, &ibc, ib);}gmode(c, s, m0, m1, m2, m3)char c, *s;{	int i;	for(i=0; s[i]; i++)		if(c == s[i])			return((&m0)[i]);	printf("%c/%s: bad mode\n", c, string);	error = 1;	return(0);}longgetnum(){	int i, c;	long n;	getstr();	n = 0;	i = 0;	for(i=0; c=string[i]; i++) {		if(c<'0' || c>'9') {			printf("%s: bad number\n", string);			error = 1;			return((long)0);		}		n = n*10 + (c-'0');	}	return(n);}getstr(){	int i, c;loop:	switch(c=getch()) {	case ' ':	case '\t':	case '\n':		goto loop;	case '\0':		printf("EOF\n");		exit(1);	case ':':		while(getch() != '\n');		goto loop;	}	i = 0;	do {		string[i++] = c;		c = getch();	} while(c!=' '&&c!='\t'&&c!='\n'&&c!='\0');	string[i] = '\0';}rdfs(bno, bf)daddr_t bno;char *bf;{	int n;	lseek(fsi, bno*BSIZE, 0);	n = read(fsi, bf, BSIZE);	if(n != BSIZE) {		printf("read error: %ld\n", bno);		exit(1);	}}wtfs(bno, bf)daddr_t bno;char *bf;{	int n;	lseek(fso, bno*BSIZE, 0);	n = write(fso, bf, BSIZE);	if(n != BSIZE) {		printf("write error: %D\n", bno);		exit(1);	}}daddr_talloc(){	int i;	daddr_t bno;	filsys.s_tfree--;	bno = filsys.s_free[--filsys.s_nfree];	if(bno == 0) {		printf("out of free space\n");		exit(1);	}	if(filsys.s_nfree <= 0) {		rdfs(bno, (char *)&fbuf);		filsys.s_nfree = fbuf.df_nfree;		for(i=0; i<NICFREE; i++)			filsys.s_free[i] = fbuf.df_free[i];	}	return(bno);}bfree(bno)daddr_t bno;{	int i;	filsys.s_tfree++;	if(filsys.s_nfree >= NICFREE) {		fbuf.df_nfree = filsys.s_nfree;		for(i=0; i<NICFREE; i++)			fbuf.df_free[i] = filsys.s_free[i];		wtfs(bno, (char *)&fbuf);		filsys.s_nfree = 0;	}	filsys.s_free[filsys.s_nfree++] = bno;}entry(inum, str, adbc, db, aibc, ib)ino_t inum;char *str;int *adbc, *aibc;char *db;daddr_t *ib;{	struct direct *dp;	int i;	dp = (struct direct *)db;	dp += *adbc;	(*adbc)++;	dp->d_ino = inum;	for(i=0; i<DIRSIZ; i++)		dp->d_name[i] = 0;	for(i=0; i<DIRSIZ; i++)		if((dp->d_name[i] = str[i]) == 0)			break;	if(*adbc >= NDIRECT)		newblk(adbc, db, aibc, ib);}newblk(adbc, db, aibc, ib)int *adbc, *aibc;char *db;daddr_t *ib;{	int i;	daddr_t bno;	bno = alloc();	wtfs(bno, db);	for(i=0; i<BSIZE; i++)		db[i] = 0;	*adbc = 0;	ib[*aibc] = bno;	(*aibc)++;	if(*aibc >= NINDIR) {		printf("indirect block full\n");		error = 1;		*aibc = 0;	}}getch(){#ifndef STANDALONE	if(charp)#endif		return(*charp++);#ifndef STANDALONE	return(getc(fin));#endif}bflist(){	struct inode in;	daddr_t ib[NINDIR];	int ibc;	char flg[MAXFN];	int adr[MAXFN];	int i, j;	daddr_t f, d;	for(i=0; i<f_n; i++)		flg[i] = 0;	i = 0;	for(j=0; j<f_n; j++) {		while(flg[i])			i = (i+1)%f_n;		adr[j] = i+1;		flg[i]++;		i = (i+f_m)%f_n;	}	ino++;	in.i_number = ino;	in.i_mode = IFREG;	in.i_uid = 0;	in.i_gid = 0;	in.i_nlink = 0;	in.i_size = 0;	for(i=0; i<NADDR; i++)		in.i_un.i_addr[i] = (daddr_t)0;	for(i=0; i<NINDIR; i++)		ib[i] = (daddr_t)0;	ibc = 0;	bfree((daddr_t)0);	d = filsys.s_fsize-1;	while(d%f_n)		d++;	for(; d > 0; d -= f_n)	for(i=0; i<f_n; i++) {		f = d - adr[i];		if(f < filsys.s_fsize && f >= filsys.s_isize)			if(badblk(f)) {				if(ibc >= NINDIR) {					printf("too many bad blocks\n");					error = 1;					ibc = 0;				}				ib[ibc] = f;				ibc++;			} else				bfree(f);	}	iput(&in, &ibc, ib);}iput(ip, aibc, ib)struct inode *ip;int *aibc;daddr_t *ib;{	struct dinode *dp;	daddr_t d;	int i;	filsys.s_tinode--;	d = itod(ip->i_number);	if(d >= filsys.s_isize) {		if(error == 0)			printf("ilist too small\n");		error = 1;		return;	}	rdfs(d, buf);	dp = (struct dinode *)buf;	dp += itoo(ip->i_number);	dp->di_mode = ip->i_mode;	dp->di_nlink = ip->i_nlink;	dp->di_uid = ip->i_uid;	dp->di_gid = ip->i_gid;	dp->di_size = ip->i_size;	dp->di_atime = utime;	dp->di_mtime = utime;	dp->di_ctime = utime;	switch(ip->i_mode&IFMT) {	case IFDIR:	case IFREG:		for(i=0; i<*aibc; i++) {			if(i >= LADDR)				break;			ip->i_un.i_addr[i] = ib[i];		}		if(*aibc >= LADDR) {			ip->i_un.i_addr[LADDR] = alloc();			for(i=0; i<NINDIR-LADDR; i++) {				ib[i] = ib[i+LADDR];				ib[i+LADDR] = (daddr_t)0;			}			wtfs(ip->i_un.i_addr[LADDR], (char *)ib);		}	case IFBLK:	case IFCHR:		ltol3(dp->di_addr, ip->i_un.i_addr, NADDR);		break;	default:		printf("bad mode %o\n", ip->i_mode);		exit(1);	}	wtfs(d, buf);}badblk(bno)daddr_t bno;{	return(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99综合影院在线| 精品乱码亚洲一区二区不卡| 日韩一区二区三区电影在线观看| 久久综合色天天久久综合图片| 亚洲免费在线视频一区 二区| 日韩成人av影视| gogogo免费视频观看亚洲一| 欧美不卡视频一区| 亚洲成a人片综合在线| 99re66热这里只有精品3直播| 日韩免费高清电影| 亚洲成人黄色小说| 色综合久久88色综合天天免费| www亚洲一区| 久久精品噜噜噜成人88aⅴ| 色老头久久综合| 国产精品国产三级国产aⅴ中文| 精品无人区卡一卡二卡三乱码免费卡 | 欧美精品一区在线观看| 亚洲成人久久影院| 欧美性受xxxx黑人xyx性爽| 久久精品一区八戒影视| 国内精品久久久久影院色 | 国产欧美一区二区精品仙草咪| 日韩影院在线观看| 欧美日韩精品欧美日韩精品一| 伊人性伊人情综合网| 欧美日韩免费一区二区三区视频| 国产精品久久久久久妇女6080| 国产福利91精品| 国产精品午夜在线观看| 成人三级伦理片| 中文欧美字幕免费| www.亚洲在线| 亚洲另类在线视频| 欧美性猛交xxxxxxxx| 亚洲成年人网站在线观看| 欧美男男青年gay1069videost| 日韩成人免费电影| 欧美成人精品二区三区99精品| 久久精品国产精品亚洲红杏| 精品国产一区二区三区四区四| 久久不见久久见免费视频7| 久久久美女毛片| 99视频热这里只有精品免费| 亚洲男帅同性gay1069| 欧美日韩激情在线| 黄色资源网久久资源365| 国产亚洲精久久久久久| 91亚洲精品一区二区乱码| 亚洲精品第1页| 欧美一区二区三区的| 国产成人高清在线| 亚洲一区二区三区影院| 欧美一区二区三区四区在线观看| 国产原创一区二区三区| 中文字幕日本乱码精品影院| 欧美日韩免费一区二区三区视频 | 亚洲黄色录像片| 7777精品伊人久久久大香线蕉最新版 | 亚洲一区在线观看免费| 制服丝袜亚洲色图| 成人一区二区三区| 亚洲va中文字幕| 久久精品无码一区二区三区| 日本精品一区二区三区四区的功能| 天天操天天干天天综合网| 久久久99久久| 欧美剧情片在线观看| 成人午夜碰碰视频| 日韩1区2区日韩1区2区| 亚洲人成伊人成综合网小说| 欧美一区二区三区日韩| 97se亚洲国产综合在线| 精品一区二区免费看| 亚洲精品美腿丝袜| 国产亚洲精品bt天堂精选| 欧美日韩日日骚| 成人黄色免费短视频| 极品销魂美女一区二区三区| 一区二区三区视频在线观看| 国产女同性恋一区二区| 欧美一级爆毛片| 欧美亚洲高清一区| 91视频com| 国产成人精品免费网站| 久久精品久久综合| 亚洲国产日韩一区二区| 亚洲视频每日更新| 欧美激情一区二区三区四区 | 欧美日韩在线播| 成人免费不卡视频| 精品一区二区久久久| 日韩成人免费在线| 午夜视频在线观看一区二区| 最好看的中文字幕久久| 国产午夜精品福利| 26uuu另类欧美亚洲曰本| 日韩视频国产视频| 7777精品伊人久久久大香线蕉超级流畅| 成人激情小说网站| 国产麻豆精品在线观看| 极品尤物av久久免费看| 精品一区二区精品| 国产一区二区精品久久| 国产在线不卡一卡二卡三卡四卡| 麻豆国产精品视频| 蜜桃视频一区二区三区 | 成人午夜电影网站| 国产一区激情在线| 狠狠狠色丁香婷婷综合久久五月| 蜜桃视频一区二区三区| 伦理电影国产精品| 精品一区中文字幕| 国产老妇另类xxxxx| 国产精品1区二区.| 成人app软件下载大全免费| 国产剧情一区在线| yourporn久久国产精品| 日本道色综合久久| 欧美精品在线观看播放| 欧美一级高清大全免费观看| 精品久久久久99| 国产三级一区二区| 成人免费在线播放视频| 亚洲精品欧美激情| 日韩不卡一二三区| 黄色精品一二区| 97久久精品人人做人人爽50路| 欧美性猛交xxxx黑人交| 欧美一区二区福利视频| 国产欧美综合在线| 亚洲婷婷在线视频| 日韩国产欧美在线播放| 久草在线在线精品观看| 成人黄动漫网站免费app| 色综合久久久久久久久久久| 91精品国产综合久久婷婷香蕉| 精品精品国产高清a毛片牛牛 | 精品国产精品一区二区夜夜嗨| 欧美精品一区二区三区在线| 亚洲欧美在线aaa| 日韩黄色片在线观看| 国产99精品在线观看| 欧美日韩激情一区二区| 久久久精品tv| 性做久久久久久免费观看欧美| 国产一区二区三区视频在线播放| 99久久精品国产麻豆演员表| 欧美日韩高清不卡| 国产亚洲一区二区三区四区| 亚洲永久精品大片| 国产一本一道久久香蕉| 色噜噜狠狠成人网p站| 日韩美女一区二区三区| 亚洲蜜臀av乱码久久精品| 狠狠色狠狠色合久久伊人| 色婷婷久久久综合中文字幕| 精品久久久久久无| 亚洲妇熟xx妇色黄| 丁香啪啪综合成人亚洲小说| 日韩一区二区电影| 亚洲国产一区二区a毛片| 国产成人综合在线播放| 欧美一级在线视频| 亚洲一区二区欧美日韩| 成人精品国产免费网站| 日韩欧美高清一区| 亚洲精品国久久99热| 国产aⅴ综合色| 日韩精品一区二区在线| 亚洲v日本v欧美v久久精品| 99精品欧美一区二区蜜桃免费| 日韩免费电影网站| 视频一区二区国产| 91福利在线导航| 亚洲欧美一区二区不卡| 成人高清视频免费观看| 精品成人私密视频| 另类综合日韩欧美亚洲| 欧美日韩一区二区三区不卡| 亚洲免费观看高清完整| 91视频.com| 亚洲视频资源在线| av在线这里只有精品| 国产精品丝袜黑色高跟| 国产91精品久久久久久久网曝门 | 欧美人xxxx| 亚洲国产日产av| 欧洲在线/亚洲| 亚洲美女一区二区三区| 一本一道综合狠狠老| 综合网在线视频| 99视频一区二区| 亚洲精品国产无天堂网2021| 色综合久久六月婷婷中文字幕| 亚洲精品伦理在线| 在线观看国产精品网站| 亚洲制服丝袜av| 欧美日韩1234|