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

📄 df.c

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 C
字号:
#include <stdio.h>#include <sys/param.h>#include <sys/filsys.h>#include <sys/fblk.h>daddr_t	blkno	= 1;char	*dargv[] = {	0,	"/dev/rp0",	"/dev/rp3",	0};struct	filsys sblock;int	fi;daddr_t	alloc();main(argc, argv)char **argv;{	int i;	if(argc <= 1) {		for(argc = 1; dargv[argc]; argc++);		argv = dargv;	}	for(i=1; i<argc; i++) {		dfree(argv[i]);	}}dfree(file)char *file;{	daddr_t i;	fi = open(file, 0);	if(fi < 0) {		fprintf(stderr,"cannot open %s\n", file);		return;	}	sync();	bread(1L, (char *)&sblock, sizeof(sblock));	i = 0;	while(alloc())		i++;	printf("%s %D\n", file, i);	close(fi);}daddr_talloc(){	int i;	daddr_t b;	struct fblk buf;	i = --sblock.s_nfree;	if(i<0 || i>=NICFREE) {		printf("bad free count, b=%D\n", blkno);		return(0);	}	b = sblock.s_free[i];	if(b == 0)		return(0);	if(b<sblock.s_isize || b>=sblock.s_fsize) {		printf("bad free block (%D)\n", b);		return(0);	}	if(sblock.s_nfree <= 0) {		bread(b, (char *)&buf, sizeof(buf));		blkno = b;		sblock.s_nfree = buf.df_nfree;		for(i=0; i<NICFREE; i++)			sblock.s_free[i] = buf.df_free[i];	}	return(b);}bread(bno, buf, cnt)daddr_t bno;char *buf;{	int n;	extern errno;	lseek(fi, bno<<BSHIFT, 0);	if((n=read(fi, buf, cnt)) != cnt) {		printf("read error %D\n", bno);		printf("count = %d; errno = %d\n", n, errno);		exit(0);	}}

⌨️ 快捷键说明

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