Lines Matching refs:pDir

215 int rtDirNativeOpen(PRTDIR pDir, char *pszPathBuf)
223 int rc = rtPathToNative(&pszNativePath, pDir->pszPath, NULL);
226 pDir->pDir = opendir(pszNativePath);
227 if (pDir->pDir)
232 pDir->fDataUnread = false; /* spelling it out */
237 rtPathFreeNative(pszNativePath, pDir->pszPath);
244 RTDECL(int) RTDirClose(PRTDIR pDir)
249 if (!pDir)
251 if (pDir->u32Magic != RTDIR_MAGIC)
253 AssertMsgFailed(("Invalid pDir=%p\n", pDir));
261 pDir->u32Magic = RTDIR_MAGIC_DEAD;
262 if (closedir(pDir->pDir))
265 AssertMsgFailed(("closedir(%p) -> errno=%d (%Rrc)\n", pDir->pDir, errno, rc));
268 RTMemFree(pDir);
278 * @param pDir the open directory. Fully validated.
280 static int rtDirReadMore(PRTDIR pDir)
288 if (!pDir->fDataUnread)
291 int rc = readdir_r(pDir->pDir, &pDir->Data, &pResult);
308 if (!pDir->pszName)
310 int rc = rtPathFromNative(&pDir->pszName, pDir->Data.d_name, pDir->pszPath);
313 pDir->pszName = NULL;
316 pDir->cchName = strlen(pDir->pszName);
318 if ( !pDir->pfnFilter
319 || pDir->pfnFilter(pDir, pDir->pszName))
321 rtPathFreeIprt(pDir->pszName, pDir->Data.d_name);
322 pDir->pszName = NULL;
323 pDir->fDataUnread = false;
326 pDir->fDataUnread = true;
359 RTDECL(int) RTDirRead(PRTDIR pDir, PRTDIRENTRY pDirEntry, size_t *pcbDirEntry)
364 if (!rtDirValidHandle(pDir))
381 int rc = rtDirReadMore(pDir);
387 const char *pszName = pDir->pszName;
388 const size_t cchName = pDir->cchName;
397 pDirEntry->INodeId = pDir->Data.d_ino; /* may need #ifdefing later */
399 pDirEntry->enmType = rtDirType(pDir->Data.d_type);
408 pDir->fDataUnread = false;
409 rtPathFreeIprt(pDir->pszName, pDir->Data.d_name);
410 pDir->pszName = NULL;
417 pDir, pDir->pszPath, pDirEntry, RT_SUCCESS(rc) ? pDirEntry->szName : "<failed>",
456 RTDECL(int) RTDirReadEx(PRTDIR pDir, PRTDIRENTRYEX pDirEntry, size_t *pcbDirEntry, RTFSOBJATTRADD enmAdditionalAttribs, uint32_t fFlags)
461 if (!rtDirValidHandle(pDir))
482 int rc = rtDirReadMore(pDir);
488 const char *pszName = pDir->pszName;
489 const size_t cchName = pDir->cchName;
505 size_t cch = cchName + pDir->cchPath + 1;
509 memcpy(pszNamePath, pDir->pszPath, pDir->cchPath);
510 memcpy(pszNamePath + pDir->cchPath, pszName, cchName + 1);
518 rtDirSetDummyInfo(&pDirEntry->Info, rtDirType(pDir->Data.d_type));
526 pDir->fDataUnread = false;
527 rtPathFreeIprt(pDir->pszName, pDir->Data.d_name);
528 pDir->pszName = NULL;