diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-10-23 13:25:47 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-12-06 20:30:30 +0100 |
commit | b4520f9ebf388a13d51461e20f3c60ac89ac277d (patch) | |
tree | 43209ff8e77d183866b7930bed32af74ea8ba1ee /libmsi | |
parent | 021e34abc22eea0b914ab474562f02625d7ec4eb (diff) | |
download | msitools-b4520f9ebf388a13d51461e20f3c60ac89ac277d.tar.gz msitools-b4520f9ebf388a13d51461e20f3c60ac89ac277d.tar.xz msitools-b4520f9ebf388a13d51461e20f3c60ac89ac277d.zip |
make MsiDatabaseApplyTransform ASCII-only
Diffstat (limited to 'libmsi')
-rw-r--r-- | libmsi/msipriv.h | 4 | ||||
-rw-r--r-- | libmsi/msiquery.c | 37 |
2 files changed, 13 insertions, 28 deletions
diff --git a/libmsi/msipriv.h b/libmsi/msipriv.h index 236193f..d1c2290 100644 --- a/libmsi/msipriv.h +++ b/libmsi/msipriv.h @@ -341,8 +341,8 @@ extern unsigned write_stream_data( IStorage *stg, const WCHAR *stname, /* transform functions */ extern unsigned msi_table_apply_transform( LibmsiDatabase *db, IStorage *stg ); -extern unsigned MSI_DatabaseApplyTransformW( LibmsiDatabase *db, - const WCHAR *szTransformFile, int iErrorCond ); +extern unsigned MSI_DatabaseApplyTransform( LibmsiDatabase *db, + const char *szTransformFile, int iErrorCond ); extern void append_storage_to_db( LibmsiDatabase *db, IStorage *stg ); /* record internals */ diff --git a/libmsi/msiquery.c b/libmsi/msiquery.c index 63d4194..2a57300 100644 --- a/libmsi/msiquery.c +++ b/libmsi/msiquery.c @@ -678,17 +678,20 @@ LibmsiObject * MsiGetLastErrorRecord( void ) return 0; } -unsigned MSI_DatabaseApplyTransformW( LibmsiDatabase *db, - const WCHAR *szTransformFile, int iErrorCond ) +unsigned MSI_DatabaseApplyTransform( LibmsiDatabase *db, + const char *szTransformFile, int iErrorCond ) { HRESULT r; unsigned ret = ERROR_FUNCTION_FAILED; IStorage *stg = NULL; STATSTG stat; + WCHAR *szwTransformFile = NULL; - TRACE("%p %s %d\n", db, debugstr_w(szTransformFile), iErrorCond); + TRACE("%p %s %d\n", db, debugstr_a(szTransformFile), iErrorCond); + szwTransformFile = strdupAtoW(szTransformFile); + if (!szwTransformFile) goto end; - r = StgOpenStorage( szTransformFile, NULL, + r = StgOpenStorage( szwTransformFile, NULL, STGM_DIRECT|STGM_READ|STGM_SHARE_DENY_WRITE, NULL, 0, &stg); if ( FAILED(r) ) { @@ -709,13 +712,14 @@ unsigned MSI_DatabaseApplyTransformW( LibmsiDatabase *db, ret = msi_table_apply_transform( db, stg ); end: + msi_free(szwTransformFile); IStorage_Release( stg ); return ret; } -unsigned MsiDatabaseApplyTransformW( LibmsiObject *hdb, - const WCHAR *szTransformFile, int iErrorCond) +unsigned MsiDatabaseApplyTransform( LibmsiObject *hdb, + const char *szTransformFile, int iErrorCond) { LibmsiDatabase *db; unsigned r; @@ -723,30 +727,11 @@ unsigned MsiDatabaseApplyTransformW( LibmsiObject *hdb, db = msihandle2msiinfo( hdb, LIBMSI_OBJECT_TYPE_DATABASE ); if( !db ) return ERROR_INVALID_HANDLE; - r = MSI_DatabaseApplyTransformW( db, szTransformFile, iErrorCond ); + r = MSI_DatabaseApplyTransform( db, szTransformFile, iErrorCond ); msiobj_release( &db->hdr ); return r; } -unsigned MsiDatabaseApplyTransformA( LibmsiObject *hdb, - const char *szTransformFile, int iErrorCond) -{ - WCHAR *wstr; - unsigned ret; - - TRACE("%d %s %d\n", hdb, debugstr_a(szTransformFile), iErrorCond); - - wstr = strdupAtoW( szTransformFile ); - if( szTransformFile && !wstr ) - return ERROR_NOT_ENOUGH_MEMORY; - - ret = MsiDatabaseApplyTransformW( hdb, wstr, iErrorCond); - - msi_free( wstr ); - - return ret; -} - unsigned MsiDatabaseCommit( LibmsiObject *hdb ) { LibmsiDatabase *db; |