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

📄 delete.c

📁 此版本是在网上广为流传的 二级文件系统 基础上制作的.重新编写了块操作等模块,修正了N多BUG. 实现的命令有 ls-列目录 md-创建目录 cd-进入子目录 mf-创建文件 cat-显示文件内
💻 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 + -