acl  3.5.3.0
acl_scan_dir.h 文件参考
#include <sys/stat.h>
#include "acl_define.h"
+ acl_scan_dir.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define ACL_SCAN_FLAG_RECURSIVE   (1 << 0) /* 是否做递归扫描 */
 
#define ACL_SCAN_FLAG_RMDIR   (1 << 1) /* 是否自动删除空目录 */
 
#define ACL_SCAN_CTL_END   0
 
#define ACL_SCAN_CTL_FN   1
 
#define ACL_SCAN_CTL_CTX   2
 
#define ACL_SCAN_CTL_RMDIR_FN   3
 

类型定义

typedef struct ACL_SCAN_DIR ACL_SCAN_DIR
 
typedef int(* ACL_SCAN_DIR_FN) (ACL_SCAN_DIR *scan, void *ctx)
 
typedef int(* ACL_SCAN_RMDIR_FN) (ACL_SCAN_DIR *scan, const char *path, void *ctx)
 

函数

ACL_API ACL_SCAN_DIRacl_scan_dir_open (const char *path, int recursive)
 
ACL_API ACL_SCAN_DIRacl_scan_dir_open2 (const char *path, unsigned flags)
 
ACL_API void acl_scan_dir_close (ACL_SCAN_DIR *scan)
 
ACL_API void acl_scan_dir_reset (ACL_SCAN_DIR *scan)
 
ACL_API void acl_scan_dir_ctl (ACL_SCAN_DIR *scan, int name,...)
 
ACL_API const char * acl_scan_dir_path (ACL_SCAN_DIR *scan)
 
ACL_API const char * acl_scan_dir_file (ACL_SCAN_DIR *scan)
 
ACL_API unsigned acl_scan_dir_ndirs (ACL_SCAN_DIR *scan)
 
ACL_API unsigned acl_scan_dir_nfiles (ACL_SCAN_DIR *scan)
 
ACL_API acl_int64 acl_scan_dir_nsize (ACL_SCAN_DIR *scan)
 
ACL_API int acl_scan_stat (ACL_SCAN_DIR *scan, struct acl_stat *sbuf)
 
ACL_API int acl_scan_dir_stat (ACL_SCAN_DIR *scan, struct acl_stat *sbuf)
 
ACL_API int acl_scan_dir_end (ACL_SCAN_DIR *scan)
 
ACL_API int acl_scan_dir_push (ACL_SCAN_DIR *scan, const char *path)
 
ACL_API ACL_SCAN_DIRacl_scan_dir_pop (ACL_SCAN_DIR *scan)
 
ACL_API const char * acl_scan_dir_next (ACL_SCAN_DIR *scan)
 
ACL_API const char * acl_scan_dir_next_file (ACL_SCAN_DIR *scan)
 
ACL_API const char * acl_scan_dir_next_dir (ACL_SCAN_DIR *scan)
 
ACL_API const char * acl_scan_dir_next_name (ACL_SCAN_DIR *scan, int *is_file)
 
ACL_API acl_int64 acl_scan_dir_size2 (ACL_SCAN_DIR *scan, int *nfile, int *ndir)
 
ACL_API acl_int64 acl_scan_dir_size (const char *pathname, int recursive, int *nfile, int *ndir)
 
ACL_API acl_int64 acl_scan_dir_rm2 (ACL_SCAN_DIR *scan, int *nfile, int *ndir)
 
ACL_API acl_int64 acl_scan_dir_rm (const char *pathname, int recursive, int *ndir, int *nfile)
 

宏定义说明

◆ ACL_SCAN_CTL_CTX

#define ACL_SCAN_CTL_CTX   2

设置用户参数

在文件 acl_scan_dir.h70 行定义.

◆ ACL_SCAN_CTL_END

#define ACL_SCAN_CTL_END   0

控制结束标志

在文件 acl_scan_dir.h68 行定义.

◆ ACL_SCAN_CTL_FN

#define ACL_SCAN_CTL_FN   1

设置 ACL_SCAN_DIR_FN 标志

在文件 acl_scan_dir.h69 行定义.

◆ ACL_SCAN_CTL_RMDIR_FN

#define ACL_SCAN_CTL_RMDIR_FN   3

设置删除目录回调函数

在文件 acl_scan_dir.h71 行定义.

◆ ACL_SCAN_FLAG_RECURSIVE

#define ACL_SCAN_FLAG_RECURSIVE   (1 << 0) /* 是否做递归扫描 */

在文件 acl_scan_dir.h46 行定义.

◆ ACL_SCAN_FLAG_RMDIR

#define ACL_SCAN_FLAG_RMDIR   (1 << 1) /* 是否自动删除空目录 */

在文件 acl_scan_dir.h47 行定义.

类型定义说明

◆ ACL_SCAN_DIR

typedef struct ACL_SCAN_DIR ACL_SCAN_DIR

目录扫描句柄类型定义

在文件 acl_scan_dir.h14 行定义.

◆ ACL_SCAN_DIR_FN

typedef int(* ACL_SCAN_DIR_FN) (ACL_SCAN_DIR *scan, void *ctx)

目录扫描过程中用户可以设置的回调函数类型定义

参数
scan{ACL_SCAN_DIR*} 目录扫描指针
ctx{void*} 用户参数指针

在文件 acl_scan_dir.h21 行定义.

◆ ACL_SCAN_RMDIR_FN

typedef int(* ACL_SCAN_RMDIR_FN) (ACL_SCAN_DIR *scan, const char *path, void *ctx)

目录扫描过程中,如果遇到空目录且用户设置了自动删除空目录标记,则回调此方法 通知用户删除指定的空目录

参数
scan{ACL_SCAN_DIR*} 目录扫描指针
ctx{void*} 用户参数指针

在文件 acl_scan_dir.h29 行定义.

函数说明

◆ acl_scan_dir_close()

ACL_API void acl_scan_dir_close ( ACL_SCAN_DIR scan)

关闭扫描句柄

参数
scan{ACL_SCAN_DIR*} 类型指针

◆ acl_scan_dir_ctl()

ACL_API void acl_scan_dir_ctl ( ACL_SCAN_DIR scan,
int  name,
  ... 
)

通过此接口设置扫描句柄的回调函数、参数等,当最后的一个控制标志 为 ACL_SCAN_CTL_END 时表示控制参数列表结束

参数
scan{ACL_SCAN_DIR*} 类型指针
name{int} 第一个控制项, ACL_SCAN_CTL_XXX

◆ acl_scan_dir_end()

ACL_API int acl_scan_dir_end ( ACL_SCAN_DIR scan)

目录是否扫描完毕

参数
scan{ACL_SCAN_DIR*} 类型指针
返回
{int} 0: 表示未扫描完毕; !=0: 表示扫描完毕

◆ acl_scan_dir_file()

ACL_API const char* acl_scan_dir_file ( ACL_SCAN_DIR scan)

当前所扫描的文件名,如果扫描的对象不是文件,则返回 "\0"

参数
scan{ACL_SCAN_DIR*} 类型指针
返回
{const char*} 文件名

◆ acl_scan_dir_ndirs()

ACL_API unsigned acl_scan_dir_ndirs ( ACL_SCAN_DIR scan)

当前已经扫描的目录总个数

参数
scan{ACL_SCAN_DIR*}
返回
{unsigned} 目录总个数

◆ acl_scan_dir_next()

ACL_API const char* acl_scan_dir_next ( ACL_SCAN_DIR scan)

获得 scan 当前所在路径中下一个路径名或文件名, 注意,该函数内部不会递归扫描, 即 acl_scan_dir_open 中的参数 recursive 对该函数无效 1、 ".." 与 "." 不包含在内 2、 仅返回名称, 不包括路径, 路径可以由 acl_scan_dir_path 获得

参数
scan{ACL_SCAN_DIR*} 指针地址
返回
{const char*} 为目录名称或文件名称, != NULL: OK; == NULL, 扫描完毕

◆ acl_scan_dir_next_dir()

ACL_API const char* acl_scan_dir_next_dir ( ACL_SCAN_DIR scan)

获得下一个目录名(不包含路径名, 相对路径名可以通过 acl_scan_dir_path 获得), 该函数内部支持递归扫描目录功能, acl_scan_dir_open 中的参数 recursive 对该函数有效

参数
scan{ACL_SCAN_DIR*} 类型指针
返回
{const char*} 返回下一个扫描的目录名: !NULL, OK; NULL 扫描完毕, 应结束扫描

◆ acl_scan_dir_next_file()

ACL_API const char* acl_scan_dir_next_file ( ACL_SCAN_DIR scan)

获得下一个文件名(不包含路径名, 相对路径名可以通过 acl_scan_dir_path 获得), 该函数内部支持递归扫描目录功能, acl_scan_dir_open 中的参数 recursive 对该函数有效

参数
scan{ACL_SCAN_DIR*} 类型指针
返回
{const char*} 返回下一个扫描的文件名: !NULL, OK; NULL 扫描完毕,应结束扫描

◆ acl_scan_dir_next_name()

ACL_API const char* acl_scan_dir_next_name ( ACL_SCAN_DIR scan,
int *  is_file 
)

获得下一个目录名或文件名(不包含路径名, 相对路径名可以通过 acl_scan_dir_path 获得), 该函数内部支持递归扫描目录功能, acl_scan_dir_open 中的参数 recursive 对该函数有效

参数
scan{ACL_SCAN_DIR*} 类型指针
is_file{int*} 当返回结果非空时,该地址存储的值表示所扫描到的是否是 文件,如果为 true 则为文件,否则为目录
返回
{const char*} 返回下一个扫描的目录名或文件名: !NULL, OK; NULL 扫描完毕, 应结束扫描

◆ acl_scan_dir_nfiles()

ACL_API unsigned acl_scan_dir_nfiles ( ACL_SCAN_DIR scan)

当前已经扫描的文件总个数

参数
scan{ACL_SCAN_DIR*}
返回
{unsigned} 文件总个数

◆ acl_scan_dir_nsize()

ACL_API acl_int64 acl_scan_dir_nsize ( ACL_SCAN_DIR scan)

当前已经扫描的文件大小总和

参数
scan{ACL_SCAN_DIR*}
返回
{acl_int64} -1: Error; >= 0: Ok

◆ acl_scan_dir_open()

ACL_API ACL_SCAN_DIR* acl_scan_dir_open ( const char *  path,
int  recursive 
)

打开扫描路径, 为整个 acl_scan_dir 函数库的初始化函数

参数
path{const char*} 要打开的路径名称
recursive{int} 是否需要递归扫描子目录
返回
{ACL_SCAN_DIR*} NULL: Err; != NULL, OK

◆ acl_scan_dir_open2()

ACL_API ACL_SCAN_DIR* acl_scan_dir_open2 ( const char *  path,
unsigned  flags 
)

打开扫描路径, 为整个 acl_scan_dir 函数库的初始化函数

参数
path{const char*} 要打开的路径名称
flags{unsigned} 标志位, 见 ACL_SCAN_FLAG_XXX
返回
{ACL_SCAN_DIR*} NULL: Err; != NULL, OK

◆ acl_scan_dir_path()

ACL_API const char* acl_scan_dir_path ( ACL_SCAN_DIR scan)

获得当前状态下的相对路径(相对于程序调用 acl_scan_dir_open 函数时的程序运行路径)

参数
scan{ACL_SCAN_DIR*} 类型指针
返回
{const char*} 相对路径, == NULL: err; != NULL, OK

◆ acl_scan_dir_pop()

ACL_API ACL_SCAN_DIR* acl_scan_dir_pop ( ACL_SCAN_DIR scan)

弹出下一个路径

参数
scan{ACL_SCAN_DIR*} 类型指针
返回
{ACL_SCAN_DIR*} 返回堆栈中的下一个对象, == NULL: 结束; != NULL, OK

◆ acl_scan_dir_push()

ACL_API int acl_scan_dir_push ( ACL_SCAN_DIR scan,
const char *  path 
)

将需要进行扫描的相对路径压栈

参数
scan{ACL_SCAN_DIR*} 类型指针
path{const char*} 需要压栈的相对路径
返回
{int} 0: OK; -1: Err

◆ acl_scan_dir_reset()

ACL_API void acl_scan_dir_reset ( ACL_SCAN_DIR scan)

将目录扫描句柄的与统计信息相关的变量置0

参数
scan{ACL_SCAN_DIR*} 类型指针

◆ acl_scan_dir_rm()

ACL_API acl_int64 acl_scan_dir_rm ( const char *  pathname,
int  recursive,
int *  ndir,
int *  nfile 
)

删除所给路径下所有的文件及目录

参数
pathname{const char*} 路径名
recursive{int} 是否递归删除所有子目录及子目录下的文件
ndir{int*} 若该参数非空,过程结束后 *ndir 等于总共删除的目录数目
nfile{int*} 若该参数非空,过程结束后 *nfile 等于总共删除的文件数目
返回
{acl_int64} >= 0: 实际删除的文件数与目录数的尺寸大小之和(字节); < 0: 出错.

◆ acl_scan_dir_rm2()

ACL_API acl_int64 acl_scan_dir_rm2 ( ACL_SCAN_DIR scan,
int *  nfile,
int *  ndir 
)

删除所给路径下所有的文件及目录

参数
nfile{int*} 扫描完后记录所扫描的文件总数
ndir{int*} 扫描完后记录所扫描的目录总数 该函数内部支持递归扫描目录功能, acl_scan_dir_open 中的参数 recursive 对该函数有效
scan{ACL_SCAN_DIR*} 打开目录时的扫描句柄
返回
{acl_int64} >= 0: 实际删除的文件数与目录数的尺寸大小之和(字节); < 0: 出错.

◆ acl_scan_dir_size()

ACL_API acl_int64 acl_scan_dir_size ( const char *  pathname,
int  recursive,
int *  nfile,
int *  ndir 
)

取得当前目录下所占磁盘空间大小(以字节计算)

参数
pathname{const char*} 目录路径名
recursive{int} 是否要递归扫描该目录下的所有子目录
nfile{int*} 扫描完后记录所扫描的文件总数
ndir{int*} 扫描完后记录所扫描的目录总数
返回
{acl_int64} -1: Error, >= 0: Ok

◆ acl_scan_dir_size2()

ACL_API acl_int64 acl_scan_dir_size2 ( ACL_SCAN_DIR scan,
int *  nfile,
int *  ndir 
)

取得当前目录下所占磁盘空间大小(以字节计算) 该函数内部支持递归扫描目录功能, acl_scan_dir_open 中的参数 recursive 对该函数有效

参数
scan{ACL_SCAN_DIR*} 打开目录时的扫描句柄
nfile{int*} 扫描完后记录所扫描的文件总数
ndir{int*} 扫描完后记录所扫描的目录总数
返回
{acl_int64} -1: Error; >= 0: Ok

◆ acl_scan_dir_stat()

ACL_API int acl_scan_dir_stat ( ACL_SCAN_DIR scan,
struct acl_stat *  sbuf 
)

取得当前正在扫描的目录节点的属性信息,该 API 不同于 acl_scan_stat

参数
scan{ACL_SCAN_DIR*} 类型指针
sbuf{struct acl_stat*} 类型指针
返回
{int} 0: Ok, -1: Error

◆ acl_scan_stat()

ACL_API int acl_scan_stat ( ACL_SCAN_DIR scan,
struct acl_stat *  sbuf 
)

取得当前扫描到的文件或目录的属性信息,类似于标准的 stat() 函数

参数
scan{ACL_SCAN_DIR*} 类型指针
sbuf{struct acl_stat*} 类型指针
返回
{int} 0: Ok, -1: Error