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

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

?? fat_open.c

?? 這套代碼已經成功一直到S3C44B0X開發板上
?? 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一区二区三区免费野_久草精品视频
精品美女一区二区三区| 欧美国产日韩a欧美在线观看| 激情综合网激情| 综合在线观看色| 欧美tk—视频vk| 日本久久一区二区| 国产一区三区三区| 婷婷开心激情综合| 亚洲人成精品久久久久| 久久久久久久久久久黄色| 欧美日韩综合一区| 一本到不卡免费一区二区| 国产一区二区三区四| 五月激情六月综合| 亚洲精品精品亚洲| 国产精品理论在线观看| 日韩欧美国产一二三区| 欧美精品久久久久久久久老牛影院| 成人午夜视频网站| 国产一区二区三区高清播放| 免费看精品久久片| 日韩精品欧美精品| 亚洲高清一区二区三区| 成人欧美一区二区三区黑人麻豆| 久久综合色婷婷| 日韩欧美一级片| 欧美一区二区三区人| 欧美无乱码久久久免费午夜一区| 色综合久久久久| av中文字幕一区| 成人av小说网| 丁香激情综合五月| 国产精品一区专区| 国产精品综合二区| 国产成人丝袜美腿| 国产一区二区三区观看| 国产麻豆视频一区| 国产精品亚洲一区二区三区在线 | 视频在线观看91| 一区2区3区在线看| 一区二区三区免费在线观看| 亚洲三级视频在线观看| 亚洲女人****多毛耸耸8| 亚洲欧洲一区二区在线播放| 亚洲欧美自拍偷拍| 亚洲色图.com| 亚洲麻豆国产自偷在线| 亚洲综合一区二区三区| 亚洲一二三区在线观看| 午夜激情久久久| 日韩精品乱码免费| 激情成人综合网| 国产精品性做久久久久久| 国产成人精品免费一区二区| 99久久婷婷国产| 色哟哟一区二区| 欧美日韩中文字幕一区二区| 7777精品伊人久久久大香线蕉超级流畅| 亚洲国产成人在线| 欧美国产禁国产网站cc| 自拍偷在线精品自拍偷无码专区 | 激情图片小说一区| 国产精品一二一区| 国产成人小视频| 99riav久久精品riav| 欧美日韩视频在线第一区| 日韩一区二区在线免费观看| 欧美mv日韩mv| 中文字幕一区二区三区四区| 亚洲一区二区三区在线| 奇米影视7777精品一区二区| 国产99久久久精品| 日本韩国精品一区二区在线观看| 717成人午夜免费福利电影| 精品成人私密视频| 亚洲免费观看高清| 人禽交欧美网站| 成年人午夜久久久| 欧美高清性hdvideosex| 欧美国产日韩亚洲一区| 午夜精彩视频在线观看不卡| 国产成人综合网站| 欧美系列在线观看| 欧美国产精品中文字幕| 亚洲成人在线观看视频| 国产一区二区久久| 精品视频资源站| 久久综合狠狠综合| 亚洲国产裸拍裸体视频在线观看乱了| 六月丁香综合在线视频| 91国产免费观看| 久久久综合视频| 夜夜嗨av一区二区三区| 高清国产一区二区| 欧美精品在线视频| 亚洲女与黑人做爰| 风流少妇一区二区| 欧美一区二区成人| 亚洲男人的天堂网| 国产不卡视频在线观看| 欧美一区二区大片| 亚洲aⅴ怡春院| jlzzjlzz亚洲女人18| 欧美成人精品1314www| 亚洲午夜久久久久久久久久久| 国产经典欧美精品| 欧美一级搡bbbb搡bbbb| 亚洲一区二区综合| 成+人+亚洲+综合天堂| 精品成人一区二区三区| 日本va欧美va精品发布| 欧美亚洲愉拍一区二区| 最新不卡av在线| 成人黄色电影在线| 国产清纯白嫩初高生在线观看91| 青草国产精品久久久久久| 久久久噜噜噜久噜久久综合| 手机精品视频在线观看| 在线观看亚洲专区| 成人欧美一区二区三区视频网页| 国产成人午夜视频| 国产日产欧产精品推荐色 | 久久综合资源网| 久久精品国产在热久久| 欧美高清视频一二三区 | 欧美日韩www| 亚洲一区二区综合| 欧美私模裸体表演在线观看| 亚洲欧美激情视频在线观看一区二区三区| 中文一区一区三区高中清不卡| 久久精品国产99国产| 精品视频一区三区九区| 亚洲一线二线三线视频| 色婷婷激情综合| 一区二区三区中文字幕在线观看| 色婷婷狠狠综合| 一区二区免费在线| 欧美视频一区二| 日本大胆欧美人术艺术动态| 91精品国产综合久久小美女| 蜜桃av一区二区在线观看| 777色狠狠一区二区三区| 天堂资源在线中文精品| 欧美一卡二卡在线| 捆绑调教一区二区三区| 久久先锋资源网| 成人免费观看av| 亚洲乱码日产精品bd| 欧美丝袜丝nylons| 蜜桃久久久久久| 欧美激情一区在线观看| 91在线视频观看| 亚洲综合清纯丝袜自拍| 在线播放视频一区| 国产一区视频网站| 亚洲视频在线观看三级| 欧美久久久久久久久中文字幕| 91久久精品日日躁夜夜躁欧美| 亚洲精品ww久久久久久p站 | 日韩欧美的一区| 国产综合成人久久大片91| 国产精品伦理在线| 欧美三级韩国三级日本一级| 麻豆视频一区二区| 国产精品欧美久久久久无广告| 91年精品国产| 日韩国产一二三区| 久久精品水蜜桃av综合天堂| 一本大道久久a久久精品综合| 亚洲国产成人av网| 2020国产成人综合网| 色综合天天做天天爱| 免费成人av资源网| 亚洲天堂网中文字| 欧美一级理论片| 91在线精品一区二区三区| 视频一区免费在线观看| 欧美激情一区三区| 91麻豆精品国产91久久久久久| 国产成人精品免费看| 婷婷六月综合网| 中文字幕一区二区三区在线观看| 欧美日韩的一区二区| 国产一区二区不卡| 亚洲已满18点击进入久久| 国产午夜精品久久久久久免费视| 日本韩国欧美在线| 国产91在线看| 日韩精品1区2区3区| 18成人在线观看| 精品sm捆绑视频| 欧美人与禽zozo性伦| 99久久免费视频.com| 国产呦萝稀缺另类资源| 亚洲.国产.中文慕字在线| 国产精品网站在线播放| 精品日本一线二线三线不卡| 中文字幕佐山爱一区二区免费| 精品国产亚洲一区二区三区在线观看| 欧美写真视频网站|