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

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

?? api_dir.c

?? uCOS+uCFS在Armulator上的移植
?? C
字號:
/*
**********************************************************************
*                          Micrium, Inc.
*                      949 Crestview Circle
*                     Weston,  FL 33327-1848
*
*                            uC/FS
*
*             (c) Copyright 2001 - 2003, Micrium, Inc.
*                      All rights reserved.
*
***********************************************************************

----------------------------------------------------------------------
File        : api_dir.c
Purpose     : POSIX 1003.1 like directory support
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
None.
---------------------------END-OF-HEADER------------------------------
*/

/*********************************************************************
*
*             #include Section
*
**********************************************************************
*/

#include "fs_port.h"
#include "fs_conf.h"
#include "fs_dev.h"
#include "fs_api.h"
#include "fs_os.h"
#include "fs_fsl.h"
#include "fs_int.h"
#include "api_int.h"


#if FS_POSIX_DIR_SUPPORT

/*********************************************************************
*
*             Local variables        
*
**********************************************************************
*/

static const unsigned int _FS_dir_maxopen = FS_DIR_MAXOPEN;
static FS_DIR             _FS_dirhandle[FS_DIR_MAXOPEN];


/*********************************************************************
*
*             Global functions
*
**********************************************************************
*/

/*********************************************************************
*
*             FS_OpenDir
*
  Description:
  API function. Open an existing directory for reading.

  Parameters:
  pDirName    - Fully qualified directory name. 
  
  Return value:
  ==0         - Unable to open the directory.
  !=0         - Address of an FS_DIR data structure.
*/

FS_DIR *FS_OpenDir(const char *pDirName) {
  FS_DIR *handle;
  unsigned int i;
  int idx;
  char *s;

  /* Find correct FSL (device:unit:name) */
  idx = FS__find_fsl(pDirName, &s);
  if (idx < 0) {
    return 0;  /* Device not found */
  }
  if (FS__pDevInfo[idx].fs_ptr->fsl_opendir) {
    /*  Find next free entry in _FS_dirhandle */
    FS_X_OS_LockDirHandle();
    i = 0;
    while (1) {
      if (i >= _FS_dir_maxopen) {
        break;  /* No free entry in _FS_dirhandle */
      }
      if (!_FS_dirhandle[i].inuse) {
        break;  /* Free entry found */
      }
      i++;
    }
    if (i < _FS_dir_maxopen) {
      /* Execute open function of the found FSL */
      _FS_dirhandle[i].dev_index = idx; 
      handle = (FS__pDevInfo[idx].fs_ptr->fsl_opendir)(s, &_FS_dirhandle[i]);
      FS_X_OS_UnlockDirHandle();
      return handle;
    }
    FS_X_OS_UnlockDirHandle();
  }
  return 0;
}


/*********************************************************************
*
*             FS_CloseDir
*
  Description:
  API 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_CloseDir(FS_DIR *pDir) {
  int i;

  if (!pDir) {
    return -1;  /* No pointer to a FS_DIR data structure */
  }
  FS_X_OS_LockDirHandle();
  if (!pDir->inuse) {
    /* FS_DIR structure is not in use and cannot be closed */
    FS_X_OS_UnlockDirHandle();
    return -1;
  }
  i = -1;
  if (pDir->dev_index >= 0) {
    if (FS__pDevInfo[pDir->dev_index].fs_ptr->fsl_closedir) {
      /* Execute close function of the corresponding FSL */
      i = (FS__pDevInfo[pDir->dev_index].fs_ptr->fsl_closedir)(pDir);
    }
  }
  FS_X_OS_UnlockDirHandle();
  return i;
}


/*********************************************************************
*
*             FS_ReadDir
*
  Description:
  API 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_ReadDir(FS_DIR *pDir) {
  struct FS_DIRENT *entry;

  if (!pDir) {
    return 0;  /* No pointer to a FS_DIR data structure */
  }
  FS_X_OS_LockDirOp(pDir);
  entry = 0;
  if (pDir->dev_index >= 0) {
    if (FS__pDevInfo[pDir->dev_index].fs_ptr->fsl_readdir) {
      /* Execute FSL function */
      entry = (FS__pDevInfo[pDir->dev_index].fs_ptr->fsl_readdir)(pDir);
    }
  }
  FS_X_OS_UnlockDirOp(pDir);
  return entry;  
}


/*********************************************************************
*
*             FS_RewindDir
*
  Description:
  API function. Set pointer for reading the next directory entry to 
  the first entry in the directory.

  Parameters:
  pDir        - Pointer to a FS_DIR data structure. 
  
  Return value:
  None.
*/

void FS_RewindDir(FS_DIR *pDir) {
  if (!pDir) {
    return;  /* No pointer to a FS_DIR data structure */
  }
  pDir->dirpos = 0;
}


/*********************************************************************
*
*             FS_MkDir
*
  Description:
  API function. Create a directory.

  Parameters:
  pDirName    - Fully qualified directory name. 
  
  Return value:
  ==0         - Directory has been created.
  ==-1        - An error has occured.
*/

int FS_MkDir(const char *pDirName) {
  int idx;
  int i;
  char *s;

  /* Find correct FSL (device:unit:name) */
  idx = FS__find_fsl(pDirName, &s);
  if (idx < 0) {
    return -1;  /* Device not found */
  }
  if (FS__pDevInfo[idx].fs_ptr->fsl_mkdir) {
    /* Execute the FSL function */
    FS_X_OS_LockDirHandle();
    i = (FS__pDevInfo[idx].fs_ptr->fsl_mkdir)(s, idx, 1);
    FS_X_OS_UnlockDirHandle();
    return i;
  }
  return -1;
}


/*********************************************************************
*
*             FS_RmDir
*
  Description:
  API function. Remove a directory.

  Parameters:
  pDirName    - Fully qualified directory name. 
  
  Return value:
  ==0         - Directory has been removed.
  ==-1        - An error has occured.
*/

int FS_RmDir(const char *pDirName) {
  FS_DIR *dirp;
  struct FS_DIRENT *direntp;
  int idx;
  int i;
  char *s;
  
  /* Check if directory is empty */
  dirp = FS_OpenDir(pDirName);
  if (!dirp) {
    /* Directory not found */
    return -1;
  } 
  i=0;
  while (1) {
    direntp = FS_ReadDir(dirp);
    i++;
    if (i >= 4) {
      break;  /* There is more than '..' and '.' */
    }
    if (!direntp) {
      break;  /* There is no more entry in this directory. */
    }
  }
  FS_CloseDir(dirp);
  if (i >= 4) {
    /* 
        There is more than '..' and '.' in the directory, so you 
        must not delete it.
    */
    return -1;
  }
  /* Find correct FSL (device:unit:name) */
  idx = FS__find_fsl(pDirName, &s);
  if (idx < 0) {
    return -1;  /* Device not found */
  }
  if (FS__pDevInfo[idx].fs_ptr->fsl_rmdir) {
    /* Execute the FSL function */
    FS_X_OS_LockDirHandle();
    i = (FS__pDevInfo[idx].fs_ptr->fsl_rmdir)(s, idx, 0);
    FS_X_OS_UnlockDirHandle();
    return i;
  }
  return -1;
}


#endif  /* FS_POSIX_DIR_SUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲1区2区3区| 久久精品国产久精国产| 麻豆精品新av中文字幕| 中文字幕第一区第二区| 欧美日韩综合色| 91官网在线免费观看| 色综合久久中文综合久久牛| 波多野结衣在线一区| 成人免费观看av| 风间由美一区二区av101| 国产成人午夜高潮毛片| 国产91高潮流白浆在线麻豆| 国产ts人妖一区二区| 成人高清免费观看| 色综合天天综合网天天看片| 成人aa视频在线观看| 大白屁股一区二区视频| 成人国产在线观看| 99在线精品视频| 欧美视频一区二区三区四区 | 高清成人免费视频| 26uuu色噜噜精品一区| 欧美成人性战久久| 久久先锋资源网| 国产精品色哟哟| 亚洲综合色丁香婷婷六月图片| 有码一区二区三区| 日本在线不卡视频| 国产传媒欧美日韩成人| 色综合久久久久久久久久久| 91精品国产综合久久久久久久久久| 欧美一区二区三区免费大片| 国产亚洲欧美色| 亚洲国产精品一区二区尤物区| 日韩精品成人一区二区在线| 国产酒店精品激情| 国产精品99久久久久久久vr| 日本一区二区三区国色天香 | 亚洲乱码日产精品bd| 亚洲一区视频在线| 久久99久久精品| www.日韩大片| 欧美成人精品高清在线播放| 国产精品视频yy9299一区| 亚洲成人一区在线| 国产69精品久久99不卡| 欧美日韩久久不卡| 中文一区二区在线观看| 天堂蜜桃一区二区三区| 不卡的av中国片| 精品88久久久久88久久久| 亚洲婷婷综合色高清在线| 欧美高清视频一二三区 | 亚洲另类在线一区| 国产综合成人久久大片91| 在线视频欧美区| 国产欧美日韩不卡免费| 日韩二区在线观看| 在线免费不卡视频| 国产精品污www在线观看| 久久疯狂做爰流白浆xx| 欧美性感一类影片在线播放| 国产精品久久午夜| 国产精品一区二区x88av| 欧美一级艳片视频免费观看| 亚洲自拍偷拍欧美| 91污在线观看| 国产精品视频线看| 国产精品自拍一区| 精品久久国产字幕高潮| 日韩成人免费在线| 欧美老女人在线| 亚洲成av人片一区二区三区 | 一区二区三区色| 99久久精品免费观看| 欧美韩国日本综合| 一区二区三区美女| 亚洲综合色在线| 99久久婷婷国产综合精品电影| 精品999在线播放| 久久精品噜噜噜成人av农村| 欧美一区二区黄色| 亚洲电影视频在线| 51久久夜色精品国产麻豆| 亚洲成人免费观看| 欧美日韩在线播放三区四区| 亚洲成av人在线观看| 欧美人妇做爰xxxⅹ性高电影| 亚洲午夜激情网页| 91精品一区二区三区久久久久久 | 欧美电视剧在线观看完整版| 美女性感视频久久| 久久久高清一区二区三区| 国产成人午夜电影网| 国产精品久久久久婷婷| 91亚洲国产成人精品一区二三| 亚洲欧美偷拍另类a∨色屁股| 日本韩国视频一区二区| 午夜精品久久久久久不卡8050| 欧美一个色资源| 国产成人免费在线| 亚洲欧洲韩国日本视频| 欧美在线免费观看视频| 免费在线看一区| 欧美韩国日本一区| 欧美午夜精品久久久久久孕妇 | 麻豆中文一区二区| 日本一区二区成人在线| 欧洲av一区二区嗯嗯嗯啊| 美国十次了思思久久精品导航| 国产欧美日产一区| 欧美日韩日日骚| 国产精品一级黄| 天天综合色天天综合| 国产午夜久久久久| 欧美日韩一区二区在线观看视频 | 国产福利一区在线| 亚洲影视资源网| 久久人人超碰精品| 一本大道综合伊人精品热热| 久久精品国产精品亚洲综合| 亚洲免费观看在线观看| 精品国产免费人成在线观看| 色吊一区二区三区| 国产麻豆欧美日韩一区| 亚洲国产一区二区a毛片| 欧美激情在线一区二区三区| 欧美理论在线播放| 9色porny自拍视频一区二区| 男男成人高潮片免费网站| 亚洲一区二区偷拍精品| 国产午夜精品福利| 91精品欧美福利在线观看| 色先锋资源久久综合| 国产乱人伦精品一区二区在线观看| 一区二区欧美国产| 国产精品理论在线观看| 久久综合九色综合97_久久久| 欧美日韩电影一区| 日本韩国欧美一区二区三区| 高清视频一区二区| 国产成人在线免费| 韩国av一区二区三区四区| 手机精品视频在线观看| 亚洲一区二区免费视频| 亚洲女子a中天字幕| 国产精品私人自拍| 久久精品视频免费| 国产亚洲精品bt天堂精选| 精品国产伦一区二区三区观看方式 | 国产精品私人影院| 久久先锋影音av| 精品免费国产二区三区| 欧美成人高清电影在线| 欧美一卡在线观看| 欧美一区二区大片| 日韩一级免费观看| 精品免费视频.| 久久久国产午夜精品| 欧美极品xxx| 国产精品国产三级国产| 国产精品福利一区二区| 亚洲图片欧美激情| 一区二区三区日韩| 亚洲妇熟xx妇色黄| 精品一区二区三区免费视频| 国产中文字幕精品| 成人丝袜高跟foot| 一本一道综合狠狠老| 欧美日韩黄视频| 日韩欧美区一区二| 久久久99精品免费观看不卡| 国产精品美女久久久久久久网站| 国产精品的网站| 性感美女极品91精品| 免费成人结看片| 国产a视频精品免费观看| 97aⅴ精品视频一二三区| 欧美日韩精品专区| 久久亚洲免费视频| 亚洲欧洲精品一区二区精品久久久| 亚洲愉拍自拍另类高清精品| 久久精品国产亚洲一区二区三区| 国产99久久久国产精品潘金| 色8久久精品久久久久久蜜| 日韩视频在线你懂得| 日本一区二区免费在线| 亚洲小说欧美激情另类| 国产资源精品在线观看| 欧美制服丝袜第一页| 久久久久久影视| 亚洲第一电影网| 成人自拍视频在线观看| 欧美人妇做爰xxxⅹ性高电影| 久久久精品国产免大香伊| 亚洲午夜久久久| 成人国产精品免费| 精品国产一区二区三区久久影院| 亚洲另类在线一区| 国产成人无遮挡在线视频|