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

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

?? fat_dir.c

?? at91rm9200硬盤的接口代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

  if (!pDir) {
    return 0;  /* No valid pointer to a FS_DIR structure */
  }
  /* Find path on the media and return file name part of the complete path */
  dsize = FS__fat_findpath(pDir->dev_index, pDirName, &filename, &unit, &dstart); 
  if (dsize == 0) {
    return 0;  /* Directory not found */
  }
  FS__lb_ioctl(FS__pDevInfo[pDir->dev_index].devdriver, unit, FS_CMD_INC_BUSYCNT, 0, (void*)0); /* Turn on busy signal */
  len = FS__CLIB_strlen(filename);
  if (len != 0) {
    /* There is a name in the complete path (it does not end with a '\') */
    FS__fat_make_realname(realname, filename);  /* Convert name to FAT real name */
    i =  FS__fat_find_dir(pDir->dev_index, unit, realname, dstart, dsize);  /* Search name in the directory */
    if (i == 0) {
      /* Directory not found */
      FS__lb_ioctl(FS__pDevInfo[pDir->dev_index].devdriver, unit, FS_CMD_DEC_BUSYCNT, 0, (void*)0);  /* Turn off busy signal */
      return 0;
    }
  }
  else {
    /* 
       There is no name in the complete path (it does end with a '\'). In that
       case, FS__fat_findpath returns already start of the directory.
    */
    i = dstart;  /* Use 'current' path */
  }
  if (i) {
    dsize  =  FS__fat_dir_size(pDir->dev_index, unit, i);  /* Get size of the directory */
  }
  if (dsize == 0) {
    /* Directory not found */
    FS__lb_ioctl(FS__pDevInfo[pDir->dev_index].devdriver, unit, FS_CMD_DEC_BUSYCNT, 0, (void*)0);  /* Turn off busy signal */
    return 0;
  }
  pDir->dirid_lo  = unit;
  pDir->dirid_hi  = i;
  pDir->dirid_ex  = dstart;
  pDir->error     = 0;
  pDir->size      = dsize;
  pDir->dirpos    = 0;
  pDir->inuse     = 1;
  return pDir;
}


/*********************************************************************
*
*             FS__fat_closedir
*
  Description:
  FS internal function. Close a directory referred by pDir.

  Parameters:
  pDir        - Pointer to a FS_DIR data structure. 
  
  Return value:
  ==0         - Directory has been closed.
  ==-1        - Unable to close directory.
*/

int FS__fat_closedir(FS_DIR *pDir) {
  if (!pDir) {
    return -1;  /* No valid pointer to a FS_DIR structure */
  }
  FS__lb_ioctl(FS__pDevInfo[pDir->dev_index].devdriver, pDir->dirid_lo, FS_CMD_DEC_BUSYCNT, 0, (void*)0);  /* Turn off busy signal */
  pDir->inuse = 0;
  return 0;
}


/*********************************************************************
*
*             FS__fat_readdir
*
  Description:
  FS internal function. Read next directory entry in directory 
  specified by pDir.

  Parameters:
  pDir        - Pointer to a FS_DIR data structure. 
  
  Return value:
  ==0         - No more directory entries or error.
  !=0         - Pointer to a directory entry.
*/

struct FS_DIRENT *FS__fat_readdir(FS_DIR *pDir) {
  FS__fat_dentry_type *s;
  FS_u32 dirindex;
  FS_u32 dsec;
  FS_u16 bytespersec;
  char *buffer;
  int err;

  if (!pDir) {
    return 0;  /* No valid pointer to a FS_DIR structure */
  }
  buffer = FS__fat_malloc(FS_FAT_SEC_SIZE);
  if (!buffer) {
    return 0;
  }
  bytespersec = FS__FAT_aBPBUnit[pDir->dev_index][pDir->dirid_lo].BytesPerSec;
  dirindex = pDir->dirpos / bytespersec;
  while (dirindex < (FS_u32)pDir->size) {
    dsec = FS__fat_dir_realsec(pDir->dev_index, pDir->dirid_lo, pDir->dirid_hi, dirindex);
    if (dsec == 0) {
      /* Cannot convert logical sector */
      FS__fat_free(buffer);
      return 0;
    }
    /* Read directory sector */
    err = FS__lb_read(FS__pDevInfo[pDir->dev_index].devdriver, pDir->dirid_lo, dsec, (void*)buffer);
    if (err < 0) {
      FS__fat_free(buffer);
      return 0;
    }
    /* Scan for valid directory entry */
    s = (FS__fat_dentry_type*)&buffer[pDir->dirpos % bytespersec];
    while (1) {
      if (s >= (FS__fat_dentry_type*)(buffer + FS_FAT_SEC_SIZE)) {
        break;  /* End of sector reached */
      }
      if (s->data[11] != 0x00) { /* not an empty entry */
        if (s->data[0] != (unsigned char)0xe5) { /* not a deleted file */
          if (s->data[11] != (FS_FAT_ATTR_READ_ONLY | FS_FAT_ATTR_HIDDEN | FS_FAT_ATTR_SYSTEM | FS_FAT_VOLUME_ID)) {
            break;  /* Also not a long entry, so it is a valid entry */
          }
        }
      }
      s++;
      pDir->dirpos += 32;
    }
    if (s < (FS__fat_dentry_type*)(buffer + FS_FAT_SEC_SIZE)) {
      /* Valid entry found, copy it.*/
      pDir->dirpos += 32;
      FS__CLIB_memcpy(pDir->dirent.d_name, s->data, 8);
      pDir->dirent.d_name[8] = '.';
      FS__CLIB_memcpy(&pDir->dirent.d_name[9], &s->data[8], 3);
      pDir->dirent.d_name[12] = 0;
      pDir->dirent.FAT_DirAttr = s->data[11];
      FS__fat_free(buffer);
      return &pDir->dirent;
    }
    dirindex++;
  }
  FS__fat_free(buffer);
  return 0;
}


/*********************************************************************
*
*             FS__fat_MkRmDir
*
  Description:
  FS internal function. Create or remove a directory. If you call this 
  function to remove a directory (MkDir==0), you must make sure, that 
  it is already empty.

  Parameters:
  pDirName    - Directory name. 
  Idx         - Index of device in the device information table 
                referred by FS__pDevInfo.
  MkDir       - ==0 => Remove directory.
                !=0 => Create directory.
  
  Return value:
  ==0         - Directory has been created.
  ==-1        - An error has occured.
*/

int  FS__fat_MkRmDir(const char *pDirName, int Idx, char MkDir) {
  FS_size_t len;
  FS_u32 dstart;
  FS_u32 dsize;
  FS_u32 unit;
  FS_i32 i;
  int lexp_a;
  int lexp_b;
  char realname[12];
  char *filename;

  if (Idx < 0) {
    return -1; /* Not a valid index */
  }
  dsize = FS__fat_findpath(Idx, pDirName, &filename, &unit, &dstart);
  if (dsize == 0) {
    return -1;  /* Path not found */
  }
  FS__lb_ioctl(FS__pDevInfo[Idx].devdriver, unit, FS_CMD_INC_BUSYCNT, 0, (void*)0); /* Turn on busy signal */
  len = FS__CLIB_strlen(filename);
  if (len != 0) {
    FS__fat_make_realname(realname, filename);  /* Convert name to FAT real name */
    i =  FS__fat_find_dir(Idx, unit, realname, dstart, dsize);
    lexp_a = (i!=0) && (MkDir);  /* We want to create a direcory , but it does already exist */
    lexp_b = (i==0) && (!MkDir); /* We want to remove a direcory , but it does not exist */
    lexp_a = lexp_a || lexp_b;
    if (lexp_a) {
      /* We want to create, but dir does already exist or we want to remove, but dir is not there */
      /* turn off busy signal */
      FS__lb_ioctl(FS__pDevInfo[Idx].devdriver, unit, FS_CMD_DEC_BUSYCNT, 0, (void*)0);
      return -1;
    }
  }
  else {
    FS__lb_ioctl(FS__pDevInfo[Idx].devdriver, unit, FS_CMD_DEC_BUSYCNT, 0, (void*)0);  /* Turn off busy signal */
    return -1;
  }
  /* 
      When you get here, variables have following values:
       dstart="current"  
       dsize="size of current"  
       realname="real dir name to create" 
  */
  if (MkDir) {
    i = _FS_fat_create_directory(Idx, unit,realname, dstart, dsize);  /* Create the directory */
  }
  else {
    i = FS__fat_DeleteFileOrDir(Idx, unit, realname, dstart, dsize, 0);  /* Remove the directory */
  }
  if (i >= 0) {
    /* If the operation has been successfull, flush the cache.*/
    i = FS__lb_ioctl(FS__pDevInfo[Idx].devdriver, unit, FS_CMD_FLUSH_CACHE, 2, (void*)0);
    FS__lb_ioctl(FS__pDevInfo[Idx].devdriver, unit, FS_CMD_DEC_BUSYCNT, 0, (void*)0);  /* Turn of busy signal */
    if (i < 0) {
      return -1;
    }
    return 0;
  }
  FS__lb_ioctl(FS__pDevInfo[Idx].devdriver, unit, FS_CMD_DEC_BUSYCNT, 0, (void*)0);  /* Turn of busy signal */
  return -1;
}


#endif /* FS_POSIX_DIR_SUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品91xxx| 久久精品在线观看| 97国产一区二区| 国产在线国偷精品免费看| 无吗不卡中文字幕| 樱花草国产18久久久久| 亚洲综合区在线| 亚洲精品视频在线| 亚洲女同ⅹxx女同tv| 日本一二三不卡| 国产精品嫩草影院com| 国产精品久久毛片| 1024成人网色www| 亚洲精品日日夜夜| 亚洲一区影音先锋| 日本一不卡视频| 蜜桃视频在线一区| 国产成人免费视频精品含羞草妖精 | 精品国产青草久久久久福利| 91精品免费在线| 日韩视频在线你懂得| 精品99999| 欧美国产禁国产网站cc| 亚洲美女屁股眼交3| 午夜日韩在线电影| 国产一区二区三区最好精华液| 国产麻豆精品95视频| 91一区在线观看| 777奇米四色成人影色区| 欧美精品一区二区三区蜜桃| 欧美激情在线观看视频免费| 一区二区三区中文字幕| 日本网站在线观看一区二区三区| 久久成人久久鬼色| 91猫先生在线| 欧美一区二区视频在线观看2020| 在线看一区二区| 精品福利一区二区三区| 国产精品不卡在线观看| 午夜天堂影视香蕉久久| 99久久精品免费看国产免费软件| 久久奇米777| 国产一区二区三区香蕉| 国产亚洲短视频| 99久久国产综合精品女不卡| 亚洲色图视频免费播放| 在线免费亚洲电影| 亚洲 欧美综合在线网络| 欧美视频在线播放| 国产一区二区三区四区五区美女| 2017欧美狠狠色| 亚洲理论在线观看| 宅男噜噜噜66一区二区66| 日本不卡一区二区三区高清视频| 精品少妇一区二区三区 | 国产欧美1区2区3区| 国产在线精品一区二区不卡了| 国产精品区一区二区三区| 在线免费视频一区二区| 国产麻豆精品在线| 日韩电影在线观看电影| 久久久一区二区三区捆绑**| 91国产福利在线| 日韩成人一级大片| 偷拍日韩校园综合在线| 精品一区二区三区在线播放视频 | 一区二区三区在线免费视频| 国产婷婷色一区二区三区四区 | 正在播放亚洲一区| 成人夜色视频网站在线观看| 亚洲高清免费在线| 亚洲精品在线三区| 成人免费观看男女羞羞视频| 亚洲h动漫在线| 亚洲欧洲三级电影| 国产欧美一区二区精品仙草咪| 欧美一级爆毛片| 欧美精品日韩一本| 5566中文字幕一区二区电影| 一本色道久久加勒比精品| 91色综合久久久久婷婷| jvid福利写真一区二区三区| 99精品视频在线免费观看| 成人性生交大合| 不卡的av电影| 中国色在线观看另类| 中文字幕不卡的av| 亚洲色大成网站www久久九九| 蜜桃视频一区二区三区| 欧美日韩三级在线| 中文字幕中文字幕中文字幕亚洲无线| 亚洲国产日韩a在线播放性色| 韩国女主播一区| 欧美欧美午夜aⅴ在线观看| 国产精品国产精品国产专区不蜜| 亚洲夂夂婷婷色拍ww47| av欧美精品.com| 久久久亚洲精品一区二区三区| 亚洲欧美电影院| 国产黄人亚洲片| 精品欧美一区二区久久| 一区二区在线免费| jlzzjlzz亚洲女人18| 欧美一级欧美一级在线播放| 一区二区久久久久久| 日本高清不卡一区| 亚洲一区二区三区影院| 欧美在线你懂的| 亚洲高清视频中文字幕| 3d动漫精品啪啪一区二区竹菊| 三级成人在线视频| 久久久精品综合| 国产成人精品影视| 亚洲精品亚洲人成人网| 日韩一区二区三区视频| 丁香激情综合国产| 中文字幕电影一区| 91香蕉视频在线| 久久99这里只有精品| 天堂久久久久va久久久久| 亚洲韩国一区二区三区| 一区2区3区在线看| 亚洲综合999| 亚洲日本丝袜连裤袜办公室| 精品国产一区二区亚洲人成毛片 | 中文字幕一区二区三区四区| 国产成人日日夜夜| 中文字幕欧美三区| 欧美人动与zoxxxx乱| 亚洲成在人线在线播放| 国产综合久久久久影院| 中文字幕欧美激情| 久久国内精品自在自线400部| 欧美精品日日鲁夜夜添| 免费欧美在线视频| 国产精品日日摸夜夜摸av| 91在线你懂得| 久久精品国产亚洲一区二区三区| 国产欧美日韩在线视频| 国产在线精品一区二区夜色| 午夜成人免费视频| 国产欧美日韩三级| 91精品国产91综合久久蜜臀| 91在线观看下载| 国产精品综合av一区二区国产馆| 一区二区三区资源| 欧美在线一二三四区| 不卡av免费在线观看| 国产一区二区视频在线| 一区二区三区在线免费| 日韩美女视频一区| 久久久久久久久久久久久夜| 精品91自产拍在线观看一区| 99视频国产精品| 成年人国产精品| 国产精品99久久久久| 亚洲成人动漫av| 亚洲成人精品影院| 亚洲日本成人在线观看| 国产日产欧美一区| 久久精品一区二区三区av| 欧美揉bbbbb揉bbbbb| 欧美视频自拍偷拍| 欧美色老头old∨ideo| 欧美理论电影在线| 欧美日韩在线免费视频| 欧美在线影院一区二区| 一本色道**综合亚洲精品蜜桃冫| 在线一区二区三区四区五区 | 国产欧美精品区一区二区三区 | 首页亚洲欧美制服丝腿| 日日夜夜精品免费视频| 国产永久精品大片wwwapp| 国产精选一区二区三区| 91国偷自产一区二区开放时间 | 亚洲电影中文字幕在线观看| 日韩成人免费在线| 91蜜桃传媒精品久久久一区二区| 欧美一区二区三区思思人| 国产乱人伦精品一区二区在线观看| 欧美肥妇bbw| 亚洲国产一区二区视频| 在线视频一区二区免费| 亚洲欧美欧美一区二区三区| 欧美精品久久久久久久多人混战| 国产拍揄自揄精品视频麻豆| 国产一区二区精品久久99| 中文字幕乱码一区二区免费| 免费成人在线影院| 亚洲精品视频在线观看网站| 国产精品午夜免费| 国产亚洲精品精华液| 日韩美女一区二区三区四区| jlzzjlzz亚洲日本少妇| 狠狠色伊人亚洲综合成人| 全部av―极品视觉盛宴亚洲| 最新中文字幕一区二区三区| 国产三级精品三级| 久久婷婷国产综合国色天香| 国产精品每日更新|