Author: akhaldi
Date: Mon Feb 6 18:48:50 2012
New Revision: 55466
URL:
http://svn.reactos.org/svn/reactos?rev=55466&view=rev
Log:
[SXS]
* Sync to Wine 1.3.37.
Added:
trunk/reactos/dll/win32/sxs/cache.c (with props)
trunk/reactos/dll/win32/sxs/msvchelper.h (with props)
Modified:
trunk/reactos/dll/win32/sxs/CMakeLists.txt
trunk/reactos/dll/win32/sxs/sxs.c
trunk/reactos/dll/win32/sxs/sxs.rbuild
trunk/reactos/dll/win32/sxs/sxs.spec
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/sxs/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sxs/CMakeLists.t…
==============================================================================
--- trunk/reactos/dll/win32/sxs/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/sxs/CMakeLists.txt [iso-8859-1] Mon Feb 6 18:48:50 2012
@@ -5,6 +5,7 @@
spec2def(sxs.dll sxs.spec)
list(APPEND SOURCE
+ cache.c
sxs.c
${CMAKE_CURRENT_BINARY_DIR}/sxs_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/sxs.def)
@@ -14,7 +15,12 @@
target_link_libraries(sxs wine)
-add_importlibs(sxs kernel32 ntdll)
+if(MSVC)
+ set_source_files_properties(cache.c PROPERTIES COMPILE_FLAGS /FImsvchelper.h)
+ target_link_libraries(sxs uuid)
+endif()
+
+add_importlibs(sxs oleaut32 ole32 kernel32 ntdll)
add_dependencies(sxs psdk)
add_cd_file(TARGET sxs DESTINATION reactos/system32 FOR all)
Added: trunk/reactos/dll/win32/sxs/cache.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sxs/cache.c?rev=…
==============================================================================
--- trunk/reactos/dll/win32/sxs/cache.c (added)
+++ trunk/reactos/dll/win32/sxs/cache.c [iso-8859-1] Mon Feb 6 18:48:50 2012
@@ -1,0 +1,618 @@
+/*
+ * IAssemblyCache implementation
+ *
+ * Copyright 2010 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdarg.h>
+
+#define COBJMACROS
+#define INITGUID
+
+#include "windef.h"
+#include "winbase.h"
+#include "ole2.h"
+#include "winsxs.h"
+#include "msxml2.h"
+
+#include "wine/debug.h"
+#include "wine/list.h"
+#include "wine/unicode.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(sxs);
+
+static inline WCHAR *strdupW( const WCHAR *s )
+{
+ WCHAR *t;
+ if (!s) return NULL;
+ if ((t = HeapAlloc( GetProcessHeap(), 0, (strlenW( s ) + 1) * sizeof(WCHAR) )))
strcpyW( t, s );
+ return t;
+}
+
+struct cache
+{
+ IAssemblyCache IAssemblyCache_iface;
+ LONG refs;
+};
+
+static inline struct cache *impl_from_IAssemblyCache(IAssemblyCache *iface)
+{
+ return CONTAINING_RECORD(iface, struct cache, IAssemblyCache_iface);
+}
+
+static HRESULT WINAPI cache_QueryInterface(
+ IAssemblyCache *iface,
+ REFIID riid,
+ void **obj )
+{
+ struct cache *cache = impl_from_IAssemblyCache(iface);
+
+ TRACE("%p, %s, %p\n", cache, debugstr_guid(riid), obj);
+
+ *obj = NULL;
+
+ if (IsEqualIID(riid, &IID_IUnknown) ||
+ IsEqualIID(riid, &IID_IAssemblyCache))
+ {
+ IUnknown_AddRef( iface );
+ *obj = cache;
+ return S_OK;
+ }
+
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI cache_AddRef( IAssemblyCache *iface )
+{
+ struct cache *cache = impl_from_IAssemblyCache(iface);
+ return InterlockedIncrement( &cache->refs );
+}
+
+static ULONG WINAPI cache_Release( IAssemblyCache *iface )
+{
+ struct cache *cache = impl_from_IAssemblyCache(iface);
+ ULONG refs = InterlockedDecrement( &cache->refs );
+
+ if (!refs)
+ {
+ TRACE("destroying %p\n", cache);
+ HeapFree( GetProcessHeap(), 0, cache );
+ }
+ return refs;
+}
+
+static HRESULT WINAPI cache_UninstallAssembly(
+ IAssemblyCache *iface,
+ DWORD flags,
+ LPCWSTR name,
+ LPCFUSION_INSTALL_REFERENCE ref,
+ ULONG *disp )
+{
+ FIXME("%p, 0x%08x, %s, %p, %p\n", iface, flags, debugstr_w(name), ref,
disp);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI cache_QueryAssemblyInfo(
+ IAssemblyCache *iface,
+ DWORD flags,
+ LPCWSTR name,
+ ASSEMBLY_INFO *info )
+{
+ FIXME("%p, 0x%08x, %s, %p\n", iface, flags, debugstr_w(name), info);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI cache_CreateAssemblyCacheItem(
+ IAssemblyCache *iface,
+ DWORD flags,
+ PVOID reserved,
+ IAssemblyCacheItem **item,
+ LPCWSTR name )
+{
+ FIXME("%p, 0x%08x, %p, %p, %s\n", iface, flags, reserved, item,
debugstr_w(name));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI cache_Reserved(
+ IAssemblyCache *iface,
+ IUnknown **reserved)
+{
+ FIXME("%p\n", reserved);
+ return E_NOTIMPL;
+}
+
+static BSTR get_attribute_value( IXMLDOMNamedNodeMap *map, const WCHAR *value_name )
+{
+ HRESULT hr;
+ IXMLDOMNode *attr;
+ VARIANT var;
+ BSTR str;
+
+ str = SysAllocString( value_name );
+ hr = IXMLDOMNamedNodeMap_getNamedItem( map, str, &attr );
+ SysFreeString( str );
+ if (hr != S_OK) return NULL;
+
+ hr = IXMLDOMNode_get_nodeValue( attr, &var );
+ IXMLDOMNode_Release( attr );
+ if (hr != S_OK) return NULL;
+ if (V_VT(&var) != VT_BSTR)
+ {
+ VariantClear( &var );
+ return NULL;
+ }
+ TRACE("%s=%s\n", debugstr_w(value_name), debugstr_w(V_BSTR( &var )));
+ return V_BSTR( &var );
+}
+
+struct file
+{
+ struct list entry;
+ BSTR name;
+};
+
+struct assembly
+{
+ BSTR type;
+ BSTR name;
+ BSTR version;
+ BSTR arch;
+ BSTR token;
+ struct list files;
+};
+
+static void free_assembly( struct assembly *assembly )
+{
+ struct list *item, *cursor;
+
+ if (!assembly) return;
+ SysFreeString( assembly->type );
+ SysFreeString( assembly->name );
+ SysFreeString( assembly->version );
+ SysFreeString( assembly->arch );
+ SysFreeString( assembly->token );
+ LIST_FOR_EACH_SAFE( item, cursor, &assembly->files )
+ {
+ struct file *file = LIST_ENTRY( item, struct file, entry );
+ list_remove( &file->entry );
+ SysFreeString( file->name );
+ HeapFree( GetProcessHeap(), 0, file );
+ }
+ HeapFree( GetProcessHeap(), 0, assembly );
+}
+
+static HRESULT parse_files( IXMLDOMDocument *doc, struct assembly *assembly )
+{
+ static const WCHAR fileW[] = {'f','i','l','e',0};
+ static const WCHAR nameW[] = {'n','a','m','e',0};
+ IXMLDOMNamedNodeMap *attrs;
+ IXMLDOMNodeList *list;
+ IXMLDOMNode *node;
+ struct file *f;
+ BSTR str;
+ HRESULT hr;
+ LONG len;
+
+ str = SysAllocString( fileW );
+ hr = IXMLDOMDocument_getElementsByTagName( doc, str, &list );
+ SysFreeString( str );
+ if (hr != S_OK) return hr;
+
+ hr = IXMLDOMNodeList_get_length( list, &len );
+ if (hr != S_OK) goto done;
+ TRACE("found %d files\n", len);
+ if (!len)
+ {
+ hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
+ goto done;
+ }
+
+ for (;;)
+ {
+ hr = IXMLDOMNodeList_nextNode( list, &node );
+ if (hr != S_OK || !node)
+ {
+ hr = S_OK;
+ break;
+ }
+
+ /* FIXME: validate node type */
+
+ hr = IXMLDOMNode_get_attributes( node, &attrs );
+ IXMLDOMNode_Release( node );
+ if (hr != S_OK)
+ goto done;
+
+ if (!(f = HeapAlloc( GetProcessHeap(), 0, sizeof(struct file) )))
+ {
+ IXMLDOMNamedNodeMap_Release( attrs );
+ hr = E_OUTOFMEMORY;
+ goto done;
+ }
+
+ f->name = get_attribute_value( attrs, nameW );
+ IXMLDOMNamedNodeMap_Release( attrs );
+ if (!f->name)
+ {
+ HeapFree( GetProcessHeap(), 0, f );
+ hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
+ goto done;
+ }
+ list_add_tail( &assembly->files, &f->entry );
+ }
+
+ if (list_empty( &assembly->files ))
+ {
+ WARN("no files found\n");
+ hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
+ }
+
+done:
+ IXMLDOMNodeList_Release( list );
+ return hr;
+}
+
+static HRESULT parse_assembly( IXMLDOMDocument *doc, struct assembly **assembly )
+{
+ static const WCHAR identityW[] =
{'a','s','s','e','m','b','l','y','I','d','e','n','t','i','t','y',0};
+ static const WCHAR typeW[] = {'t','y','p','e',0};
+ static const WCHAR nameW[] = {'n','a','m','e',0};
+ static const WCHAR versionW[] =
{'v','e','r','s','i','o','n',0};
+ static const WCHAR architectureW[] =
{'p','r','o','c','e','s','s','o','r','A','r','c','h','i','t','e','c','t','u','r','e',0};
+ static const WCHAR tokenW[] =
{'p','u','b','l','i','c','K','e','y','T','o','k','e','n',0};
+ static const WCHAR win32W[] =
{'w','i','n','3','2',0};
+ static const WCHAR policyW[] =
{'w','i','n','3','2','-','p','o','l','i','c','y',0};
+ IXMLDOMNodeList *list = NULL;
+ IXMLDOMNode *node = NULL;
+ IXMLDOMNamedNodeMap *attrs = NULL;
+ struct assembly *a = NULL;
+ BSTR str;
+ HRESULT hr;
+ LONG len;
+
+ str = SysAllocString( identityW );
+ hr = IXMLDOMDocument_getElementsByTagName( doc, str, &list );
+ SysFreeString( str );
+ if (hr != S_OK) goto done;
+
+ hr = IXMLDOMNodeList_get_length( list, &len );
+ if (hr != S_OK) goto done;
+ if (!len)
+ {
+ hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
+ goto done;
+ }
+ hr = IXMLDOMNodeList_nextNode( list, &node );
+ if (hr != S_OK) goto done;
+ if (!node)
+ {
+ hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
+ goto done;
+ }
+ if (!(a = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct assembly) )))
+ {
+ hr = E_OUTOFMEMORY;
+ goto done;
+ }
+ list_init( &a->files );
+
+ hr = IXMLDOMNode_get_attributes( node, &attrs );
+ if (hr != S_OK) goto done;
+
+ a->type = get_attribute_value( attrs, typeW );
+ a->name = get_attribute_value( attrs, nameW );
+ a->version = get_attribute_value( attrs, versionW );
+ a->arch = get_attribute_value( attrs, architectureW );
+ a->token = get_attribute_value( attrs, tokenW );
+
+ if (!a->type || (strcmpW( a->type, win32W ) && strcmpW( a->type,
policyW )) ||
+ !a->name || !a->version || !a->arch || !a->token)
+ {
+ WARN("invalid win32 assembly\n");
+ hr = ERROR_SXS_MANIFEST_FORMAT_ERROR;
+ goto done;
+ }
+ if (!strcmpW( a->type, win32W )) hr = parse_files( doc, a );
+
+done:
+ if (attrs) IXMLDOMNamedNodeMap_Release( attrs );
+ if (node) IXMLDOMNode_Release( node );
+ if (list) IXMLDOMNodeList_Release( list );
+ if (hr == S_OK) *assembly = a;
+ else free_assembly( a );
+ return hr;
+}
+
+static WCHAR *build_sxs_path( void )
+{
+ static const WCHAR winsxsW[] =
{'\\','w','i','n','s','x','s','\\',0};
+ WCHAR sxsdir[MAX_PATH];
+
+ GetWindowsDirectoryW( sxsdir, MAX_PATH );
+ strcatW( sxsdir, winsxsW );
+ return strdupW( sxsdir );
+}
+
+static WCHAR *build_assembly_name( struct assembly *assembly )
+{
+ static const WCHAR fmtW[] =
+
{'%','s','_','%','s','_','%','s','_','%','s','_','n','o','n','e','_','d','e','a','d','b','e','e','f',0};
+ WCHAR *ret, *p;
+ int len;
+
+ len = strlenW( fmtW );
+ len += strlenW( assembly->arch );
+ len += strlenW( assembly->name );
+ len += strlenW( assembly->token );
+ len += strlenW( assembly->version );
+
+ if (!(ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return NULL;
+ sprintfW( ret, fmtW, assembly->arch, assembly->name, assembly->token,
assembly->version );
+ for (p = ret; *p; p++) *p = tolowerW( *p );
+ return ret;
+}
+
+static WCHAR *build_policy_name( struct assembly *assembly )
+{
+ static const WCHAR fmtW[] =
+
{'%','s','_','%','s','_','%','s','_','n','o','n','e','_','d','e','a','d','b','e','e','f',0};
+ WCHAR *ret, *p;
+ int len;
+
+ len = strlenW( fmtW );
+ len += strlenW( assembly->arch );
+ len += strlenW( assembly->name );
+ len += strlenW( assembly->token );
+
+ if (!(ret = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return NULL;
+ sprintfW( ret, fmtW, assembly->arch, assembly->name, assembly->token );
+ for (p = ret; *p; p++) *p = tolowerW( *p );
+ return ret;
+}
+
+static HRESULT install_policy( const WCHAR *manifest, struct assembly *assembly )
+{
+ static const WCHAR policiesW[] =
{'p','o','l','i','c','i','e','s','\\',0};
+ static const WCHAR suffixW[] =
{'.','p','o','l','i','c','y',0};
+ static const WCHAR backslashW[] = {'\\',0};
+ WCHAR *sxsdir, *name, *dst;
+ HRESULT hr = E_OUTOFMEMORY;
+ BOOL ret;
+ int len;
+
+ /* FIXME: handle catalog file */
+
+ if (!(sxsdir = build_sxs_path())) return E_OUTOFMEMORY;
+ if (!(name = build_policy_name( assembly ))) goto done;
+
+ len = strlenW( sxsdir );
+ len += strlenW( policiesW );
+ len += strlenW( name ) + 1;
+ len += strlenW( assembly->version );
+ len += strlenW( suffixW );
+
+ if (!(dst = HeapAlloc( GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) ))) goto done;
+ strcpyW( dst, sxsdir );
+ strcatW( dst, policiesW );
+ CreateDirectoryW( dst, NULL );
+ strcatW( dst, name );
+ CreateDirectoryW( dst, NULL );
+ strcatW( dst, backslashW );
+ strcatW( dst, assembly->version );
+ strcatW( dst, suffixW );
+
+ ret = CopyFileW( manifest, dst, FALSE );
+ HeapFree( GetProcessHeap(), 0, dst );
+ if (!ret)
+ {
+ hr = HRESULT_FROM_WIN32( GetLastError() );
+ WARN("failed to copy policy manifest file 0x%08x\n", hr);
+ }
+ hr = S_OK;
+
+done:
+ HeapFree( GetProcessHeap(), 0, sxsdir );
+ HeapFree( GetProcessHeap(), 0, name );
+ return hr;
+}
+
+static WCHAR *build_source_filename( const WCHAR *manifest, struct file *file )
+{
+ WCHAR *src;
+ const WCHAR *p;
+ int len;
+
+ p = strrchrW( manifest, '\\' );
+ if (!p) p = strrchrW( manifest, '/' );
+ if (!p) return strdupW( manifest );
+
+ len = p - manifest + 1;
+ if (!(src = HeapAlloc( GetProcessHeap(), 0, (len + strlenW( file->name ) + 1) *
sizeof(WCHAR) )))
+ return NULL;
+
+ memcpy( src, manifest, len * sizeof(WCHAR) );
+ strcpyW( src + len, file->name );
+ return src;
+}
+
+static HRESULT install_assembly( const WCHAR *manifest, struct assembly *assembly )
+{
+ static const WCHAR manifestsW[] =
{'m','a','n','i','f','e','s','t','s','\\',0};
+ static const WCHAR suffixW[] =
{'.','m','a','n','i','f','e','s','t',0};
+ static const WCHAR backslashW[] = {'\\',0};
+ WCHAR *sxsdir, *p, *name, *dst, *src;
+ struct file *file;
+ HRESULT hr = E_OUTOFMEMORY;
+ BOOL ret;
+ int len;
+
+ if (!(sxsdir = build_sxs_path())) return E_OUTOFMEMORY;
+ if (!(name = build_assembly_name( assembly ))) goto done;
+
+ len = strlenW( sxsdir );
+ len += strlenW( manifestsW );
+ len += strlenW( name );
+ len += strlenW( suffixW );
+ if (!(dst = HeapAlloc( GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR) ))) goto done;
+ strcpyW( dst, sxsdir );
+ strcatW( dst, manifestsW );
+ strcatW( dst, name );
+ strcatW( dst, suffixW );
+
+ ret = CopyFileW( manifest, dst, FALSE );
+ HeapFree( GetProcessHeap(), 0, dst );
+ if (!ret)
+ {
+ hr = HRESULT_FROM_WIN32( GetLastError() );
+ WARN("failed to copy manifest file 0x%08x\n", hr);
+ goto done;
+ }
+
+ /* FIXME: this should be a transaction */
+ LIST_FOR_EACH_ENTRY( file, &assembly->files, struct file, entry )
+ {
+ if (!(src = build_source_filename( manifest, file )))
+ {
+ hr = E_OUTOFMEMORY;
+ goto done;
+ }
+ len = strlenW( sxsdir ) + strlenW( name ) + strlenW( file->name );
+ if (!(dst = HeapAlloc( GetProcessHeap(), 0, (len + 2) * sizeof(WCHAR) )))
+ {
+ HeapFree( GetProcessHeap(), 0, src );
+ hr = E_OUTOFMEMORY;
+ goto done;
+ }
+ strcpyW( dst, sxsdir );
+ strcatW( dst, name );
+ CreateDirectoryW( dst, NULL );
+
+ strcatW( dst, backslashW );
+ strcatW( dst, file->name );
+ for (p = dst; *p; p++) *p = tolowerW( *p );
+
+ ret = CopyFileW( src, dst, FALSE );
+ HeapFree( GetProcessHeap(), 0, src );
+ HeapFree( GetProcessHeap(), 0, dst );
+ if (!ret)
+ {
+ hr = HRESULT_FROM_WIN32( GetLastError() );
+ WARN("failed to copy file 0x%08x\n", hr);
+ goto done;
+ }
+ }
+ hr = S_OK;
+
+done:
+ HeapFree( GetProcessHeap(), 0, sxsdir );
+ HeapFree( GetProcessHeap(), 0, name );
+ return hr;
+}
+
+static HRESULT WINAPI cache_InstallAssembly(
+ IAssemblyCache *iface,
+ DWORD flags,
+ LPCWSTR path,
+ LPCFUSION_INSTALL_REFERENCE ref )
+{
+ static const WCHAR policyW[] =
{'w','i','n','3','2','-','p','o','l','i','c','y',0};
+ HRESULT hr, init;
+ IXMLDOMDocument *doc = NULL;
+ struct assembly *assembly = NULL;
+ BSTR str;
+ VARIANT var;
+ VARIANT_BOOL b;
+
+ TRACE("%p, 0x%08x, %s, %p\n", iface, flags, debugstr_w(path), ref);
+
+ init = CoInitialize( NULL );
+
+ hr = CoCreateInstance( &CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
&IID_IXMLDOMDocument, (void **)&doc );
+ if (hr != S_OK)
+ goto done;
+
+ str = SysAllocString( path );
+ VariantInit( &var );
+ V_VT( &var ) = VT_BSTR;
+ V_BSTR( &var ) = str;
+ hr = IXMLDOMDocument_load( doc, var, &b );
+ SysFreeString( str );
+ if (hr != S_OK) goto done;
+ if (!b)
+ {
+ WARN("failed to load manifest\n");
+ hr = S_FALSE;
+ goto done;
+ }
+
+ hr = parse_assembly( doc, &assembly );
+ if (hr != S_OK)
+ goto done;
+
+ /* FIXME: verify name attributes */
+
+ if (!strcmpW( assembly->type, policyW ))
+ hr = install_policy( path, assembly );
+ else
+ hr = install_assembly( path, assembly );
+
+done:
+ free_assembly( assembly );
+ if (doc) IXMLDOMDocument_Release( doc );
+
+ if (SUCCEEDED(init))
+ CoUninitialize();
+
+ return hr;
+}
+
+static const IAssemblyCacheVtbl cache_vtbl =
+{
+ cache_QueryInterface,
+ cache_AddRef,
+ cache_Release,
+ cache_UninstallAssembly,
+ cache_QueryAssemblyInfo,
+ cache_CreateAssemblyCacheItem,
+ cache_Reserved,
+ cache_InstallAssembly
+};
+
+/******************************************************************
+ * CreateAssemblyCache (SXS.@)
+ */
+HRESULT WINAPI CreateAssemblyCache( IAssemblyCache **obj, DWORD reserved )
+{
+ struct cache *cache;
+
+ TRACE("%p, %u\n", obj, reserved);
+
+ if (!obj)
+ return E_INVALIDARG;
+
+ *obj = NULL;
+
+ cache = HeapAlloc( GetProcessHeap(), 0, sizeof(struct cache) );
+ if (!cache)
+ return E_OUTOFMEMORY;
+
+ cache->IAssemblyCache_iface.lpVtbl = &cache_vtbl;
+ cache->refs = 1;
+
+ *obj = &cache->IAssemblyCache_iface;
+ return S_OK;
+}
Propchange: trunk/reactos/dll/win32/sxs/cache.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/dll/win32/sxs/msvchelper.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sxs/msvchelper.h…
==============================================================================
--- trunk/reactos/dll/win32/sxs/msvchelper.h (added)
+++ trunk/reactos/dll/win32/sxs/msvchelper.h [iso-8859-1] Mon Feb 6 18:48:50 2012
@@ -1,0 +1,2 @@
+#include <guiddef.h>
+const CLSID CLSID_DOMDocument2 = {0xf6d90f11, 0x9c73, 0x11d3, {0xb3, 0x2e, 0x00,0xc0,
0x4f, 0x99, 0x0b, 0xb4}};
Propchange: trunk/reactos/dll/win32/sxs/msvchelper.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/sxs/sxs.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sxs/sxs.c?rev=55…
==============================================================================
--- trunk/reactos/dll/win32/sxs/sxs.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/sxs/sxs.c [iso-8859-1] Mon Feb 6 18:48:50 2012
@@ -22,9 +22,7 @@
#include "windef.h"
#include "winbase.h"
-#include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(sxs);
/***********************************************************************
* DllMain (SXS.@)
@@ -42,9 +40,3 @@
}
return TRUE;
}
-
-HRESULT WINAPI CreateAssemblyCache(DWORD unimplemented, DWORD dwReserved)
-{
- FIXME("%u %u stub\n", unimplemented, dwReserved);
- return E_NOTIMPL;
-}
Modified: trunk/reactos/dll/win32/sxs/sxs.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sxs/sxs.rbuild?r…
==============================================================================
--- trunk/reactos/dll/win32/sxs/sxs.rbuild [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/sxs/sxs.rbuild [iso-8859-1] Mon Feb 6 18:48:50 2012
@@ -5,7 +5,10 @@
<include base="sxs">.</include>
<include base="ReactOS">include/reactos/wine</include>
<define name="__WINESRC__" />
+ <file>cache.c</file>
<file>sxs.c</file>
+ <library>oleaut32</library>
+ <library>ole32</library>
<library>wine</library>
<library>ntdll</library>
</module>
Modified: trunk/reactos/dll/win32/sxs/sxs.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/sxs/sxs.spec?rev…
==============================================================================
--- trunk/reactos/dll/win32/sxs/sxs.spec [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/sxs/sxs.spec [iso-8859-1] Mon Feb 6 18:48:50 2012
@@ -1,2 +1,2 @@
-@ stdcall CreateAssemblyCache(long long)
+@ stdcall CreateAssemblyCache(ptr long)
@ stub CreateAssemblyNameObject
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Mon Feb 6 18:48:50 2012
@@ -161,7 +161,7 @@
reactos/dll/win32/stdole2.tlb # Synced to Wine-1.3.37
reactos/dll/win32/stdole32.tlb # Synced to Wine-1.3.37
reactos/dll/win32/sti # Autosync
-reactos/dll/win32/sxs # Autosync
+reactos/dll/win32/sxs # Synced to Wine-1.3.37
reactos/dll/win32/tapi32 # Autosync
reactos/dll/win32/traffic # Autosync
reactos/dll/win32/twain_32 # Out of sync