LPWSTR apxLogFile()

in src/native/windows/src/log.c [106:170]


LPWSTR apxLogFile(
    APXHANDLE hPool,
    LPCWSTR szPath,
    LPCWSTR szPrefix,
    LPCWSTR szName,
    BOOL bTimeStamp,
    DWORD dwRotate)
{
    LPWSTR sRet;
    WCHAR sPath[SIZ_PATHLEN];
    WCHAR sName[SIZ_PATHLEN];
    SYSTEMTIME sysTime;

    GetLocalTime(&sysTime);
    if (!szPath) {
        if (GetSystemDirectoryW(sPath, MAX_PATH) == 0)
            return INVALID_HANDLE_VALUE;
        lstrlcatW(sPath, MAX_PATH, LOG_PATH_DEFAULT);
    }
    else {
        lstrlcpyW(sPath, MAX_PATH, szPath);
    }
    if (!szPrefix)
        szPrefix = L"";
    if (!szName)
        szName   = L"";
    if (bTimeStamp) {
        if (dwRotate != 0 && dwRotate < 86400)
            StringCchPrintf(sName,
                  SIZ_PATHLEN,
                  L"\\%s%s" LOGF_EXR,
                  szPrefix,
                  szName,
                  sysTime.wYear,
                  sysTime.wMonth,
                  sysTime.wDay,
                  0,
                  0,
                  0);
        else
            StringCchPrintf(sName,
                      SIZ_PATHLEN,
                      L"\\%s%s" LOGF_EXT,
                      szPrefix,
                      szName,
                      sysTime.wYear,
                      sysTime.wMonth,
                      sysTime.wDay);
    }
    else {
        StringCchPrintf(sName,
                  SIZ_PATHLEN,
                  L"\\%s%s",
                  szPrefix,
                  szName);
    }
    sRet = apxPoolAlloc(hPool, (SIZ_PATHLEN) * sizeof(WCHAR));
    /* Set default level to info */
    SHCreateDirectoryExW(NULL, sPath, NULL);

    lstrlcpyW(sRet, SIZ_PATHMAX, sPath);
    lstrlcatW(sRet, SIZ_PATHMAX, sName);

    return sRet;
}