📄 rm.c
字号:
#include <stdio.h>
#include "filesys.h"
int rmf(char* name)
{
unsigned short nid,did;
struct inode *pinode,*pinode2;
int i;
nid=map2inode(name);
did=dirname2id(name);
//printf("%d ",nid);
if(nid==MAPERR)
return 0;
pinode=(struct inode*)posinode(nid);
pinode2=readdir2(currentuser);
if(directory_2.direct[did].filetype==DIDIR)
return 2;
if(access(currentuser,pinode,WRITE))
{
--(pinode->n_refer);
if((pinode->n_refer)==0)
{
for(i=0;i<(pinode->di_size);i++)
{
bfree(pinode->di_addr[i]);
}
ifree(nid);
}
else
{
updateinodetable(pinode);
}
strcpy(directory_2.direct[did].name,"");
directory_2.direct[did].filetype=DIEMPTY;
directory_2.direct[did].d_ino=0;
directory_2.size--;
dir2todisk(&directory_2,pinode2);
return 1;
}
return 2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -