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

📄 rm.c

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 C
字号:
main(argc, argv)char *argv[];{	char *arg;	int fflg, rflg;	fflg = 0;	rflg = 0;	while(--argc > 0) {		arg = *++argv;		if(arg[0] == '-') {			if(arg[1] == 'f') {				fflg++;				continue;			}			if(arg[1] == 'r') {				rflg++;				continue;			}		}		rm(arg, fflg, rflg);	}}struct stbuf	{	int dev;	int inum;	int mode;	char nlink;	char uid;	char gid;	char siz0;	char siz1;	int addr[8];	int adate[2];	int mdate[2];	};rm(arg, fflg, rflg)char arg[];{	char *p;	int buf[20];	int i, b;	if(stat(arg, buf)) {		printf("%s: non existent\n", arg);		return;	}	if((buf->mode & 060000) == 040000)	{		if(rflg) {			i = fork();			if(i == -1) {				printf("%s: try again\n", arg);				return;			}			if(i) {				while(wait() != i);				return;			}			if(chdir(arg)) {				printf("%s: cannot chdir\n", arg);				exit();			}			p = 0;			execl("/etc/glob", "glob", "rm", "-r",				fflg? "-f": "*", fflg? "*": p, 0);			printf("%s: no glob\n", arg);			exit();		}		printf("%s: directory\n", arg);		return;	}	if(!fflg) {		if((getuid()&0377) == buf->uid)			b = 0200; else			b = 2;		if((buf->mode & b) == 0 && ttyn(0) != 'x') {			printf("%s: %o mode ", arg, buf->mode);			i = b = getchar();			i = b;			while(b != '\n' && b != '\0')				b = getchar();			if(i != 'y')				return;		}	}	if(unlink(arg))		printf("%s: not removed\n", arg);}putchar(c){	write(1, &c, 1);}getchar(){	char c;	if(read(0, &c, 1) != 1) return(0);	return(c);}

⌨️ 快捷键说明

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