Example #1
0
int loadQueue(const char *pPath, TaskQueue &queue)
{
    DIR *pDir = opendir(pPath);
    if (!pDir){
        if (errno == ENOTDIR && access(pPath, F_OK) == 0) {
            char *pFile = new char[strlen(pPath) + 1];
            strcpy(pFile, pPath);
            queue.pushBack(pFile);
            return 0;
        }
        return -1;
    }

    struct dirent *de = NULL;
    while ((de=readdir(pDir))!=NULL) {
        if (de->d_type != DT_REG && de->d_type != DT_LNK) {
            continue;
        }
        char *pFile = new char[strlen(pPath) + strlen(de->d_name) + 2];
        snprintf(pFile, strlen(pPath) + strlen(de->d_name) + 2, "%s/%s", pPath, de->d_name);
        queue.pushBack(pFile);
        TNOTE("find file %s", pFile);
    }
    closedir(pDir);
    return 0;
}