Mike McCormack : msi: Use MSI_QueryGetRecord in ACTION_AppSearchGetSignature.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Nov 27 07:10:29 CST 2006


Module: wine
Branch: master
Commit: a1c969ee23894334efbda4ecb3bb001f7e7ed472
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a1c969ee23894334efbda4ecb3bb001f7e7ed472

Author: Mike McCormack <mike at codeweavers.com>
Date:   Mon Nov 27 17:48:37 2006 +0900

msi: Use MSI_QueryGetRecord in ACTION_AppSearchGetSignature.

---

 dlls/msi/appsearch.c |  137 ++++++++++++++++++++-----------------------------
 1 files changed, 56 insertions(+), 81 deletions(-)

diff --git a/dlls/msi/appsearch.c b/dlls/msi/appsearch.c
index 57bffe7..7ae47f5 100644
--- a/dlls/msi/appsearch.c
+++ b/dlls/msi/appsearch.c
@@ -80,96 +80,71 @@ static void ACTION_VerStrToInteger(LPCWS
  * Returns ERROR_SUCCESS upon success (where not finding the record counts as
  * success), something else on error.
  */
-static UINT ACTION_AppSearchGetSignature(MSIPACKAGE *package, MSISIGNATURE *sig,
- LPCWSTR name)
+static UINT ACTION_AppSearchGetSignature(MSIPACKAGE *package, MSISIGNATURE *sig, LPCWSTR name)
 {
-    MSIQUERY *view;
-    UINT rc;
-    static const WCHAR ExecSeqQuery[] =  {
-   's','e','l','e','c','t',' ','*',' ',
-   'f','r','o','m',' ',
-   'S','i','g','n','a','t','u','r','e',' ',
-   'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e',' ','=',' ',
-   '\'','%','s','\'',0};
+    static const WCHAR query[] = {
+        's','e','l','e','c','t',' ','*',' ',
+        'f','r','o','m',' ',
+        'S','i','g','n','a','t','u','r','e',' ',
+        'w','h','e','r','e',' ','S','i','g','n','a','t','u','r','e',' ','=',' ',
+        '\'','%','s','\'',0};
+    LPWSTR minVersion, maxVersion;
+    MSIRECORD *row;
+    DWORD time;
+
+    TRACE("package %p, sig %p\n", package, sig);
 
-    TRACE("(package %p, sig %p)\n", package, sig);
     memset(sig, 0, sizeof(*sig));
     sig->Name = name;
-    rc = MSI_OpenQuery(package->db, &view, ExecSeqQuery, name);
-    if (rc == ERROR_SUCCESS)
+    row = MSI_QueryGetRecord( package->db, query, name );
+    if (!row)
     {
-        MSIRECORD *row = 0;
-        DWORD time;
-        WCHAR *minVersion, *maxVersion;
-
-        rc = MSI_ViewExecute(view, 0);
-        if (rc != ERROR_SUCCESS)
-        {
-            TRACE("MSI_ViewExecute returned %d\n", rc);
-            goto end;
-        }
-        rc = MSI_ViewFetch(view,&row);
-        if (rc != ERROR_SUCCESS)
-        {
-            TRACE("MSI_ViewFetch returned %d\n", rc);
-            rc = ERROR_SUCCESS;
-            goto end;
-        }
-
-        /* get properties */
-        sig->File = msi_dup_record_field(row,2);
-        minVersion = msi_dup_record_field(row,3);
-        if (minVersion)
-        {
-            ACTION_VerStrToInteger(minVersion, &sig->MinVersionMS,
-             &sig->MinVersionLS);
-            msi_free( minVersion);
-        }
-        maxVersion = msi_dup_record_field(row,4);
-        if (maxVersion)
-        {
-            ACTION_VerStrToInteger(maxVersion, &sig->MaxVersionMS,
-             &sig->MaxVersionLS);
-            msi_free( maxVersion);
-        }
-        sig->MinSize = MSI_RecordGetInteger(row,5);
-        if (sig->MinSize == MSI_NULL_INTEGER)
-            sig->MinSize = 0;
-        sig->MaxSize = MSI_RecordGetInteger(row,6);
-        if (sig->MaxSize == MSI_NULL_INTEGER)
-            sig->MaxSize = 0;
-        sig->Languages = msi_dup_record_field(row,9);
-        time = MSI_RecordGetInteger(row,7);
-        if (time != MSI_NULL_INTEGER)
-            DosDateTimeToFileTime(HIWORD(time), LOWORD(time), &sig->MinTime);
-        time = MSI_RecordGetInteger(row,8);
-        if (time != MSI_NULL_INTEGER)
-            DosDateTimeToFileTime(HIWORD(time), LOWORD(time), &sig->MaxTime);
-        TRACE("Found file name %s for Signature_ %s;\n",
-         debugstr_w(sig->File), debugstr_w(name));
-        TRACE("MinVersion is %d.%d.%d.%d\n", HIWORD(sig->MinVersionMS),
-         LOWORD(sig->MinVersionMS), HIWORD(sig->MinVersionLS),
-         LOWORD(sig->MinVersionLS));
-        TRACE("MaxVersion is %d.%d.%d.%d\n", HIWORD(sig->MaxVersionMS),
-         LOWORD(sig->MaxVersionMS), HIWORD(sig->MaxVersionLS),
-         LOWORD(sig->MaxVersionLS));
-        TRACE("MinSize is %d, MaxSize is %d;\n", sig->MinSize, sig->MaxSize);
-        TRACE("Languages is %s\n", debugstr_w(sig->Languages));
+        TRACE("failed to query signature for %s\n", debugstr_w(name));
+        return ERROR_SUCCESS;
+    }
 
-end:
-        if (row)
-            msiobj_release(&row->hdr);
-        MSI_ViewClose(view);
-        msiobj_release(&view->hdr);
+    /* get properties */
+    sig->File = msi_dup_record_field(row,2);
+    minVersion = msi_dup_record_field(row,3);
+    if (minVersion)
+    {
+        ACTION_VerStrToInteger(minVersion, &sig->MinVersionMS, &sig->MinVersionLS);
+        msi_free( minVersion );
     }
-    else
+    maxVersion = msi_dup_record_field(row,4);
+    if (maxVersion)
     {
-        TRACE("MSI_OpenQuery returned %d\n", rc);
-        rc = ERROR_SUCCESS;
+        ACTION_VerStrToInteger(maxVersion, &sig->MaxVersionMS, &sig->MaxVersionLS);
+        msi_free( maxVersion );
     }
-
-    TRACE("returning %d\n", rc);
-    return rc;
+    sig->MinSize = MSI_RecordGetInteger(row,5);
+    if (sig->MinSize == MSI_NULL_INTEGER)
+        sig->MinSize = 0;
+    sig->MaxSize = MSI_RecordGetInteger(row,6);
+    if (sig->MaxSize == MSI_NULL_INTEGER)
+        sig->MaxSize = 0;
+    sig->Languages = msi_dup_record_field(row,9);
+    time = MSI_RecordGetInteger(row,7);
+    if (time != MSI_NULL_INTEGER)
+        DosDateTimeToFileTime(HIWORD(time), LOWORD(time), &sig->MinTime);
+    time = MSI_RecordGetInteger(row,8);
+    if (time != MSI_NULL_INTEGER)
+        DosDateTimeToFileTime(HIWORD(time), LOWORD(time), &sig->MaxTime);
+
+    TRACE("Found file name %s for Signature_ %s;\n",
+          debugstr_w(sig->File), debugstr_w(name));
+    TRACE("MinVersion is %d.%d.%d.%d\n", HIWORD(sig->MinVersionMS),
+          LOWORD(sig->MinVersionMS), HIWORD(sig->MinVersionLS),
+          LOWORD(sig->MinVersionLS));
+    TRACE("MaxVersion is %d.%d.%d.%d\n", HIWORD(sig->MaxVersionMS),
+          LOWORD(sig->MaxVersionMS), HIWORD(sig->MaxVersionLS),
+          LOWORD(sig->MaxVersionLS));
+    TRACE("MinSize is %d, MaxSize is %d;\n", sig->MinSize, sig->MaxSize);
+    TRACE("Languages is %s\n", debugstr_w(sig->Languages));
+
+    msiobj_release( &row->hdr );
+
+    return ERROR_SUCCESS;
 }
 
 /* Frees any memory allocated in sig */




More information about the wine-cvs mailing list