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

📄 openfilemanager.cpp

📁 模拟Linux文件系统 在任一OS下
💻 CPP
字号:
#include"disk.h"
extern disk DISK;
openfilemanager::openfilemanager(){
	ofdt.openfiledescriptortable_ini();
	ilm.inodelist_memory_ini();
}
int openfilemanager::searchinodenumbycurrentpath(currentpath*pcp)//根据当前路径查找inode号
{
	inodelist_disk ild(DISK.iof);
	inode itemp;
	ild.inodelist_disk_read(0,&itemp);//根据inode号读inode
	int ii=0;
	char filename[filenamelength];
	folder ftemp(DISK.iof,itemp);
	folderitem fitemp;
	for(int x=2;x<=pcp->level;x++){
		pcp->getname(filename,x);
		ii=ftemp.folder_findbyname(filename);//根据文件名查找项号
		if(ii==-1)return -1;
		ftemp.folder_read(ii,&fitemp);
		ild.inodelist_disk_read(fitemp.inodenum,&itemp);
		ftemp.folder_open(DISK.iof,itemp);
	}
	if(x==2)return ii;
    return fitemp.inodenum;
}
//	ilm.inodelist_memory_searchbyinodenum(ii);
//	openfileitem*pofi=createopenfileitem(){
openfileitem*openfilemanager::createopenfileitem(currentpath*pcp)//获取openfileitem句柄,即服务句柄,可以加上权限检测
{
	int inodenum=searchinodenumbycurrentpath(pcp);
	if(inodenum==-1)return NULL;
	inode*itemp=ilm.inodelist_memory_searchbyinodenum(inodenum);
	openfileitem*po=ofdt.createopenfile(itemp);
	return po;
}
void openfilemanager::deleteitem(openfileitem*pof){
	inode* itemp=ofdt.deleteitem(pof);
	ilm.deleteitem(itemp);
	pof=NULL;
}



⌨️ 快捷键说明

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