Stop VC++ from warning "all references to 'SHELL32.dll' discarded
Steve Hay [Thu, 7 Jun 2007 11:48:47 +0000 (11:48 +0000)]
by /OPT:REF" by removing the only reference to a SHELL32.dll function
(namely, CommandLineToArgvW(), called from win32_argv2utf8(), which
isn't actually used anywhere so delete it).

That then caused the warning "/DELAYLOAD:shell32.dll ignored; no
imports found from shell32.dll", so remove that /DELAYLOAD option too.

p4raw-id: //depot/perl@31347

win32/Makefile
win32/makefile.mk
win32/win32.c
win32/win32.h
win32/wince.c

index c2e500f..afe95fd 100644 (file)
@@ -364,7 +364,7 @@ ARCHNAME    = $(ARCHNAME)-thread
 # version of 8.x can.)
 !IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" || \
     "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE"
-DELAYLOAD      = -DELAYLOAD:ws2_32.dll -DELAYLOAD:shell32.dll delayimp.lib
+DELAYLOAD      = -DELAYLOAD:ws2_32.dll delayimp.lib
 !ENDIF
 
 # Visual C++ 2005 (VC++ 8.x) creates manifest files for EXEs and DLLs. These
index 9e01c98..35a5c5c 100644 (file)
@@ -363,7 +363,7 @@ ARCHNAME    !:= $(ARCHNAME)-thread
 # version of 8.x can.)
 .IF "$(CCTYPE)" == "MSVC60" || "$(CCTYPE)" == "MSVC70" \
     "$(CCTYPE)" == "MSVC80" || "$(CCTYPE)" == "MSVC80FREE"
-DELAYLOAD      *= -DELAYLOAD:ws2_32.dll -DELAYLOAD:shell32.dll delayimp.lib
+DELAYLOAD      *= -DELAYLOAD:ws2_32.dll delayimp.lib
 .ENDIF
 
 # Visual C++ 2005 (VC++ 8.x) creates manifest files for EXEs and DLLs. These
index 21be48c..1c6c17e 100644 (file)
@@ -60,13 +60,6 @@ typedef struct {
 #include "EXTERN.h"
 #include "perl.h"
 
-/* GCC-2.95.2/Mingw32-1.1 forgot the WINAPI on CommandLineToArgvW() */
-#if defined(__MINGW32__) && (__MINGW32_MAJOR_VERSION==1)
-#  include <shellapi.h>
-#else
-EXTERN_C LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCommandLine, int * pNumArgs);
-#endif
-
 #define NO_XSLOCKS
 #define PERL_NO_GET_CONTEXT
 #include "XSUB.h"
@@ -4986,22 +4979,3 @@ win32_free_argvw(pTHX_ void *ptr)
        *argv++ = Nullch;
     }
 }
-
-void
-win32_argv2utf8(int argc, char** argv)
-{
-    dTHX;
-    char* psz;
-    int length, wargc;
-    LPWSTR* lpwStr = CommandLineToArgvW(GetCommandLineW(), &wargc);
-    if (lpwStr && argc) {
-       while (argc--) {
-           length = WideCharToMultiByte(CP_UTF8, 0, lpwStr[--wargc], -1, NULL, 0, NULL, NULL);
-           Newxz(psz, length, char);
-           WideCharToMultiByte(CP_UTF8, 0, lpwStr[wargc], -1, psz, length, NULL, NULL);
-           argv[argc] = psz;
-       }
-       call_atexit(win32_free_argvw, argv);
-    }
-    GlobalFree((HGLOBAL)lpwStr);
-}
index f6b5e3e..224c657 100644 (file)
@@ -342,7 +342,6 @@ extern char *               win32_get_sitelib(const char *pl);
 extern char *          win32_get_vendorlib(const char *pl);
 extern int             IsWin95(void);
 extern int             IsWinNT(void);
-extern void            win32_argv2utf8(int argc, char** argv);
 
 #ifdef PERL_IMPLICIT_SYS
 extern void            win32_delete_internal_host(void *h);
index 846a33b..f5736b3 100644 (file)
@@ -2844,14 +2844,6 @@ win32_free_argvw(pTHX_ void *ptr)
     }
 }
 
-void
-win32_argv2utf8(int argc, char** argv)
-{
-  /* do nothing, since we're not aware of command line arguments
-   * currently ...
-   */
-}
-
 #if 0
 void
 Perl_sys_intern_clear(pTHX)