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; }