XN_C_API XnStatus xnLogSetOutputFolder(const XnChar* strOutputFolder) { XnStatus nRetVal = XN_STATUS_OK; // check if folder exists XnBool bDirExists = FALSE; nRetVal = xnOSDoesDirecotyExist(strOutputFolder, &bDirExists); XN_IS_STATUS_OK(nRetVal); if (!bDirExists) { // create it nRetVal = xnOSCreateDirectory(strOutputFolder); XN_IS_STATUS_OK(nRetVal); } // place it in a temp buffer, just to make sure everything succeeds XnChar strDirName[XN_FILE_MAX_PATH]; nRetVal = xnOSGetFullPathName(strOutputFolder, strDirName, XN_FILE_MAX_PATH); XN_IS_STATUS_OK(nRetVal); nRetVal = xnOSStrAppend(strDirName, XN_FILE_DIR_SEP, XN_FILE_MAX_PATH); XN_IS_STATUS_OK(nRetVal); // OK. replace xnOSStrCopy(g_logData.m_strLogDir, strDirName, XN_FILE_MAX_PATH); // restart file writer xnLogStartNewFile(); return (XN_STATUS_OK); }
XnStatus xnLogCreateFile(const XnChar* csFileName, XN_FILE_HANDLE* phFile) { // create the log directory (to make sure it exists) xnOSCreateDirectory(g_xnLoggerData.m_csLogDir); // now open the file return xnOSOpenFile(csFileName, XN_OS_FILE_WRITE | XN_OS_FILE_TRUNCATE, phFile); }
int findUniqueFileName() { xnOSCreateDirectory(CAPTURED_FRAMES_DIR_NAME); int num = g_Capture.nCapturedFrameUniqueID; XnBool bExist = FALSE; XnStatus nRetVal = XN_STATUS_OK; XnChar csColorFileName[XN_FILE_MAX_PATH]; XnChar csDepthFileName[XN_FILE_MAX_PATH]; XnChar csIRFileName[XN_FILE_MAX_PATH]; for (;;) { // check color getColorFileName(num, csColorFileName); nRetVal = xnOSDoesFileExist(csColorFileName, &bExist); if (nRetVal != XN_STATUS_OK) break; if (!bExist) { // check depth getDepthFileName(num, csDepthFileName); nRetVal = xnOSDoesFileExist(csDepthFileName, &bExist); if (nRetVal != XN_STATUS_OK || !bExist) break; } if (!bExist) { // check IR getIRFileName(num, csIRFileName); nRetVal = xnOSDoesFileExist(csIRFileName, &bExist); if (nRetVal != XN_STATUS_OK || !bExist) break; } ++num; } return num; }