Ejemplo n.º 1
0
/*************************************************************************
 * PathCombine	 [SHELL32.37]
 */
LPVOID WINAPI PathCombineAW(
	LPVOID szDest,
	LPCVOID lpszDir,
	LPCVOID lpszFile)
{
	if (SHELL_OsIsUnicode())
	  return PathCombineW( szDest, lpszDir, lpszFile );
	return PathCombineA( szDest, lpszDir, lpszFile );
}
Ejemplo n.º 2
0
HRESULT
CMayaManager::UI_SaveOptions()
{
    HRESULT hr= S_OK;
    LPDXCCPROPERTYBAG pBag= NULL;
    char szSettingFile[MAX_PATH];
    MString mszAppDir;

    MGlobal::executeCommand( "internalVar -userAppDir", mszAppDir, false, false );
    PathCombineA( szSettingFile, mszAppDir.asChar(), "DXUIOptions.xml" );
    if(DXCC_SUCCEEDED(DXCCCreatePropertyBag(&pBag)))
    {
        RECT Location;
        GetWindowRect(g_Viewer.GetRenderWindow(), &Location);

        DXCCPROPERTY_KEY key;
        BOOL boolValue;
        INT intValue;

        pBag->AddProperty(PROPERTY_VIEWEROPEN, &key);
        boolValue= UI_GetViewerStartupState();
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &boolValue);

        pBag->AddProperty(PROPERTY_VIEWERWND, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_STRING, &m_ViewerBinding);

        pBag->AddProperty(PROPERTY_VIEWERPOSL, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_INT, &Location.left);

        pBag->AddProperty(PROPERTY_VIEWERPOST, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_INT, &Location.top);

        pBag->AddProperty(PROPERTY_VIEWERPOSR, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_INT, &Location.right);

        pBag->AddProperty(PROPERTY_VIEWERPOSB, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_INT, &Location.bottom);

        pBag->AddProperty(PROPERTY_RTPREVIEWING, &key);
        boolValue= UI_GetPreviewState();
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &boolValue);

        hr= DXCCSavePropertyBagAsFile(pBag, szSettingFile, VIEWER_OPTIONS_TYPENAME, VIEWER_OPTIONS_VERSION);
        if(DXCC_FAILED(hr))
            DXCC_GOTO_EXIT(e_Exit, FALSE);
    }

e_Exit:
    DXCC_RELEASE(pBag);

    return hr;
}
Ejemplo n.º 3
0
void _fastcall 
    CC_Put_globals_Hook(DWORD OutClass)
{
	CHAR szConfigPath[MAX_PATH];
	PathCombineA(szConfigPath, g_szDllPath, "YDTrigger.ini");

    CreateDefine(BlizzardJ, USE_BJ_ANTI_LEAK);
    CreateDefine(BlizzardJ, USE_BJ_OPTIMIZATION);
    CreateDefine(BlizzardJ, USE_BJ_OPTIMIZATION_PRO);
    CreateDefine(BlizzardJ, USE_BJ_INLINE);

    CC_PutString(OutClass, 0, "#include <YDTrigger/Import.h>", 1);
    CC_PutString(OutClass, 0, "#include <YDTrigger/YDTrigger.h>", 1);
    CC_PutString(OutClass, 0, "globals", 1);
    ((DWORD*)OutClass)[3]++;
}
String openTemporaryFile(const String&, PlatformFileHandle& handle)
{
    handle = INVALID_HANDLE_VALUE;

    char tempPath[MAX_PATH];
    int tempPathLength = ::GetTempPathA(WTF_ARRAY_LENGTH(tempPath), tempPath);
    if (tempPathLength <= 0 || tempPathLength > WTF_ARRAY_LENGTH(tempPath))
        return String();

    HCRYPTPROV hCryptProv = 0;
    if (!CryptAcquireContext(&hCryptProv, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
        return String();

    char proposedPath[MAX_PATH];
    while (1) {
        char tempFile[] = "XXXXXXXX.tmp"; // Use 8.3 style name (more characters aren't helpful due to 8.3 short file names)
        const int randomPartLength = 8;
        if (!CryptGenRandom(hCryptProv, randomPartLength, reinterpret_cast<BYTE*>(tempFile)))
            break;

        // Limit to valid filesystem characters, also excluding others that could be problematic, like punctuation.
        // don't include both upper and lowercase since Windows file systems are typically not case sensitive.
        const char validChars[] = "0123456789abcdefghijklmnopqrstuvwxyz";
        for (int i = 0; i < randomPartLength; ++i)
            tempFile[i] = validChars[tempFile[i] % (sizeof(validChars) - 1)];

        ASSERT(strlen(tempFile) == sizeof(tempFile) - 1);

        if (!PathCombineA(proposedPath, tempPath, tempFile))
            break;
 
        // use CREATE_NEW to avoid overwriting an existing file with the same name
        handle = CreateFileA(proposedPath, GENERIC_READ | GENERIC_WRITE, 0, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
        if (!isHandleValid(handle) && GetLastError() == ERROR_ALREADY_EXISTS)
            continue;

        break;
    }

    CryptReleaseContext(hCryptProv, 0);

    if (!isHandleValid(handle))
        return String();

    return String::fromUTF8(proposedPath);
}
Ejemplo n.º 5
0
bool WebIO::SetRelativeDirectory(std::string directory)
{
	std::string currentDir;

	if (WebIO::GetDirectory(currentDir))
	{
		WebIO::FormatPath(directory, true);
		WebIO::FormatPath(currentDir, true);

		char path[MAX_PATH] = { 0 };
		PathCombineA(path, currentDir.c_str(), directory.c_str());

		std::string newPath(path);
		WebIO::FormatPath(newPath, false);

		return WebIO::SetDirectory(newPath);
	}

	return false;
}
Ejemplo n.º 6
0
int _tmain(int argc, _TCHAR* argv[])
{
  char *path = NULL, *pathDir = NULL;
  FILE *fpMview = NULL;
  FILE *fpDst = NULL;

  DWORD flag, sizeData, sizeDataDecompressed;

  if(argc<2)goto err;
  fpMview = _wfopen(argv[1], L"rb");
  if(fpMview==NULL)goto err;

  path = (char *)malloc(4096);
  if(path==NULL)goto err;
  pathDir = (char *)malloc(4096);
  if(pathDir==NULL)goto err;

  buf = (BYTE *)malloc(bufSize);
  if(buf==NULL)goto err;

  while(1)
  {
    flag=0;
    sizeData=0;
    sizeDataDecompressed=0;

    int numPath = freadNullStr(fpMview, path, 4096);
    if(numPath==0)goto err;

    SanitizePath(path);

    freadNullStr(fpMview, NULL, 0);
    if(fread(&flag, 1, 4, fpMview)!=4)goto err;
    if(fread(&sizeData, 1, 4, fpMview)!=4)goto err;
    if(fread(&sizeDataDecompressed, 1, 4, fpMview)!=4)goto err;
    
    if(flag & 0x1)printf("\"%s\"  flag=%u (compressed!), size=%u, decompressedSize=%u\n", path, flag, sizeData, sizeDataDecompressed);
    else          printf("\"%s\"  flag=%u, size=%u\n", path, flag, sizeData);

    if(PathCombineA(path, "out\\", path)==NULL)goto err;
    strcpy_s(pathDir, 4096, path);

    PathRemoveFileSpecA(pathDir);
    PathAddBackslashA(pathDir);
    BOOL bRet = MakeSureDirectoryPathExists(pathDir);

    fpDst = fopen(path, "wb");
    if(fpDst==NULL)goto err;

    if(!FILEtoFILE(fpDst, fpMview, sizeData))goto err;

    fclose(fpDst);
  }
  
  if(buf)free(buf);
  if(path)free(path);
  if(pathDir)free(pathDir);
  if(fpMview)fclose(fpMview);
  if(fpDst)fclose(fpDst);
	return 0;

err:
  if(buf)free(buf);
  if(path)free(path);
  if(pathDir)free(pathDir);
  if(fpMview)fclose(fpMview);
  if(fpDst)fclose(fpDst);
  return 0;
}
Ejemplo n.º 7
0
HRESULT
CMayaManager::UI_LoadOptions()
{
    HRESULT hr= S_OK;
    LPDXCCPROPERTYBAG pBag= NULL;
    char szSettingFile[MAX_PATH];
    MString mszAppDir;
    UINT iProperty;

    MGlobal::executeCommand( "internalVar -userAppDir", mszAppDir, false, false );
    PathCombineA( szSettingFile, mszAppDir.asChar(), "DXUIOptions.xml" );
    if(!DXCC_SUCCEEDED(DXCCLoadPropertyBagFromFile(szSettingFile, VIEWER_OPTIONS_TYPENAME, VIEWER_OPTIONS_VERSION, &pBag)))
    {
        UI_SaveOptions();

        DXCCCreatePropertyBag(&pBag);
    }


    {
        DXCCPROPERTY_KEY key;
        DXCCPROPERTY_DESC desc;
        LPCVOID value;


        key= pBag->GetKey(PROPERTY_VIEWEROPEN);
        desc= pBag->GetPropertyDesc(key);
        pBag->GetPropertyValueAsData(key, &value);
        if(key && *(BOOL*)value)
        {
            char PanelName[MAX_PATH];
            PanelName[0]= '\0';

            MGlobal::executeCommand ("DirectX_SetViewerStartupState(1)");

            key= pBag->GetKey(PROPERTY_VIEWERWND);
            desc= pBag->GetPropertyDesc(key);
            pBag->GetPropertyValueAsData(key, &value);
            if(key)
            {

                BindViewerToPanel((LPCSTR)value);

                if(0 == lstrcmpiA((LPCSTR)value, "floating"))
                {
                    RECT WndRect = {0,0, 640, 480};

                    key= pBag->GetKey(PROPERTY_VIEWERPOSL);
                    desc= pBag->GetPropertyDesc(key);
                    pBag->GetPropertyValueAsData(key, &value);
                    if(key)
                    {
                        WndRect.left= *(INT*)value;
                    }

                    key= pBag->GetKey(PROPERTY_VIEWERPOST);
                    desc= pBag->GetPropertyDesc(key);
                    pBag->GetPropertyValueAsData(key, &value);
                    if(key)
                    {
                        WndRect.top= *(INT*)value;
                    }

                    key= pBag->GetKey(PROPERTY_VIEWERPOSR);
                    desc= pBag->GetPropertyDesc(key);
                    pBag->GetPropertyValueAsData(key, &value);
                    if(key)
                    {
                        WndRect.right= *(INT*)value;
                    }

                    key= pBag->GetKey(PROPERTY_VIEWERPOSB);
                    desc= pBag->GetPropertyDesc(key);
                    pBag->GetPropertyValueAsData(key, &value);
                    if(key)
                    {
                        WndRect.bottom= *(INT*)value;
                    }

                    MoveWindow(g_Viewer.GetRenderWindow(),
                               WndRect.left,
                               WndRect.top,
                               WndRect.right - WndRect.left,
                               WndRect.bottom - WndRect.top,
                               true);
                }
            }
        }

        key= pBag->GetKey(PROPERTY_RTPREVIEWING);
        desc= pBag->GetPropertyDesc(key);
        pBag->GetPropertyValueAsData(key, &value);
        if(key)
        {
            CStringA cmd;
            cmd.Format("menuItem -e -cb %d  $g_dxPreviewToggle", (*(BOOL*)value));

            MGlobal::executeCommand (cmd.GetString());
        }

        UI_SetPreviewState(UI_GetPreviewState());
    }

    return hr;
}
Ejemplo n.º 8
0
HRESULT
CMayaManager::GetExportOptions(bool forcePopup)
{
    HRESULT hr= S_OK;
    LPDXCCPROPERTYBAG pBag= NULL;
    UINT iProperty;
    char szSettingFile[MAX_PATH];
    MString mszAppDir;
    DXCCPROPERTY_KEY key= NULL;
    LPCVOID value= NULL;

    ZeroMemory(&ExportOpts, sizeof(DXCCSaveSceneArgs));

    MGlobal::executeCommand( "internalVar -userAppDir", mszAppDir, false, false );
    PathCombineA( szSettingFile, mszAppDir.asChar(), "DXCCExportOptions.xml" );

    if(DXCC_SUCCEEDED(DXCCLoadPropertyBagFromFile(szSettingFile, EXPORTER_OPTIONS_TYPENAME, EXPORTER_OPTIONS_VERSION, &pBag)))
    {
        key= pBag->GetKey(PROPERTY_POPUP);
        if(key)
        {
            pBag->GetPropertyValueAsData(key, &value);
            if(forcePopup || *(BOOL*)value)
            {
                DXCCShowPropertyBagDialog( pBag, EXPORTER_OPTIONS_TYPENAME, M3dView::applicationShell(), TRUE);
            }
        }

        DXCCSavePropertyBagAsFile( pBag, szSettingFile, EXPORTER_OPTIONS_TYPENAME, EXPORTER_OPTIONS_VERSION);
    }
    else
    {
        const BOOL True= true;
        const BOOL False= false;

        DXCCCreatePropertyBag(&pBag);
        pBag->AddProperty(PROPERTY_POPUP, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &True);
        pBag->AddProperty(PROPERTY_MESH, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &True);
        pBag->AddProperty(PROPERTY_ADJACENCIES, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &True);
        pBag->AddProperty(PROPERTY_MATERIALS, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &True);

        pBag->AddProperty(PROPERTY_EFFECTPATH_BOOL, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &False);
        pBag->AddProperty(PROPERTY_EFFECTPATH_TEXT, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_STRING, "");

        pBag->AddProperty(PROPERTY_TEXTUREPATH_BOOL, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &False);
        pBag->AddProperty(PROPERTY_TEXTUREPATH_TEXT, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_STRING, "");

        pBag->AddProperty(PROPERTY_RELATIVEPATH_BOOL, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &False);

        pBag->AddProperty(PROPERTY_ANIMATION, &key);
        pBag->SetPropertyValueAsData(key, DXCCPD_BOOL, &True);

        hr= DXCCShowPropertyBagDialog(pBag, EXPORTER_OPTIONS_TYPENAME, NULL, TRUE);
        if(DXCC_FAILED(hr))
            DXCC_GOTO_EXIT(e_Exit, FALSE);

        hr= DXCCSavePropertyBagAsFile( pBag, szSettingFile, EXPORTER_OPTIONS_TYPENAME, EXPORTER_OPTIONS_VERSION);
        if(DXCC_FAILED(hr))
            DXCC_GOTO_EXIT(e_Exit, FALSE);
    }

    key= pBag->GetKey(PROPERTY_MESH);
    pBag->GetPropertyValueAsData(key, &value);
    ExportOpts.NoMeshes= ! *(BOOL*)value;

    key= pBag->GetKey(PROPERTY_ADJACENCIES);
    pBag->GetPropertyValueAsData(key, &value);
    ExportOpts.NoMeshAdjacencies= ! *(BOOL*)value;

    key= pBag->GetKey(PROPERTY_MATERIALS);
    pBag->GetPropertyValueAsData(key, &value);
    ExportOpts.NoMeshMaterials= ! *(BOOL*)value;

    key= pBag->GetKey(PROPERTY_EFFECTPATH_BOOL);
    pBag->GetPropertyValueAsData(key, &value);
    ExportOpts.ReplaceEffectPaths= *(BOOL*)value;

    key= pBag->GetKey(PROPERTY_EFFECTPATH_TEXT);
    pBag->GetPropertyValueAsData(key, &value);
    StringCchCopyA(ExportOpts.ReplacementEffectPath, MAX_PATH, (LPCSTR)value);

    key= pBag->GetKey(PROPERTY_TEXTUREPATH_BOOL);
    pBag->GetPropertyValueAsData(key, &value);
    ExportOpts.ReplaceTexturePaths= *(BOOL*)value;

    key= pBag->GetKey(PROPERTY_TEXTUREPATH_TEXT);
    pBag->GetPropertyValueAsData(key, &value);
    StringCchCopyA(ExportOpts.ReplacementTexturePath, MAX_PATH, (LPCSTR)value);

    key= pBag->GetKey(PROPERTY_RELATIVEPATH_BOOL);
    pBag->GetPropertyValueAsData(key, &value);
    ExportOpts.RelativePaths= *(BOOL*)value;

    key= pBag->GetKey(PROPERTY_ANIMATION);
    pBag->GetPropertyValueAsData(key, &value);
    ExportOpts.NoAnimation= ! *(BOOL*)value;

e_Exit:
    DXCC_RELEASE(pBag);

    return hr;
}
Ejemplo n.º 9
0
bool StringPathAppend(std::string* path, const std::string& more)
{
	std::unique_ptr<char[]> buffer(new char[MAX_PATH]);
	*path = PathCombineA(buffer.get(), path->c_str(), more.c_str());
	return !path->empty();
}
Ejemplo n.º 10
0
bool StringPathCombine(std::string* dest, const std::string& path, const std::string& more)
{
	std::unique_ptr<char[]> buffer(new char[MAX_PATH]);
	*dest = PathCombineA(buffer.get(), path.c_str(), more.c_str());
	return !dest->empty();
}
Ejemplo n.º 11
0
BOOL FilesPathCombineA(LPSTR dest, const LPSTR dir, const LPSTR file)
{
	LPSTR p = (LPSTR)file;
	if(p != NULL)while(*p == '\\' || *p == '/')p++;
	return PathCombineA(dest, dir, p) == NULL ? FALSE : TRUE;
}