From 8c51749ed7cc67be03cec27c4a3fcb06a7988ca5 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 28 Feb 2019 13:25:41 +0100 Subject: [run-virt] Fix PRINTER handling --- .../data/opt/openslx/vmchooser/data/openslx.exe | Bin 66048 -> 56832 bytes core/modules/run-virt/winres/src/winres.c | 20 +++++++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) (limited to 'core/modules') diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe b/core/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe index 3eb76207..7581b355 100755 Binary files a/core/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe and b/core/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe differ diff --git a/core/modules/run-virt/winres/src/winres.c b/core/modules/run-virt/winres/src/winres.c index 3829a267..90dc1385 100644 --- a/core/modules/run-virt/winres/src/winres.c +++ b/core/modules/run-virt/winres/src/winres.c @@ -1015,18 +1015,18 @@ static BOOL mountNetworkShare(const netdrive_t *d, BOOL useIp) share.lpLocalName = letter; share.lpRemoteName = path; share.lpProvider = NULL; - letter[1] = ':'; - letter[2] = 0; - letter[3] = 0; - if (letter[0] != 0 && letter[0] != '?') { + if (letter[0] != 0 && letter[0] != '?') { // ? will pick automatically // Try with specific letter - if (letter[0] == '-') { - // No letter, just use as resource - letter[0] = 0; - } else if (wcscmp(L"PRINTER", letter) == 0) { + if (wcscmp(L"PRINTER", letter) == 0) { // Printer letter[0] = 0; share.dwType = RESOURCETYPE_PRINT; + } else if (letter[0] == '-') { + // No letter, just use as resource + letter[0] = 0; + } else { + letter[1] = ':'; + letter[2] = 0; } // Connect defined share retval = mount(&share, pass, user); @@ -1040,8 +1040,10 @@ static BOOL mountNetworkShare(const netdrive_t *d, BOOL useIp) return FALSE; } } - if (share.dwType == RESOURCETYPE_DISK) { + if (share.dwType == RESOURCETYPE_DISK && letter[0] != '-') { // Try to find free drive letter + letter[1] = ':'; + letter[2] = 0; for (letter[0] = 'Z'; letter[0] > 'C'; --letter[0]) { retval = mount(&share, pass, user); if (retval == ERROR_ALREADY_ASSIGNED || retval == ERROR_DEVICE_ALREADY_REMEMBERED -- cgit v1.2.3-55-g7522