亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fat_open.c

?? ucos在vc下的移植,并建立了文件系統
?? C
?? 第 1 頁 / 共 3 頁
字號:
#endif /* FS_FAT_NOFAT32==0 */

  buffer = FS__fat_malloc(FS_FAT_SEC_SIZE);
  if (!buffer) {
    return 0;
  }
  fattype = FS__fat_which_type(Idx, Unit);
#if (FS_FAT_NOFAT32!=0)
  if (fattype == 2) {
    FS__fat_free(buffer);
    return -1;
  }
#endif  /* FS_FAT_NOFAT32!=0 */
  fatsize = FS__FAT_aBPBUnit[Idx][Unit].FATSz16;
  if (fatsize == 0) {
    fatsize = FS__FAT_aBPBUnit[Idx][Unit].FATSz32;
  }
  bytespersec = (FS_i32)FS__FAT_aBPBUnit[Idx][Unit].BytesPerSec;
  len = FS__CLIB_strlen(pName);
  if (len > 11) {
    len = 11;
  }
  /* Read directory */
  for (i = 0; i < DirSize; i++) {
    curclst = -1;
    dsec = FS__fat_dir_realsec(Idx, Unit, DirStart, i);
    if (dsec == 0) {
      FS__fat_free(buffer);
      return -1;
    }
    err = FS__lb_read(FS__pDevInfo[Idx].devdriver, Unit, dsec, (void*)buffer);
    if (err < 0) {
      FS__fat_free(buffer);
      return -1;
    }
    /* Scan for pName in the directory sector */
    s = (FS__fat_dentry_type*) buffer;
    while (1) {
      if (s >= (FS__fat_dentry_type*)(buffer + bytespersec)) {
        break;  /* End of sector reached */
      }
      x = FS__CLIB_strncmp((char*)s->data, pName, len);
      if (x == 0) { /* Name does match */
        if (s->data[11] != 0) {
          break;  /* Entry found */
        }
      }
      s++;
    }
    if (s < (FS__fat_dentry_type*)(buffer + bytespersec)) {
      /* Entry has been found, delete directory entry */
      s->data[0]  = 0xe5;
      s->data[11] = 0;
      err = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, dsec, (void*)buffer);
      if (err < 0) {
        FS__fat_free(buffer);
        return -1;
      }
      /* Free blocks in FAT */
      /*
         For normal files, there are no more clusters freed than the entrie's filesize
         does indicate. That avoids corruption of the complete media in case there is
         no EOF mark found for the file (FAT is corrupt!!!). 
         If the function should remove a directory, filesize if always 0 and cannot
         be used for that purpose. To avoid running into endless loop, todo is set
         to 0x0ffffff8L, which is the maximum number of clusters for FAT32.
      */
      if (RmFile) {
        filesize  = s->data[28] + 0x100UL * s->data[29] + 0x10000UL * s->data[30] + 0x1000000UL * s->data[31];
        todo      = filesize / (FS__FAT_aBPBUnit[Idx][Unit].SecPerClus * bytespersec);
        value     = filesize % (FS__FAT_aBPBUnit[Idx][Unit].SecPerClus * bytespersec);
        if (value != 0) {
          todo++;
        }
      } 
      else {
        todo = (FS_i32)0x0ffffff8L;
      }
      curclst = s->data[26] + 0x100L * s->data[27] + 0x10000L * s->data[20] + 0x1000000L * s->data[21];
      lastsec = -1;
      /* Free cluster loop */
      while (todo) {
        if (fattype == 1) {
          fatindex = curclst + (curclst / 2);    /* FAT12 */
        }
#if (FS_FAT_NOFAT32==0)
        else if (fattype == 2) {
          fatindex = curclst * 4;               /* FAT32 */
        }
#endif  /* FS_FAT_NOFAT32==0 */
        else {
          fatindex = curclst * 2;               /* FAT16 */
        }
        fatsec = FS__FAT_aBPBUnit[Idx][Unit].RsvdSecCnt + (fatindex / bytespersec);
        fatoffs = fatindex % bytespersec;
        if (fatsec != lastsec) {
          err = FS__lb_read(FS__pDevInfo[Idx].devdriver, Unit, fatsec, (void*)buffer);
          if (err < 0) {
            err = FS__lb_read(FS__pDevInfo[Idx].devdriver, Unit, fatsize + fatsec, (void*)buffer);
            if (err < 0) {
              FS__fat_free(buffer);
              return -1;
            }
            /* Try to repair original FAT sector with contents of copy */
            FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsec, (void*)buffer);
          }
          lastsec = fatsec;
        }
        if (fattype == 1) {
          if (fatoffs == (bytespersec - 1)) {
            a = buffer[fatoffs];
            if (curclst & 1) {
              buffer[fatoffs] &= 0x0f;
            }
            else {
              buffer[fatoffs]  = 0x00;
            }
            err  = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsec, (void*)buffer);
            err2 = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsize + fatsec, (void*)buffer);
            lexp = (err < 0);
            lexp = lexp || (err2 < 0);
            if (lexp) {
              FS__fat_free(buffer);
              return -1;
            }
            err = FS__lb_read(FS__pDevInfo[Idx].devdriver, Unit, fatsec + 1, (void*)buffer);
            if (err < 0) {
              err = FS__lb_read(FS__pDevInfo[Idx].devdriver, Unit, fatsize + fatsec + 1, (void*)buffer);
              if (err < 0) {
                FS__fat_free(buffer);
                return -1;
              }
              /* Try to repair original FAT sector with contents of copy */
              FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsec + 1, (void*)buffer);
            }
            lastsec = fatsec + 1;
            b = buffer[0];
            if (curclst & 1) {
              buffer[0]  = 0x00;;
            }
            else {
              buffer[0] &= 0xf0;
            }
            err  = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsec + 1, (void*)buffer);
            err2 = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsize + fatsec + 1, (void*)buffer);
            lexp = (err < 0);
            lexp = lexp || (err2 < 0);
            if (lexp) {
              FS__fat_free(buffer);
              return -1;
            }
          }
          else {
            a = buffer[fatoffs];
            b = buffer[fatoffs + 1];
            if (curclst & 1) {
              buffer[fatoffs]     &= 0x0f;
              buffer[fatoffs + 1]  = 0x00;
            }
            else {
              buffer[fatoffs]      = 0x00;
              buffer[fatoffs + 1] &= 0xf0;
            }
            err  = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsec, (void*)buffer);
            err2 = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsize + fatsec, (void*)buffer);
            lexp = (err < 0);
            lexp = lexp || (err2 < 0);
            if (lexp) {
              FS__fat_free(buffer);
              return -1;
            }
          }
          if (curclst & 1) {
            curclst = ((a & 0xf0) >> 4) + 16 * b;
          }
          else {
            curclst = a + 256 * (b & 0x0f);
          }
          curclst &= 0x0fff;
          if (curclst >= 0x0ff8) {
            FS__fat_free(buffer);
            return 0;
          }
        }
#if (FS_FAT_NOFAT32==0)
        else if (fattype == 2) { /* FAT32 */
          a = buffer[fatoffs];
          b = buffer[fatoffs + 1];
          c = buffer[fatoffs + 2];
          d = buffer[fatoffs + 3] & 0x0f;
          buffer[fatoffs]      = 0x00;
          buffer[fatoffs + 1]  = 0x00;
          buffer[fatoffs + 2]  = 0x00;
          buffer[fatoffs + 3]  = 0x00;
          err  = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsec, (void*)buffer);
          err2 = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsize + fatsec, (void*)buffer);
          lexp = (err < 0);
          lexp = lexp || (err2 < 0);
          if (lexp) {
            FS__fat_free(buffer);
            return -1;
          }
          curclst = a + 0x100 * b + 0x10000L * c + 0x1000000L * d;
          curclst &= 0x0fffffffL;
          if (curclst >= (FS_i32)0x0ffffff8L) {
            FS__fat_free(buffer);
            return 0;
          }
        }
#endif /* FS_FAT_NOFAT32==0 */
        else {
          a = buffer[fatoffs];
          b = buffer[fatoffs + 1];
          buffer[fatoffs]     = 0x00;
          buffer[fatoffs + 1] = 0x00;
          err  = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsec, (void*)buffer);
          err2 = FS__lb_write(FS__pDevInfo[Idx].devdriver, Unit, fatsize + fatsec, (void*)buffer);
          lexp = (err < 0);
          lexp = lexp || (err2 < 0);
          if (lexp) {
            FS__fat_free(buffer);
            return -1;
          }
          curclst  = a + 256 * b;
          curclst &= 0xffff;
          if (curclst >= (FS_i32)0xfff8) {
            FS__fat_free(buffer);
            return 0;
          }
        }
        todo--;
      } /* Free cluster loop */
    } /*  Delete entry */
    if (curclst > 0) {
      FS__fat_free(buffer);
      return curclst;
    }
  } /* for */
  FS__fat_free(buffer);
  return curclst;
}


/*********************************************************************
*
*             FS__fat_make_realname
*
  Description:
  FS internal function. Convert a given name to the format, which is
  used in the FAT directory.
  
  Parameters:
  pOrgName    - Pointer to name to be translated
  pEntryName  - Pointer to a buffer for storing the real name used
                in a directory.

  Return value:
  None.
*/

void FS__fat_make_realname(char *pEntryName, const char *pOrgName) {
  FS_FARCHARPTR ext;
  FS_FARCHARPTR s;
  int i;

  s = (FS_FARCHARPTR)pOrgName;
  ext = (FS_FARCHARPTR) FS__CLIB_strchr(s, '.');
  if (!ext) {
    ext = &s[FS__CLIB_strlen(s)];
  }
  i=0;
  while (1) {
    if (s >= ext) {
      break;  /* '.' reached */
    }
    if (i >= 8) {
      break;  /* If there is no '.', this is the end of the name */
    }
    if (*s == (char)0xe5) {
      pEntryName[i] = 0x05;
    }
    else {
      pEntryName[i] = (char)FS__CLIB_toupper(*s);
    }
    i++;
    s++;
  }
  while (i < 8) {
    /* Fill name with spaces*/
    pEntryName[i] = ' ';
    i++;
  }
  if (*s == '.') {
    s++;
  }
  while (i < 11) {
    if (*s != 0) {
      if (*s == (char)0xe5) {
        pEntryName[i] = 0x05;
      }
      else {
        pEntryName[i] = (char)FS__CLIB_toupper(*s);
      }
      s++;
    }
    else {
      pEntryName[i] = ' ';
    }
    i++;
  }
  pEntryName[11]=0;
}


/*********************************************************************
*
*             FS__fat_find_dir
*
  Description:
  FS internal function. Find the directory with name pDirName in directory
  DirStart.
  
  Parameters:
  Idx         - Index of device in the device information table 
                referred by FS__pDevInfo.
  Unit        - Unit number.
  pDirName    - Directory name; if zero, return the root directory.
  DirStart    - 1st cluster of the directory.
  DirSize     - Sector (not cluster) size of the directory.
 
  Return value:
  >0          - Directory found. Value is the first cluster of the file.
  ==0         - An error has occured.
*/

FS_u32 FS__fat_find_dir(int Idx, FS_u32 Unit, char *pDirName, FS_u32 DirStart, 
                        FS_u32 DirSize) {
  FS__fat_dentry_type *s;
  FS_u32 dstart;
  FS_u32 i;
  FS_u32 dsec;
  FS_u32 fatsize;
  int len;
  int err;
  int c;
  char *buffer;

  if (pDirName == 0) {
    /* Return root directory */
    if (FS__FAT_aBPBUnit[Idx][Unit].FATSz16) {
      fatsize = FS__FAT_aBPBUnit[Idx][Unit].FATSz16;
      dstart  = FS__FAT_aBPBUnit[Idx][Unit].RsvdSecCnt + FS__FAT_aBPBUnit[Idx][Unit].NumFATs * fatsize;
    }
    else {
      fatsize = FS__FAT_aBPBUnit[Idx][Unit].FATSz32;
      dstart  = FS__FAT_aBPBUnit[Idx][Unit].RsvdSecCnt + FS__FAT_aBPBUnit[Idx][Unit].NumFATs * fatsize
                + (FS__FAT_aBPBUnit[Idx][Unit].RootClus - 2) * FS__FAT_aBPBUnit[Idx][Unit].SecPerClus;
    }
  }
  else {
    /* Find directory */
    buffer = FS__fat_malloc(FS_FAT_SEC_SIZE);
    if (!buffer) {
      return 0;
    }
    len = FS__CLIB_strlen(pDirName);
    if (len > 11) {
      len = 11;
    }
    /* Read directory */
    for (i = 0; i < DirSize; i++) {
      dsec = FS__fat_dir_realsec(Idx, Unit, DirStart, i);
      if (dsec == 0) {
        FS__fat_free(buffer);
        return 0;
      }
      err = FS__lb_read(FS__pDevInfo[Idx].devdriver, Unit, dsec, (void*)buffer);
      if (err < 0) {
        FS__fat_free(buffer);
        return 0;
      }
      s = (FS__fat_dentry_type*)buffer;
      while (1) {
        if (s >= (FS__fat_dentry_type*)(buffer + FS_FAT_SEC_SIZE)) {
          break;  /* End of sector reached */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲电影在线播放| 色婷婷亚洲一区二区三区| 9i看片成人免费高清| 欧美视频完全免费看| 久久亚区不卡日本| 亚洲一区二区视频在线| 国产成人免费视频一区| 欧美日韩国产系列| 国产精品福利一区二区三区| 久久成人麻豆午夜电影| 色综合久久综合中文综合网| 久久奇米777| 日本在线播放一区二区三区| 91女神在线视频| 精品成人一区二区| 日本aⅴ精品一区二区三区| 97久久精品人人爽人人爽蜜臀| 日韩一区二区免费在线观看| 亚洲国产精品久久久久婷婷884 | 精品久久久久久亚洲综合网| 亚洲精品一二三| 国产成人亚洲综合色影视| 欧美一区二区三区性视频| 一区二区三区日韩| 色综合亚洲欧洲| 国产精品久久国产精麻豆99网站 | 亚洲一区二区三区在线| 97精品电影院| 中文字幕亚洲一区二区av在线| 国产尤物一区二区在线| 欧美精品一区二区三区蜜桃视频| 日本伊人色综合网| 欧美高清dvd| 日韩精品一级中文字幕精品视频免费观看 | 午夜精品福利一区二区三区蜜桃| 99久久精品国产精品久久| 1024亚洲合集| 成人av在线资源网站| 亚洲丝袜自拍清纯另类| 91蜜桃网址入口| 玉足女爽爽91| 欧美色视频在线| 水野朝阳av一区二区三区| 中文字幕第一区综合| 国产成人免费在线观看| 国产精品不卡视频| 在线亚洲欧美专区二区| 亚欧色一区w666天堂| 制服丝袜日韩国产| 韩国女主播成人在线观看| 久久网站热最新地址| 国产成人精品免费一区二区| 国产婷婷色一区二区三区| 国产福利一区在线观看| 欧美经典一区二区三区| 成人免费视频视频| 日韩理论片一区二区| 欧美综合在线视频| 亚洲乱码国产乱码精品精小说| 色天使色偷偷av一区二区| 亚洲一卡二卡三卡四卡五卡| 欧美在线制服丝袜| 欧美aⅴ一区二区三区视频| 欧美tk—视频vk| 国产一区二区福利视频| 中文字幕一区二区三区在线不卡| 不卡欧美aaaaa| 日韩黄色免费网站| 国产欧美精品区一区二区三区| 91影视在线播放| 午夜精品久久久久久久| 欧美精品一区二区在线播放| 国产成人8x视频一区二区| 国产精品网站在线播放| 99久久久精品| 亚洲1区2区3区4区| 久久亚洲二区三区| 91女厕偷拍女厕偷拍高清| 丝袜亚洲精品中文字幕一区| 亚洲精品在线观看视频| 91网页版在线| 天堂蜜桃91精品| 精品999久久久| 狠狠色狠狠色合久久伊人| 中文字幕欧美国产| 欧美日韩不卡一区| 国产伦精品一区二区三区免费| 国产精品毛片a∨一区二区三区| 不卡视频免费播放| 捆绑调教一区二区三区| 亚洲色图19p| 欧美一二三四在线| gogogo免费视频观看亚洲一| 亚洲一级不卡视频| 久久毛片高清国产| 欧美日韩你懂的| 国产一区二区视频在线| 亚洲精品国产高清久久伦理二区| 欧美一级久久久| 色婷婷精品久久二区二区蜜臀av| 免费不卡在线视频| 自拍视频在线观看一区二区| 精品久久久久久久久久久久久久久 | 三级久久三级久久| 国产精品女主播av| 日韩美女主播在线视频一区二区三区 | 成人的网站免费观看| 日本欧美一区二区在线观看| 亚洲素人一区二区| 日韩一级黄色片| 欧美一区二区视频在线观看| 色先锋资源久久综合| 国产成人自拍网| 奇米综合一区二区三区精品视频 | 乱一区二区av| 亚洲一级片在线观看| 国产精品久久久久永久免费观看| 欧美电影免费提供在线观看| 欧美性色黄大片| 成年人午夜久久久| 国内精品视频666| 欧美aⅴ一区二区三区视频| 国产精品电影一区二区| 久久久不卡网国产精品二区| 欧美一区二区三区视频在线 | 久久精子c满五个校花| 在线成人午夜影院| 在线日韩国产精品| 在线一区二区观看| 色婷婷亚洲精品| 一本色道久久综合亚洲aⅴ蜜桃 | 91在线视频免费观看| 国产精品18久久久久久久网站| 久久电影网电视剧免费观看| 人禽交欧美网站| 秋霞国产午夜精品免费视频| 日日夜夜精品视频免费| 欧美极品aⅴ影院| 国产精品第四页| 亚洲人亚洲人成电影网站色| 国产精品传媒入口麻豆| 中文字幕日韩av资源站| 国产精品二三区| 一区二区三区四区国产精品| 亚洲bt欧美bt精品| 麻豆成人免费电影| 久久电影网站中文字幕| 国产一区二区不卡在线 | 精品国产91乱码一区二区三区| 欧美一级夜夜爽| 日韩欧美国产不卡| 国产亚洲欧洲997久久综合| 国产精品无圣光一区二区| 一区二区三区在线观看网站| 亚洲成av人片一区二区| 美女一区二区久久| 国产91精品在线观看| 色婷婷综合久久久久中文一区二区 | 欧美一区二区三区视频在线观看| 日韩欧美国产高清| 中文字幕的久久| 亚洲一区二区三区四区在线观看 | 9191成人精品久久| 精品少妇一区二区三区免费观看| 精品88久久久久88久久久| 国产精品久久久久久久岛一牛影视| 国产精品久久福利| 男男成人高潮片免费网站| 国产白丝精品91爽爽久久| 91免费看`日韩一区二区| 日韩午夜在线观看视频| 国产精品丝袜91| 日本成人在线视频网站| 成人av综合一区| 欧美一级久久久| 亚洲欧洲无码一区二区三区| 日韩中文字幕亚洲一区二区va在线| 久99久精品视频免费观看| 成人国产精品免费| 精品av久久707| 亚洲一区二区三区免费视频| 国产精品888| 欧美三区在线视频| 久久精品一区蜜桃臀影院| 亚洲成av人在线观看| 成人免费视频一区二区| 欧美一区在线视频| 一区二区三区毛片| 国产精品一区二区在线观看不卡| 欧美日韩不卡一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 亚洲欧美日韩综合aⅴ视频| 亚洲国产精品久久一线不卡| 色狠狠av一区二区三区| 精品成人a区在线观看| 偷拍亚洲欧洲综合| 色综合天天综合狠狠| 久久久久久夜精品精品免费| 男男视频亚洲欧美| 欧美日韩一区在线|