rm.c
来自「操作系统简单的登入程序」· C语言 代码 · 共 64 行
C
64 行
#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 + =
减小字号Ctrl + -
显示快捷键?