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

📄 multi.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "sam.h"List	file = { 'p' };ushort	tag;File *newfile(void){	File *f;	f = fileopen();	inslist(&file, 0, f);	f->tag = tag++;	if(downloaded)		outTs(Hnewname, f->tag);	/* already sorted; file name is "" */	return f;}intwhichmenu(File *f){	int i;	for(i=0; i<file.nused; i++)		if(file.filepptr[i]==f)			return i;	return -1;}voiddelfile(File *f){	int w = whichmenu(f);	if(w < 0)	/* e.g. x/./D */		return;	if(downloaded)		outTs(Hdelname, f->tag);	dellist(&file, w);	fileclose(f);}voidfullname(String *name){	if(name->n > 0 && name->s[0]!='/' && name->s[0]!=0)		Strinsert(name, &curwd, (Posn)0);}voidfixname(String *name){	String *t;	char *s;	fullname(name);	s = Strtoc(name);	if(strlen(s) > 0)		s = cleanname(s);	t = tmpcstr(s);	Strduplstr(name, t);	free(s);	freetmpstr(t);	if(Strispre(&curwd, name))		Strdelete(name, 0, curwd.n);}voidsortname(File *f){	int i, cmp, w;	int dupwarned;	w = whichmenu(f);	dupwarned = FALSE;	dellist(&file, w);	if(f == cmd)		i = 0;	else{		for(i=0; i<file.nused; i++){			cmp = Strcmp(&f->name, &file.filepptr[i]->name);			if(cmp==0 && !dupwarned){				dupwarned = TRUE;				warn_S(Wdupname, &f->name);			}else if(cmp<0 && (i>0 || cmd==0))				break;		}	}	inslist(&file, i, f);	if(downloaded)		outTsS(Hmovname, f->tag, &f->name);}voidstate(File *f, int cleandirty){	if(f == cmd)		return;	f->unread = FALSE;	if(downloaded && whichmenu(f)>=0){	/* else flist or menu */		if(f->mod && cleandirty!=Dirty)			outTs(Hclean, f->tag);		else if(!f->mod && cleandirty==Dirty)			outTs(Hdirty, f->tag);	}	if(cleandirty == Clean)		f->mod = FALSE;	else		f->mod = TRUE;}File *lookfile(String *s){	int i;	for(i=0; i<file.nused; i++)		if(Strcmp(&file.filepptr[i]->name, s) == 0)			return file.filepptr[i];	return 0;}

⌨️ 快捷键说明

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