📄 delete.c
字号:
#include <stdio.h>
#include "filesys.h"
delete(filename)
char *filename;
{
unsigned int dinodeid,i;
struct inode *inode;
dinodeid=namei(filename);
printf("\ndinodeid=%d,dir.size=%d\n",dinodeid,dir.size);
if(dinodeid!=NULL)
inode=iget(dinodeid);
else {
printf(">file not exist!\n");
return;
}
for(i=0;i<dir.size;i++)
if(dir.direct[i].d_ino==dinodeid) break;
printf("\ni=%d\n",i);
i++;
while(dir.direct[i].d_ino!=NULL)
{
strcpy(dir.direct[i-1].d_name,dir.direct[i].d_name);
dir.direct[i-1].d_ino=dir.direct[i].d_ino;
i++;
}
dir.direct[i-1].d_ino=0;
dir.size=i-1;
inode->di_number--;
printf("\ndi_number=%d\n",inode->di_number);
if ( inode->di_number <= 0 ) {
for ( i = 0; i < inode->di_size / BLOCKSIZ + (inode->di_size % BLOCKSIZ != 0); ++i) {
bfree(inode->di_addr[i]);
}
ifree(inode);
return;
}
iput(inode);
printf("\ndir.size=%d\n",dir.size);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -