代码如下:
#include
#define VALID_FILE_HEAD "converted-"
#define VALID_FILE_TAIL ".h264"
#define MAX_BUFFER_SIZE 1024
/*
enum
{
DT_UNKNOWN = 0,
# define DT_UNKNOWN DT_UNKNOWN
DT_FIFO = 1,
# define DT_FIFO DT_FIFO
DT_CHR = 2,
# define DT_CHR DT_CHR
DT_DIR = 4,
# define DT_DIR DT_DIR
DT_BLK = 6,
# define DT_BLK DT_BLK
DT_REG = 8,
# define DT_REG DT_REG
DT_LNK = 10,
# define DT_LNK DT_LNK
DT_SOCK = 12,
# define DT_SOCK DT_SOCK
DT_WHT = 14
};
*/
int process_directory(const int view, const char* pPath)
{
DIR *pDir;
struct dirent *pFile;
int validCount = 0;
if ((pDir=opendir(pPath)) == NULL)
{
perror("Open dir error...");
exit(1);
}
while ((pFile=readdir(pDir)) != NULL)
{
if (strcmp(pFile->d_name, ".") == 0 || strcmp(pFile->d_name, "..") == 0)
{
///current dir OR parrent dir
continue;
}
else if (pFile->d_type == DT_REG)
{
///file
char fullPath[MAX_BUFFER_SIZE];
sprintf(fullPath, "%s/%s", pPath, pFile->d_name);
//GH_LOG_TEXT(fullPath);
//限定文件头、文件尾
if ( strstr(pFile->d_name, VALID_FILE_HEAD) != NULL
&& strstr(pFile->d_name, VALID_FILE_TAIL) != NULL)
{
gh_ai_channel_process_ghinfer (view, (const char*)fullPath, validCount);
validCount ++;
}
}
else if (pFile->d_type == DT_LNK)
{
///link file
printf("d_name:%s/%s\n", pPath, pFile->d_name);
}
else if (pFile->d_type == DT_DIR)
{
///dir
char subDir[MAX_BUFFER_SIZE];
memset(subDir, 0, MAX_BUFFER_SIZE);
sprintf(subDir, "%s/%s", pPath, pFile->d_name);
//process_directory(view, subDir);
}
}
closedir(pDir);
}