[1/3] msi: Store the disk id in the MSIFILE structure.

Hans Leidekker hans at codeweavers.com
Wed May 12 07:18:15 CDT 2010


---
 dlls/msi/action.c  |   21 +++++++++++++++++++++
 dlls/msi/msipriv.h |    1 +
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/dlls/msi/action.c b/dlls/msi/action.c
index fb46167..c5354de 100644
--- a/dlls/msi/action.c
+++ b/dlls/msi/action.c
@@ -1374,6 +1374,26 @@ done:
     return r;
 }
 
+static UINT load_file_disk_id( MSIPACKAGE *package, MSIFILE *file )
+{
+    MSIRECORD *row;
+    static const WCHAR query[] = {
+        'S','E','L','E','C','T',' ','`','D','i','s','k','I','d','`',' ', 'F','R','O','M',' ',
+        '`','M','e','d','i','a','`',' ','W','H','E','R','E',' ',
+        '`','L','a','s','t','S','e','q','u','e','n','c','e','`',' ','>','=',' ','%','i',0};
+
+    row = MSI_QueryGetRecord( package->db, query, file->Sequence );
+    if (!row)
+    {
+        WARN("query failed\n");
+        return ERROR_FUNCTION_FAILED;
+    }
+
+    file->disk_id = MSI_RecordGetInteger( row, 1 );
+    msiobj_release( &row->hdr );
+    return ERROR_SUCCESS;
+}
+
 static UINT load_file(MSIRECORD *row, LPVOID param)
 {
     MSIPACKAGE* package = param;
@@ -1435,6 +1455,7 @@ static UINT load_file(MSIRECORD *row, LPVOID param)
     }
 
     load_file_hash(package, file);
+    load_file_disk_id(package, file);
 
     TRACE("File Loaded (%s)\n",debugstr_w(file->File));  
 
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index 3848745..cf9e690 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -468,6 +468,7 @@ typedef struct tagMSIFILE
     LPWSTR  TargetPath;
     BOOL IsCompressed;
     MSIFILEHASHINFO hash;
+    UINT disk_id;
 } MSIFILE;
 
 typedef struct tagMSITEMPFILE
-- 
1.7.0.4







More information about the wine-patches mailing list