[Spice-commits] 9 commits - spice-protocol vdagent/desktop_layout.cpp vdagent/display_setting.cpp vdagent/file_xfer.cpp vdagent/vdagent.cpp

Marc-André Lureau elmarco at kemper.freedesktop.org
Wed Jul 17 11:53:25 PDT 2013


 spice-protocol              |    2 -
 vdagent/desktop_layout.cpp  |    4 +--
 vdagent/display_setting.cpp |    2 -
 vdagent/file_xfer.cpp       |   58 +++++++++++++++++++++++++-------------------
 vdagent/vdagent.cpp         |   42 +++++++++++++++----------------
 5 files changed, 58 insertions(+), 50 deletions(-)

New commits:
commit ad61eec9611ede0b74c577a3426670eb13bde7d0
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:52:17 2013 +0200

    Fix cast BOOL->PVOID warning
    
    vdagent/display_setting.cpp:469:50: warning: cast to pointer from
    integer of different size [-Wint-to-pointer-cast]
         if (!SystemParametersInfo(action, 0, (PVOID)param, 0)) {

diff --git a/vdagent/display_setting.cpp b/vdagent/display_setting.cpp
index fdf5a31..1ec7397 100644
--- a/vdagent/display_setting.cpp
+++ b/vdagent/display_setting.cpp
@@ -466,7 +466,7 @@ bool DisplaySetting::reload_win_animation(HKEY desktop_reg_key)
 
 bool DisplaySetting::set_bool_system_parameter_info(int action, BOOL param)
 {
-    if (!SystemParametersInfo(action, 0, (PVOID)param, 0)) {
+    if (!SystemParametersInfo(action, 0, (PVOID)(uintptr_t)param, 0)) {
         vd_printf("SystemParametersInfo %d: failed %lu", action, GetLastError());
         return false;
     }
commit fc1de85b499759576fa52dfd20496bfb887c8295
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:49:01 2013 +0200

    Fix wrong size_t printf format
    
    vdagent/desktop_layout.cpp:121:763: warning: format '%u' expects
    argument of type 'unsigned int', but argument 8 has type
    'std::vector<DisplayMode*>::size_type {aka long long unsigned int}'
    [-Wformat=]

diff --git a/vdagent/desktop_layout.cpp b/vdagent/desktop_layout.cpp
index ce259e1..7850e6d 100644
--- a/vdagent/desktop_layout.cpp
+++ b/vdagent/desktop_layout.cpp
@@ -118,7 +118,7 @@ void DesktopLayout::set_displays()
             break;
         }
         if (display_id >= _displays.size()) {
-            vd_printf("display_id %lu out of range, #displays %u", display_id, _displays.size());
+            vd_printf("display_id %lu out of range, #displays %zu" , display_id, _displays.size());
             break;
         }
         if (!init_dev_mode(dev_info.DeviceName, &dev_mode, _displays.at(display_id), true)) {
commit 492ee05a6bd92acc94557a129cd609d66785dac2
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:43:41 2013 +0200

    Replace sscanf_s by sscanf
    
    The _s functions need a recent msvcrt version, not shipped in XP by
    default.
    
    Furthermore, it appears that their sscanf_s usage was missing the extra
    buffer size argument.

diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp
index 9d2f3c5..84f6043 100644
--- a/vdagent/file_xfer.cpp
+++ b/vdagent/file_xfer.cpp
@@ -182,7 +182,7 @@ bool FileXfer::g_key_get_string(char* data, const char* group, const char* key,
     next_group_pos = strstr(group_pos + strlen(group_pfx), "[");
     if (next_group_pos && key_pos > next_group_pos) return false; 
 
-    return !!sscanf_s(key_pos + strlen(key_pfx), "%s\n", value);
+    return !!sscanf(key_pos + strlen(key_pfx), "%s\n", value);
 }
 
 bool FileXfer::g_key_get_uint64(char* data, const char* group, const char* key, uint64_t* value)
@@ -190,5 +190,5 @@ bool FileXfer::g_key_get_uint64(char* data, const char* group, const char* key,
     char str[G_KEY_MAX_LEN];
 
     if (!g_key_get_string(data, group, key, str)) return false;
-    return !!sscanf_s(str, "%llu", value);
+    return !!sscanf(str, "%" PRIu64, value);
 }
commit 5129f33899805b55915e506d392c89421db538a2
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:43:14 2013 +0200

    Add suggested parentheses
    
    vdagent/vdagent.cpp: In member function 'void
    VDAgent::on_clipboard_grab()':
    vdagent/vdagent.cpp:951:52: warning: suggest parentheses around
    assignment used as truth value [-Wparentheses]

diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp
index 73ca39c..260ee40 100644
--- a/vdagent/vdagent.cpp
+++ b/vdagent/vdagent.cpp
@@ -948,7 +948,7 @@ void VDAgent::on_clipboard_grab()
         set_clipboard_owner(owner_guest);
     } else {
         UINT format = 0;
-        while (format = EnumClipboardFormats(format)) {
+        while ((format = EnumClipboardFormats(format))) {
             vd_printf("Unsupported clipboard format %u", format);
         }
     }  
commit b9d6baec2d346e37798dd1892f6ae95ac9d6c9ef
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:42:31 2013 +0200

    Fix task could be used uninitialized

diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp
index 6ba15a3..9d2f3c5 100644
--- a/vdagent/file_xfer.cpp
+++ b/vdagent/file_xfer.cpp
@@ -82,7 +82,7 @@ bool FileXfer::handle_data(VDAgentFileXferDataMessage* data,
                            VDAgentFileXferStatusMessage* status)
 {
     FileXferTasks::iterator iter;
-    FileXferTask* task;
+    FileXferTask* task = NULL;
     DWORD written;
 
     status->id = data->id;
@@ -108,13 +108,17 @@ bool FileXfer::handle_data(VDAgentFileXferDataMessage* data,
     }
     vd_printf("%u completed", iter->first);
     status->result = VD_AGENT_FILE_XFER_STATUS_SUCCESS;
+
 fin:
-    CloseHandle(task->handle);
-    if (status->result != VD_AGENT_FILE_XFER_STATUS_SUCCESS) {
-        DeleteFileA(task->name);
+    if (task) {
+        CloseHandle(task->handle);
+        if (status->result != VD_AGENT_FILE_XFER_STATUS_SUCCESS) {
+            DeleteFileA(task->name);
+        }
+        _tasks.erase(iter);
+        delete task;
     }
-    _tasks.erase(iter);
-    delete task;
+
     return true;
 }
 
commit 462295d9f84658aa7b43401fe7d1373cb3b0fc2d
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:41:04 2013 +0200

    Fix invalid print format for uint64_t values
    
    format '%lu' expects argument of type 'long unsigned int', but argument
    9 has type 'uint64_t

diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp
index b7a480c..6ba15a3 100644
--- a/vdagent/file_xfer.cpp
+++ b/vdagent/file_xfer.cpp
@@ -16,6 +16,10 @@
 */
 
 #include <shlobj.h>
+#define __STDC_FORMAT_MACROS
+#define __USE_MINGW_ANSI_STDIO 1
+#include <inttypes.h>
+#include <stdio.h>
 #include "file_xfer.h"
 
 FileXfer::~FileXfer()
@@ -48,7 +52,7 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage* start,
         vd_printf("file id %u meta parsing failed", start->id);
         return;
     }
-    vd_printf("%u %s (%llu)", start->id, file_name, file_size);
+    vd_printf("%u %s (%" PRIu64 ")", start->id, file_name, file_size);
     if (FAILED(SHGetFolderPathA(NULL, CSIDL_COMMON_DESKTOPDIRECTORY | CSIDL_FLAG_CREATE, NULL,
             SHGFP_TYPE_CURRENT, file_path))) {
         vd_printf("failed getting desktop path");
@@ -59,7 +63,7 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage* start,
         return;
     }
     if (free_bytes.QuadPart < file_size) {
-        vd_printf("insufficient disk space %llu", free_bytes.QuadPart);
+        vd_printf("insufficient disk space %" PRIu64, free_bytes.QuadPart);
         return;
     }
     strcat_s(file_path, MAX_PATH, "\\");
commit b52c9ddfa862ecd7f774946ed12185384c85a533
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:39:46 2013 +0200

    Fix wrong DWORD print fmt
    
    format '%u' expects argument of type 'unsigned int', but argument 8 has type 'DWORD

diff --git a/vdagent/desktop_layout.cpp b/vdagent/desktop_layout.cpp
index 26b6b53..ce259e1 100644
--- a/vdagent/desktop_layout.cpp
+++ b/vdagent/desktop_layout.cpp
@@ -273,7 +273,7 @@ bool DesktopLayout::init_dev_mode(LPCTSTR dev_name, DEVMODE* dev_mode, DisplayMo
             ret = ChangeDisplaySettingsEx(dev_name, dev_mode, NULL, CDS_UPDATEREGISTRY, NULL);
         }
 
-        vd_printf("attach %d", ret);
+        vd_printf("attach %ld", ret);
         hdc = CreateDC(dev_name, NULL, NULL, NULL);
     }
 
diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp
index fd084a8..73ca39c 100644
--- a/vdagent/vdagent.cpp
+++ b/vdagent/vdagent.cpp
@@ -705,7 +705,7 @@ bool VDAgent::handle_clipboard(VDAgentClipboard* clipboard, uint32_t size)
         if (err == ERROR_NOT_ENOUGH_MEMORY) {
             vd_printf("Not enough memory to set clipboard data, size %u bytes", size);
         } else {
-            vd_printf("SetClipboardData failed: %u", err);
+            vd_printf("SetClipboardData failed: %lu", err);
         }
     }
 fin:
@@ -1200,7 +1200,7 @@ bool VDAgent::init_vio_serial()
     _vio_serial = CreateFile(VIOSERIAL_PORT_PATH, GENERIC_READ | GENERIC_WRITE , 0, NULL,
                              OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
     if (_vio_serial == INVALID_HANDLE_VALUE) {
-        vd_printf("Failed opening %ls, error %u", VIOSERIAL_PORT_PATH, GetLastError());
+        vd_printf("Failed opening %ls, error %lu", VIOSERIAL_PORT_PATH, GetLastError());
         return false;
     }
     return true;
commit 3bf46bc2b2a041dcc278a881e5822643a9e4604d
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Wed Jul 17 20:12:37 2013 +0200

    dos2unix

diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp
index 0550882..b7a480c 100644
--- a/vdagent/file_xfer.cpp
+++ b/vdagent/file_xfer.cpp
@@ -20,9 +20,9 @@
 
 FileXfer::~FileXfer()
 {
-    FileXferTasks::iterator iter;
-    FileXferTask* task;
-
+    FileXferTasks::iterator iter;
+    FileXferTask* task;
+
     for (iter = _tasks.begin(); iter != _tasks.end(); iter++) {
         task = iter->second;
         CloseHandle(task->handle);
@@ -36,10 +36,10 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage* start,
 {
     char* file_meta = (char*)start->data;
     char file_path[MAX_PATH], file_name[MAX_PATH];
-    ULARGE_INTEGER free_bytes;
-    FileXferTask* task;
+    ULARGE_INTEGER free_bytes;
+    FileXferTask* task;
     uint64_t file_size;
-    HANDLE handle;
+    HANDLE handle;
 
     status->id = start->id;
     status->result = VD_AGENT_FILE_XFER_STATUS_ERROR;
@@ -49,7 +49,7 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage* start,
         return;
     }
     vd_printf("%u %s (%llu)", start->id, file_name, file_size);
-    if (FAILED(SHGetFolderPathA(NULL, CSIDL_COMMON_DESKTOPDIRECTORY | CSIDL_FLAG_CREATE, NULL,
+    if (FAILED(SHGetFolderPathA(NULL, CSIDL_COMMON_DESKTOPDIRECTORY | CSIDL_FLAG_CREATE, NULL,
             SHGFP_TYPE_CURRENT, file_path))) {
         vd_printf("failed getting desktop path");
         return;
@@ -64,21 +64,21 @@ void FileXfer::handle_start(VDAgentFileXferStartMessage* start,
     }
     strcat_s(file_path, MAX_PATH, "\\");
     strcat_s(file_path, MAX_PATH, file_name);
-    handle = CreateFileA(file_path, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL);
-    if (handle == INVALID_HANDLE_VALUE) {
+    handle = CreateFileA(file_path, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL);
+    if (handle == INVALID_HANDLE_VALUE) {
         vd_printf("failed creating %s %lu", file_path, GetLastError());
-        return;
-    }
+        return;
+    }
     task = new FileXferTask(handle, file_size, file_path);
-    _tasks[start->id] = task;
+    _tasks[start->id] = task;
     status->result = VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA;
 }
 
 bool FileXfer::handle_data(VDAgentFileXferDataMessage* data,
                            VDAgentFileXferStatusMessage* status)
 {
-    FileXferTasks::iterator iter;
-    FileXferTask* task;
+    FileXferTasks::iterator iter;
+    FileXferTask* task;
     DWORD written;
 
     status->id = data->id;
@@ -116,8 +116,8 @@ fin:
 
 void FileXfer::handle_status(VDAgentFileXferStatusMessage* status)
 {
-    FileXferTasks::iterator iter;
-    FileXferTask* task;
+    FileXferTasks::iterator iter;
+    FileXferTask* task;
 
     vd_printf("id %u result %u", status->id, status->result); 
     if (status->result != VD_AGENT_FILE_XFER_STATUS_CANCELLED) {
diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp
index e5567f3..fd084a8 100644
--- a/vdagent/vdagent.cpp
+++ b/vdagent/vdagent.cpp
@@ -450,7 +450,7 @@ void VDAgent::input_desktop_message_loop()
         vd_printf("WTSRegisterSessionNotification() failed: %lu", GetLastError());
     }
     if (_system_version == SYS_VER_WIN_7_CLASS) {
-        _add_clipboard_listener(_hwnd);
+        _add_clipboard_listener(_hwnd);
     } else {
         _hwnd_next_viewer = SetClipboardViewer(_hwnd);
     }
@@ -463,7 +463,7 @@ void VDAgent::input_desktop_message_loop()
         _pending_input = false;
     }
     if (_system_version == SYS_VER_WIN_7_CLASS) {
-        _remove_clipboard_listener(_hwnd);
+        _remove_clipboard_listener(_hwnd);
     } else {
         ChangeClipboardChain(_hwnd, _hwnd_next_viewer);
     }
@@ -948,9 +948,9 @@ void VDAgent::on_clipboard_grab()
         set_clipboard_owner(owner_guest);
     } else {
         UINT format = 0;
-        while (format = EnumClipboardFormats(format)) {
-            vd_printf("Unsupported clipboard format %u", format);
-        }
+        while (format = EnumClipboardFormats(format)) {
+            vd_printf("Unsupported clipboard format %u", format);
+        }
     }  
 }
 
@@ -1053,7 +1053,7 @@ bool VDAgent::handle_clipboard_request(VDAgentClipboardRequest* clipboard_reques
     uint8_t* new_data = NULL;
     long new_size;
     size_t len = 0;
-    CxImage image;
+    CxImage image;
 
     if (_clipboard_owner != owner_guest) {
         vd_printf("Received clipboard request from client while clipboard is not owned by guest");
@@ -1087,19 +1087,19 @@ bool VDAgent::handle_clipboard_request(VDAgentClipboardRequest* clipboard_reques
         DWORD cximage_format = get_cximage_format(clipboard_request->type);
         HPALETTE pal = 0;
 
-        ASSERT(cximage_format);
-        if (IsClipboardFormatAvailable(CF_PALETTE)) {
+        ASSERT(cximage_format);
+        if (IsClipboardFormatAvailable(CF_PALETTE)) {
             pal = (HPALETTE)GetClipboardData(CF_PALETTE);
         }
-        if (!image.CreateFromHBITMAP((HBITMAP)clip_data, pal)) {
-            vd_printf("Image create from handle failed");
-            break;
-        }
-        if (!image.Encode(new_data, new_size, cximage_format)) {
-            vd_printf("Image encode to type %u failed", clipboard_request->type);
-            break;
-        }
-        vd_printf("Image encoded to %lu bytes", new_size);
+        if (!image.CreateFromHBITMAP((HBITMAP)clip_data, pal)) {
+            vd_printf("Image create from handle failed");
+            break;
+        }
+        if (!image.Encode(new_data, new_size, cximage_format)) {
+            vd_printf("Image encode to type %u failed", clipboard_request->type);
+            break;
+        }
+        vd_printf("Image encoded to %lu bytes", new_size);
         break;
     }
     }
@@ -1124,8 +1124,8 @@ bool VDAgent::handle_clipboard_request(VDAgentClipboardRequest* clipboard_reques
         break;
     case VD_AGENT_CLIPBOARD_IMAGE_PNG:
     case VD_AGENT_CLIPBOARD_IMAGE_BMP:
-        memcpy(clipboard->data, new_data, new_size);
-        image.FreeMemory(new_data);
+        memcpy(clipboard->data, new_data, new_size);
+        image.FreeMemory(new_data);
         break;
     }
     CloseClipboard();
commit 846a787c9f4049ca957b09e9a3f3b02ed771873b
Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Thu May 2 16:10:59 2013 +0200

    Update spice-protocol

diff --git a/spice-protocol b/spice-protocol
index df6bc62..784407f 160000
--- a/spice-protocol
+++ b/spice-protocol
@@ -1 +1 @@
-Subproject commit df6bc6269ebd3144663cbdb8457fbe71d9202b6a
+Subproject commit 784407f248e7f99d2bfcc9368f9acd1efb2b9617


More information about the Spice-commits mailing list