Author: dchapyshev
Date: Sat Feb 16 20:28:58 2008
New Revision: 32389
URL:
http://svn.reactos.org/svn/reactos?rev=32389&view=rev
Log:
- Add small checking
- Fix formating
Modified:
trunk/reactos/base/system/rundll32/lang/bg-BG.rc
trunk/reactos/base/system/rundll32/lang/de-DE.rc
trunk/reactos/base/system/rundll32/lang/el-GR.rc
trunk/reactos/base/system/rundll32/lang/en-US.rc
trunk/reactos/base/system/rundll32/lang/es-ES.rc
trunk/reactos/base/system/rundll32/lang/fr-FR.rc
trunk/reactos/base/system/rundll32/lang/hu-HU.rc
trunk/reactos/base/system/rundll32/lang/id-ID.rc
trunk/reactos/base/system/rundll32/lang/it-IT.rc
trunk/reactos/base/system/rundll32/lang/ja-JP.rc
trunk/reactos/base/system/rundll32/lang/lt-LT.rc
trunk/reactos/base/system/rundll32/lang/nb-NO.rc
trunk/reactos/base/system/rundll32/lang/nl-NL.rc
trunk/reactos/base/system/rundll32/lang/pl-PL.rc
trunk/reactos/base/system/rundll32/lang/pt-BR.rc
trunk/reactos/base/system/rundll32/lang/ru-RU.rc
trunk/reactos/base/system/rundll32/lang/sk-SK.rc
trunk/reactos/base/system/rundll32/lang/th-TH.rc
trunk/reactos/base/system/rundll32/lang/uk-UA.rc
trunk/reactos/base/system/rundll32/rundll32.c
Modified: trunk/reactos/base/system/rundll32/lang/bg-BG.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/bg-BG.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/bg-BG.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "Íåóñïåøíî çàðåæäàíå íà áèáëèîòåêà '%s'"
-IDS_MissingEntry, "Ëèïñâàùà âõîäíà òî÷êà:%s\nâ %s"
+ IDS_DllNotLoaded, "Íåóñïåøíî çàðåæäàíå íà áèáëèîòåêà '%s'"
+ IDS_MissingEntry, "Ëèïñâàùà âõîäíà òî÷êà:%s\nâ %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/de-DE.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/de-DE.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/de-DE.rc Sat Feb 16 20:28:58 2008
@@ -7,6 +7,6 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary laden von '%s' fehlgeschlagen"
-IDS_MissingEntry, "Fehlender Eintrag:%s\nIn %s"
+ IDS_DllNotLoaded, "LoadLibrary laden von '%s' fehlgeschlagen"
+ IDS_MissingEntry, "Fehlender Eintrag:%s\nIn %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/el-GR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/el-GR.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/el-GR.rc Sat Feb 16 20:28:58 2008
@@ -1,13 +1,11 @@
#include "resource.h"
/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
* Gr.rc by Dj Apal®
*/
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary äåí êáôÜöåñå íá öïñôþóåé '%s'"
-IDS_MissingEntry, "Ëåßðåé ôï óçìåßï åêêßíçóçò:%s\nIn %s"
+ IDS_DllNotLoaded, "LoadLibrary äåí êáôÜöåñå íá öïñôþóåé '%s'"
+ IDS_MissingEntry, "Ëåßðåé ôï óçìåßï åêêßíçóçò:%s\nIn %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/en-US.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/en-US.rc Sat Feb 16 20:28:58 2008
@@ -7,6 +7,6 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary failed to load '%s'"
-IDS_MissingEntry, "Missing entry point:%s\nIn %s"
+ IDS_DllNotLoaded, "LoadLibrary failed to load '%s'"
+ IDS_MissingEntry, "Missing entry point:%s\nIn %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/es-ES.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/es-ES.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/es-ES.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "El cargador de Librerias falló al cargar '%s'"
-IDS_MissingEntry, "Punto de entrada perdido:%s\nIn %s"
+ IDS_DllNotLoaded, "El cargador de Librerias falló al cargar
'%s'"
+ IDS_MissingEntry, "Punto de entrada perdido:%s\nIn %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/fr-FR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/fr-FR.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/fr-FR.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary a échoué lors du chargement de '%s'"
-IDS_MissingEntry, "Point d'entrée manquant:%s\ndans %s"
+ IDS_DllNotLoaded, "LoadLibrary a échoué lors du chargement de
'%s'"
+ IDS_MissingEntry, "Point d'entrée manquant:%s\ndans %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/hu-HU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/hu-HU.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/hu-HU.rc Sat Feb 16 20:28:58 2008
@@ -1,13 +1,11 @@
#include "resource.h"
/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
* Hungarian version is Copyright 2005 - Peter Nagy <nagylakas(a)gmail.com>
*/
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "A(z) '%s' állományt, vagy valamelyik összetevõjét nem
sikerült megnyitni"
-IDS_MissingEntry, "Hiányzó bejegyzés: %s\nIn A Következõ állomány nem tölthetõ be:
%s"
+ IDS_DllNotLoaded, "A(z) '%s' állományt, vagy valamelyik összetevõjét
nem sikerült megnyitni"
+ IDS_MissingEntry, "Hiányzó bejegyzés: %s\nIn A Következõ állomány nem tölthetõ
be: %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/id-ID.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/id-ID.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/id-ID.rc Sat Feb 16 20:28:58 2008
@@ -4,6 +4,6 @@
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary gagal untuk mengambil '%s'"
-IDS_MissingEntry, "entry point hilang:%s\nDalam %s"
+ IDS_DllNotLoaded, "LoadLibrary gagal untuk mengambil '%s'"
+ IDS_MissingEntry, "entry point hilang:%s\nDalam %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/it-IT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/it-IT.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/it-IT.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary fallita '%s'"
-IDS_MissingEntry, "Manca:%s\nIn %s"
+ IDS_DllNotLoaded, "LoadLibrary fallita '%s'"
+ IDS_MissingEntry, "Manca:%s\nIn %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/ja-JP.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/ja-JP.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/ja-JP.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary Í '%s' ÌÇÝÝɸsµÜµ½B"
-IDS_MissingEntry, "Gg |Cgª èܹñ:%s\n( %s )"
+ IDS_DllNotLoaded, "LoadLibrary Í '%s'
ÌÇÝÝɸsµÜµ½B"
+ IDS_MissingEntry, "Gg |Cgª èܹñ:%s\n( %s )"
END
Modified: trunk/reactos/base/system/rundll32/lang/lt-LT.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/lt-LT.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/lt-LT.rc Sat Feb 16 20:28:58 2008
@@ -5,6 +5,6 @@
LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary nepavyko paleisti '%s'"
-IDS_MissingEntry, "Trûksta áëjimo taðko:%s\nIn %s"
+ IDS_DllNotLoaded, "LoadLibrary nepavyko paleisti '%s'"
+ IDS_MissingEntry, "Trûksta áëjimo taðko:%s\nIn %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/nb-NO.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/nb-NO.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/nb-NO.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary mislykket å laste '%s'"
-IDS_MissingEntry, "Mistet oppføring moment:%s\nIn %s"
+ IDS_DllNotLoaded, "LoadLibrary mislykket å laste '%s'"
+ IDS_MissingEntry, "Mistet oppføring moment:%s\nIn %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/nl-NL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/nl-NL.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/nl-NL.rc Sat Feb 16 20:28:58 2008
@@ -1,13 +1,11 @@
#include "resource.h"
/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
* Translation done by Vertaald door Eric Janssen
*/
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary kon '%s' niet laden"
-IDS_MissingEntry, "Entry point:%s\n niet gevonden In %s"
+ IDS_DllNotLoaded, "LoadLibrary kon '%s' niet laden"
+ IDS_MissingEntry, "Entry point:%s\n niet gevonden In %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/pl-PL.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/pl-PL.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/pl-PL.rc Sat Feb 16 20:28:58 2008
@@ -8,6 +8,6 @@
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary nie móg³ za³adowaæ '%s'"
-IDS_MissingEntry, "Brakuj¹cy punkt wejcia:%s\nW %s"
+ IDS_DllNotLoaded, "LoadLibrary nie móg³ za³adowaæ '%s'"
+ IDS_MissingEntry, "Brakuj¹cy punkt wejcia:%s\nW %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/pt-BR.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/pt-BR.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/pt-BR.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "Erro ao carregar '%s'"
-IDS_MissingEntry, "Está faltando a entrada:%s\nem %s"
+ IDS_DllNotLoaded, "Erro ao carregar '%s'"
+ IDS_MissingEntry, "Está faltando a entrada:%s\nem %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/ru-RU.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/ru-RU.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/ru-RU.rc Sat Feb 16 20:28:58 2008
@@ -1,12 +1,8 @@
#include "resource.h"
-/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
- */
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó '%s'"
-IDS_MissingEntry, "Íåâîçìîæíî íàéòè òî÷êó âõîäà: %s\nâ áèáëèîòåêå %s"
+ IDS_DllNotLoaded, "Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó '%s'"
+ IDS_MissingEntry, "Íåâîçìîæíî íàéòè òî÷êó âõîäà: %s\nâ áèáëèîòåêå %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/sk-SK.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/sk-SK.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/sk-SK.rc Sat Feb 16 20:28:58 2008
@@ -1,13 +1,11 @@
#include "resource.h"
/*
- * Moved all hardcoded strings to En.rc.
- * By Magnus Olsen 2005 magnus(a)itkonsult-olsen.com
* Slovak translation by Kario 2007 <kario(a)szm.sk>
*/
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "Naèítanie kninice zlyhalo pri pokus naèíta
'%s'"
-IDS_MissingEntry, "Chybný vstupný bod:%s\nv %s"
+ IDS_DllNotLoaded, "Naèítanie kninice zlyhalo pri pokus naèíta
'%s'"
+ IDS_MissingEntry, "Chybný vstupný bod:%s\nv %s"
END
Modified: trunk/reactos/base/system/rundll32/lang/th-TH.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/th-TH.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/th-TH.rc Sat Feb 16 20:28:58 2008
@@ -9,6 +9,6 @@
LANGUAGE LANG_THAI, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "¡ÒúÃèؤèÒÃкºà¡Ô´¼Ô´¾ÅÒ´ '%s'"
-IDS_MissingEntry, "¡ÒÃà¢éÒËÒµÓá˹觼Դ¾ÅÒ´: %s\n%s"
+ IDS_DllNotLoaded, "¡ÒúÃèؤèÒÃкºà¡Ô´¼Ô´¾ÅÒ´ '%s'"
+ IDS_MissingEntry, "¡ÒÃà¢éÒËÒµÓá˹觼Դ¾ÅÒ´: %s\n%s"
END
Modified: trunk/reactos/base/system/rundll32/lang/uk-UA.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/lang/…
==============================================================================
--- trunk/reactos/base/system/rundll32/lang/uk-UA.rc (original)
+++ trunk/reactos/base/system/rundll32/lang/uk-UA.rc Sat Feb 16 20:28:58 2008
@@ -12,6 +12,6 @@
STRINGTABLE DISCARDABLE
BEGIN
-IDS_DllNotLoaded, "LoadLibrary íå âäàëîñÿ çàâàíòàæèòè '%s'"
-IDS_MissingEntry, "Íåìîæëèâî çíàéòè òî÷êó âõîäó:%s\n á³áë³îòåö³ %s"
+ IDS_DllNotLoaded, "LoadLibrary íå âäàëîñÿ çàâàíòàæèòè '%s'"
+ IDS_MissingEntry, "Íåìîæëèâî çíàéòè òî÷êó âõîäó:%s\n á³áë³îòåö³ %s"
END
Modified: trunk/reactos/base/system/rundll32/rundll32.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/rundll32/rundl…
==============================================================================
--- trunk/reactos/base/system/rundll32/rundll32.c (original)
+++ trunk/reactos/base/system/rundll32/rundll32.c Sat Feb 16 20:28:58 2008
@@ -60,176 +60,176 @@
// and is not intended to be used in any other program.
LPTSTR *WINAPI CommandLineToArgv(LPCTSTR lpCmdLine, int *lpArgc)
{
- LPTSTR *argv, lpSrc, lpDest, lpArg;
- int argc, nBSlash, nNames;
- BOOL bInQuotes, bFirstChar;
-
- // If null was passed in for lpCmdLine, there are no arguments
- if (!lpCmdLine) {
- if (lpArgc)
- *lpArgc = 0;
- return 0;
- }
-
- lpSrc = (LPTSTR)lpCmdLine;
- // Skip spaces at beginning
- while (*lpSrc == _T(' ') || *lpSrc == _T('\t'))
- lpSrc++;
-
- // If command-line starts with null, there are no arguments
- if (*lpSrc == 0) {
- if (lpArgc)
- *lpArgc = 0;
- return 0;
- }
-
- lpArg = lpSrc;
- argc = 0;
- nBSlash = 0;
- bInQuotes = FALSE;
- bFirstChar = TRUE;
- nNames = 0;
-
- // Count the number of arguments
- while (nNames < 4) {
- if (*lpSrc == 0 || (*lpSrc == _T(',') && nNames == 2) || ((*lpSrc ==
_T(' ') || *lpSrc == _T('\t')) && !bInQuotes)) {
- // Whitespace not enclosed in quotes signals the start of another argument
- argc++;
-
- // Skip whitespace between arguments
- while (*lpSrc == _T(' ') || *lpSrc == _T('\t') || (*lpSrc ==
_T(',') && nNames == 2))
- lpSrc++;
- if (*lpSrc == 0)
- break;
- if (nNames >= 3) {
- // Increment the count for the last argument
- argc++;
- break;
- }
- nBSlash = 0;
- bFirstChar = TRUE;
- continue;
- }
- else if (*lpSrc == _T('\\')) {
- // Count consecutive backslashes
- nBSlash++;
- bFirstChar = FALSE;
- }
- else if (*lpSrc == _T('\"') && !(nBSlash & 1)) {
- // Open or close quotes
- bInQuotes = !bInQuotes;
- nBSlash = 0;
- }
- else {
- // Some other character
- nBSlash = 0;
- if (bFirstChar && ((*lpSrc != _T('/') && nNames <= 1) ||
nNames > 1))
- nNames++;
- bFirstChar = FALSE;
- }
- lpSrc++;
- }
-
- // Allocate space for the pointers in argv and the strings in one block
- argv = (LPTSTR *)malloc(argc * sizeof(LPTSTR) + (_tcslen(lpArg) + 1) * sizeof(TCHAR));
-
- if (!argv) {
- // Memory allocation failed
- if (lpArgc)
- *lpArgc = 0;
- return 0;
- }
-
- lpSrc = lpArg;
- lpDest = lpArg = (LPTSTR)(argv + argc);
- argc = 0;
- nBSlash = 0;
- bInQuotes = FALSE;
- bFirstChar = TRUE;
- nNames = 0;
-
- // Fill the argument array
- while (nNames < 4) {
- if (*lpSrc == 0 || (*lpSrc == _T(',') && nNames == 2) || ((*lpSrc ==
_T(' ') || *lpSrc == _T('\t')) && !bInQuotes)) {
- // Whitespace not enclosed in quotes signals the start of another argument
- // Null-terminate argument
- *lpDest++ = 0;
- argv[argc++] = lpArg;
-
- // Skip whitespace between arguments
- while (*lpSrc == _T(' ') || *lpSrc == _T('\t') || (*lpSrc ==
_T(',') && nNames == 2))
- lpSrc++;
- if (*lpSrc == 0)
- break;
- lpArg = lpDest;
- if (nNames >= 3) {
- // Copy the rest of the command-line to the last argument
- argv[argc++] = lpArg;
- _tcscpy(lpArg,lpSrc);
- break;
- }
- nBSlash = 0;
- bFirstChar = TRUE;
- continue;
- }
- else if (*lpSrc == _T('\\')) {
- *lpDest++ = _T('\\');
- lpSrc++;
-
- // Count consecutive backslashes
- nBSlash++;
- bFirstChar = FALSE;
- }
- else if (*lpSrc == _T('\"')) {
- if (!(nBSlash & 1)) {
- // If an even number of backslashes are before the quotes,
- // the quotes don't go in the output
- lpDest -= nBSlash / 2;
- bInQuotes = !bInQuotes;
- }
- else {
- // If an odd number of backslashes are before the quotes,
- // output a quote
- lpDest -= (nBSlash + 1) / 2;
- *lpDest++ = _T('\"');
- bFirstChar = FALSE;
- }
- lpSrc++;
- nBSlash = 0;
- }
- else {
- // Copy other characters
- if (bFirstChar && ((*lpSrc != _T('/') && nNames <= 1) ||
nNames > 1))
- nNames++;
- *lpDest++ = *lpSrc++;
- nBSlash = 0;
- bFirstChar = FALSE;
- }
- }
-
- if (lpArgc)
- *lpArgc = argc;
- return argv;
+ LPTSTR *argv, lpSrc, lpDest, lpArg;
+ int argc, nBSlash, nNames;
+ BOOL bInQuotes, bFirstChar;
+
+ // If null was passed in for lpCmdLine, there are no arguments
+ if (!lpCmdLine) {
+ if (lpArgc)
+ *lpArgc = 0;
+ return 0;
+ }
+
+ lpSrc = (LPTSTR)lpCmdLine;
+ // Skip spaces at beginning
+ while (*lpSrc == _T(' ') || *lpSrc == _T('\t'))
+ lpSrc++;
+
+ // If command-line starts with null, there are no arguments
+ if (*lpSrc == 0) {
+ if (lpArgc)
+ *lpArgc = 0;
+ return 0;
+ }
+
+ lpArg = lpSrc;
+ argc = 0;
+ nBSlash = 0;
+ bInQuotes = FALSE;
+ bFirstChar = TRUE;
+ nNames = 0;
+
+ // Count the number of arguments
+ while (nNames < 4) {
+ if (*lpSrc == 0 || (*lpSrc == _T(',') && nNames == 2) || ((*lpSrc
== _T(' ') || *lpSrc == _T('\t')) && !bInQuotes)) {
+ // Whitespace not enclosed in quotes signals the start of another argument
+ argc++;
+
+ // Skip whitespace between arguments
+ while (*lpSrc == _T(' ') || *lpSrc == _T('\t') || (*lpSrc ==
_T(',') && nNames == 2))
+ lpSrc++;
+ if (*lpSrc == 0)
+ break;
+ if (nNames >= 3) {
+ // Increment the count for the last argument
+ argc++;
+ break;
+ }
+ nBSlash = 0;
+ bFirstChar = TRUE;
+ continue;
+ }
+ else if (*lpSrc == _T('\\')) {
+ // Count consecutive backslashes
+ nBSlash++;
+ bFirstChar = FALSE;
+ }
+ else if (*lpSrc == _T('\"') && !(nBSlash & 1)) {
+ // Open or close quotes
+ bInQuotes = !bInQuotes;
+ nBSlash = 0;
+ }
+ else {
+ // Some other character
+ nBSlash = 0;
+ if (bFirstChar && ((*lpSrc != _T('/') && nNames <=
1) || nNames > 1))
+ nNames++;
+ bFirstChar = FALSE;
+ }
+ lpSrc++;
+ }
+
+ // Allocate space for the pointers in argv and the strings in one block
+ argv = (LPTSTR *)malloc(argc * sizeof(LPTSTR) + (_tcslen(lpArg) + 1) *
sizeof(TCHAR));
+
+ if (!argv) {
+ // Memory allocation failed
+ if (lpArgc)
+ *lpArgc = 0;
+ return 0;
+ }
+
+ lpSrc = lpArg;
+ lpDest = lpArg = (LPTSTR)(argv + argc);
+ argc = 0;
+ nBSlash = 0;
+ bInQuotes = FALSE;
+ bFirstChar = TRUE;
+ nNames = 0;
+
+ // Fill the argument array
+ while (nNames < 4) {
+ if (*lpSrc == 0 || (*lpSrc == _T(',') && nNames == 2) || ((*lpSrc
== _T(' ') || *lpSrc == _T('\t')) && !bInQuotes)) {
+ // Whitespace not enclosed in quotes signals the start of another argument
+ // Null-terminate argument
+ *lpDest++ = 0;
+ argv[argc++] = lpArg;
+
+ // Skip whitespace between arguments
+ while (*lpSrc == _T(' ') || *lpSrc == _T('\t') || (*lpSrc ==
_T(',') && nNames == 2))
+ lpSrc++;
+ if (*lpSrc == 0)
+ break;
+ lpArg = lpDest;
+ if (nNames >= 3) {
+ // Copy the rest of the command-line to the last argument
+ argv[argc++] = lpArg;
+ _tcscpy(lpArg,lpSrc);
+ break;
+ }
+ nBSlash = 0;
+ bFirstChar = TRUE;
+ continue;
+ }
+ else if (*lpSrc == _T('\\')) {
+ *lpDest++ = _T('\\');
+ lpSrc++;
+
+ // Count consecutive backslashes
+ nBSlash++;
+ bFirstChar = FALSE;
+ }
+ else if (*lpSrc == _T('\"')) {
+ if (!(nBSlash & 1)) {
+ // If an even number of backslashes are before the quotes,
+ // the quotes don't go in the output
+ lpDest -= nBSlash / 2;
+ bInQuotes = !bInQuotes;
+ }
+ else {
+ // If an odd number of backslashes are before the quotes,
+ // output a quote
+ lpDest -= (nBSlash + 1) / 2;
+ *lpDest++ = _T('\"');
+ bFirstChar = FALSE;
+ }
+ lpSrc++;
+ nBSlash = 0;
+ }
+ else {
+ // Copy other characters
+ if (bFirstChar && ((*lpSrc != _T('/') && nNames <=
1) || nNames > 1))
+ nNames++;
+ *lpDest++ = *lpSrc++;
+ nBSlash = 0;
+ bFirstChar = FALSE;
+ }
+ }
+
+ if (lpArgc)
+ *lpArgc = argc;
+ return argv;
}
void GetModuleTitle(void)
{
- LPTSTR lpStr;
-
- GetModuleFileName(0,ModuleFileName,MAX_PATH);
- ModuleTitle = ModuleFileName;
-
- for (lpStr = ModuleFileName;*lpStr;lpStr++) {
- if (*lpStr == _T('\\'))
- ModuleTitle = lpStr+1;
- }
-
- for (lpStr = ModuleTitle;*lpStr;lpStr++) {
- if (_tcsicmp(lpStr,_T(".exe"))==0)
- break;
- }
-
- *lpStr = 0;
+ LPTSTR lpStr;
+
+ GetModuleFileName(0,ModuleFileName,MAX_PATH);
+ ModuleTitle = ModuleFileName;
+
+ for (lpStr = ModuleFileName;*lpStr;lpStr++) {
+ if (*lpStr == _T('\\'))
+ ModuleTitle = lpStr+1;
+ }
+
+ for (lpStr = ModuleTitle;*lpStr;lpStr++) {
+ if (_tcsicmp(lpStr,_T(".exe"))==0)
+ break;
+ }
+
+ *lpStr = 0;
}
// The macro ConvertToWideChar takes a tstring parameter and returns
@@ -245,15 +245,15 @@
LPWSTR ConvertToWideChar(LPCSTR lpString)
{
- LPWSTR lpwString;
- size_t nStrLen;
-
- nStrLen = strlen(lpString) + 1;
-
- lpwString = (LPWSTR)malloc(nStrLen * sizeof(WCHAR));
- MultiByteToWideChar(0,0,lpString,nStrLen,lpwString,nStrLen);
-
- return lpwString;
+ LPWSTR lpwString;
+ size_t nStrLen;
+
+ nStrLen = strlen(lpString) + 1;
+
+ lpwString = (LPWSTR)malloc(nStrLen * sizeof(WCHAR));
+ MultiByteToWideChar(0,0,lpString,nStrLen,lpwString,nStrLen);
+
+ return lpwString;
}
#define FreeConvertedWideChar(lpwString) free(lpwString)
@@ -281,47 +281,54 @@
// for the returned string when it is no longer needed.
LPSTR DuplicateToMultiByte(LPCTSTR lptString, size_t nBufferSize)
{
- LPSTR lpString;
- size_t nStrLen;
-
- nStrLen = _tcslen(lptString) + 1;
- if (nBufferSize == 0) nBufferSize = nStrLen;
-
- lpString = (LPSTR)malloc(nBufferSize);
+ LPSTR lpString;
+ size_t nStrLen;
+
+ nStrLen = _tcslen(lptString) + 1;
+ if (nBufferSize == 0) nBufferSize = nStrLen;
+
+ lpString = (LPSTR)malloc(nBufferSize);
#ifdef UNICODE
- WideCharToMultiByte(0,0,lptString,nStrLen,lpString,nBufferSize,0,0);
+ WideCharToMultiByte(0,0,lptString,nStrLen,lpString,nBufferSize,0,0);
#else
- strncpy(lpString,lptString,nBufferSize);
-#endif
-
- return lpString;
+ strncpy(lpString,lptString,nBufferSize);
+#endif
+
+ return lpString;
}
LRESULT CALLBACK EmptyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
- return DefWindowProc(hWnd, uMsg, wParam, lParam);
+ return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
// Registers a minimal window class for passing to the dll function
-ATOM RegisterBlankClass(HINSTANCE hInstance)
-{
- WNDCLASSEX wcex;
-
- wcex.cbSize = sizeof(WNDCLASSEX);
-
- wcex.style = 0;
- wcex.lpfnWndProc = EmptyWindowProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = 0;
- wcex.hCursor = 0;
- wcex.hbrBackground = 0;
- wcex.lpszMenuName = 0;
- wcex.lpszClassName = rundll32_wclass;
- wcex.hIconSm = 0;
-
- return RegisterClassEx(&wcex);
+ATOM RegisterBlankClass(HINSTANCE hInstance, HINSTANCE hPrevInstance)
+{
+ WNDCLASSEX wcex;
+ ATOM Ret;
+
+ if (!hPrevInstance)
+ {
+ wcex.cbSize = sizeof(WNDCLASSEX);
+
+ wcex.style = 0;
+ wcex.lpfnWndProc = EmptyWindowProc;
+ wcex.cbClsExtra = 0;
+ wcex.cbWndExtra = 0;
+ wcex.hInstance = hInstance;
+ wcex.hIcon = 0;
+ wcex.hCursor = 0;
+ wcex.hbrBackground = 0;
+ wcex.lpszMenuName = 0;
+ wcex.lpszClassName = rundll32_wclass;
+ wcex.hIconSm = 0;
+ }
+
+ Ret = RegisterClassEx(&wcex);
+ if (!Ret) return FALSE;
+
+ return Ret;
}
int WINAPI WinMain(
@@ -331,149 +338,152 @@
int nCmdShow
)
{
- int argc;
- TCHAR szMsg[RC_STRING_MAX_SIZE];
-
- LPTSTR *argv;
- LPTSTR lptCmdLine,lptDllName,lptFuncName,lptMsgBuffer;
- LPSTR lpFuncName,lpaCmdLine;
- LPWSTR lpwCmdLine;
- HMODULE hDll;
- DllWinMainW fnDllWinMainW;
- DllWinMainA fnDllWinMainA;
- HWND hWindow;
- int nRetVal,i;
- size_t nStrLen;
-
- // Get command-line in argc-argv format
- argv = CommandLineToArgv(GetCommandLine(),&argc);
-
- // Skip all beginning arguments starting with a slash (/)
- for (i = 1; i < argc; i++)
- if (*argv[i] != _T('/')) break;
-
- // If no dll was specified, there is nothing to do
- if (i >= argc) {
- if (argv) free(argv);
- return 0;
- }
-
- lptDllName = argv[i++];
-
- // The next argument, which specifies the name of the dll function,
- // can either have a comma between it and the dll filename or a space.
- // Using a comma here is the preferred method
- if (i < argc)
- lptFuncName = argv[i++];
- else
- lptFuncName = _T("");
-
- // If no function name was specified, nothing needs to be done
- if (!*lptFuncName) {
- if (argv) free(argv);
- return 0;
- }
-
- // The rest of the arguments will be passed to dll function
- if (i < argc)
- lptCmdLine = argv[i];
- else
- lptCmdLine = _T("");
-
- nRetVal = 0;
-
- // Everything is all setup, so load the dll now
- hDll = LoadLibrary(lptDllName);
- if (hDll) {
- nStrLen = _tcslen(lptFuncName);
- // Make a non-unicode version of the function name,
- // since that is all GetProcAddress accepts
- lpFuncName = DuplicateToMultiByte(lptFuncName,nStrLen + 2);
+ int argc;
+ TCHAR szMsg[RC_STRING_MAX_SIZE];
+
+ LPTSTR *argv;
+ LPTSTR lptCmdLine,lptDllName,lptFuncName,lptMsgBuffer;
+ LPSTR lpFuncName,lpaCmdLine;
+ LPWSTR lpwCmdLine;
+ HMODULE hDll;
+ DllWinMainW fnDllWinMainW;
+ DllWinMainA fnDllWinMainA;
+ HWND hWindow;
+ int nRetVal,i;
+ size_t nStrLen;
+
+ // Get command-line in argc-argv format
+ argv = CommandLineToArgv(GetCommandLine(),&argc);
+
+ // Skip all beginning arguments starting with a slash (/)
+ for (i = 1; i < argc; i++)
+ if (*argv[i] != _T('/')) break;
+
+ // If no dll was specified, there is nothing to do
+ if (i >= argc) {
+ if (argv) free(argv);
+ return 0;
+ }
+
+ lptDllName = argv[i++];
+
+ // The next argument, which specifies the name of the dll function,
+ // can either have a comma between it and the dll filename or a space.
+ // Using a comma here is the preferred method
+ if (i < argc)
+ lptFuncName = argv[i++];
+ else
+ lptFuncName = _T("");
+
+ // If no function name was specified, nothing needs to be done
+ if (!*lptFuncName) {
+ if (argv) free(argv);
+ return 0;
+ }
+
+ // The rest of the arguments will be passed to dll function
+ if (i < argc)
+ lptCmdLine = argv[i];
+ else
+ lptCmdLine = _T("");
+
+ nRetVal = 0;
+
+ // Everything is all setup, so load the dll now
+ hDll = LoadLibrary(lptDllName);
+ if (hDll) {
+ nStrLen = _tcslen(lptFuncName);
+ // Make a non-unicode version of the function name,
+ // since that is all GetProcAddress accepts
+ lpFuncName = DuplicateToMultiByte(lptFuncName,nStrLen + 2);
#ifdef UNICODE
- lpFuncName[nStrLen] = 'W';
- lpFuncName[nStrLen+1] = 0;
- // Get address of unicode version of the dll function if it exists
- fnDllWinMainW = (DllWinMainW)GetProcAddress(hDll,lpFuncName);
- fnDllWinMainA = 0;
- if (!fnDllWinMainW) {
- // If no unicode function was found, get the address of the non-unicode function
- lpFuncName[nStrLen] = 'A';
- fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
- if (!fnDllWinMainA) {
- // If first non-unicode function was not found, get the address
- // of the other non-unicode function
- lpFuncName[nStrLen] = 0;
- fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
- }
- }
+ lpFuncName[nStrLen] = 'W';
+ lpFuncName[nStrLen+1] = 0;
+ // Get address of unicode version of the dll function if it exists
+ fnDllWinMainW = (DllWinMainW)GetProcAddress(hDll,lpFuncName);
+ fnDllWinMainA = 0;
+ if (!fnDllWinMainW) {
+ // If no unicode function was found, get the address of the non-unicode
function
+ lpFuncName[nStrLen] = 'A';
+ fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
+ if (!fnDllWinMainA) {
+ // If first non-unicode function was not found, get the address
+ // of the other non-unicode function
+ lpFuncName[nStrLen] = 0;
+ fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
+ }
+ }
#else
- // Get address of non-unicode version of the dll function if it exists
- fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
- fnDllWinMainW = 0;
- if (!fnDllWinMainA) {
- // If first non-unicode function was not found, get the address
- // of the other non-unicode function
- lpFuncName[nStrLen] = 'A';
- lpFuncName[nStrLen+1] = 0;
- fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
- if (!fnDllWinMainA) {
- // If non-unicode function was not found, get the address of the unicode function
- lpFuncName[nStrLen] = 'W';
- fnDllWinMainW = (DllWinMainW)GetProcAddress(hDll,lpFuncName);
- }
- }
-#endif
-
- free(lpFuncName);
-
- RegisterBlankClass(hInstance);
- // Create a window so we can pass a window handle to
- // the dll function; this is required
- hWindow =
CreateWindowEx(0,rundll32_wclass,rundll32_wtitle,0,CW_USEDEFAULT,0,CW_USEDEFAULT,0,0,0,hInstance,0);
-
- if (fnDllWinMainW) {
- // Convert the command-line string to unicode and call the dll function
- lpwCmdLine = ConvertToWideChar(lptCmdLine);
- nRetVal = fnDllWinMainW(hWindow,hInstance,lpwCmdLine,nCmdShow);
- FreeConvertedWideChar(lpwCmdLine);
- }
- else if (fnDllWinMainA) {
- // Convert the command-line string to ansi and call the dll function
- lpaCmdLine = ConvertToMultiByte(lptCmdLine);
- nRetVal = fnDllWinMainA(hWindow,hInstance,lpaCmdLine,nCmdShow);
- FreeConvertedMultiByte(lpaCmdLine);
- }
- else {
- // The specified dll function was not found; display an error message
- GetModuleTitle();
+ // Get address of non-unicode version of the dll function if it exists
+ fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
+ fnDllWinMainW = 0;
+ if (!fnDllWinMainA) {
+ // If first non-unicode function was not found, get the address
+ // of the other non-unicode function
+ lpFuncName[nStrLen] = 'A';
+ lpFuncName[nStrLen+1] = 0;
+ fnDllWinMainA = (DllWinMainA)GetProcAddress(hDll,lpFuncName);
+ if (!fnDllWinMainA) {
+ // If non-unicode function was not found, get the address of the unicode
function
+ lpFuncName[nStrLen] = 'W';
+ fnDllWinMainW = (DllWinMainW)GetProcAddress(hDll,lpFuncName);
+ }
+ }
+#endif
+
+ free(lpFuncName);
+
+ if (!RegisterBlankClass(hInstance, hPrevInstance))
+ {
+ return 0;
+ }
+ // Create a window so we can pass a window handle to
+ // the dll function; this is required
+ hWindow =
CreateWindowEx(0,rundll32_wclass,rundll32_wtitle,0,CW_USEDEFAULT,0,CW_USEDEFAULT,0,0,0,hInstance,0);
+
+ if (fnDllWinMainW) {
+ // Convert the command-line string to unicode and call the dll function
+ lpwCmdLine = ConvertToWideChar(lptCmdLine);
+ nRetVal = fnDllWinMainW(hWindow,hInstance,lpwCmdLine,nCmdShow);
+ FreeConvertedWideChar(lpwCmdLine);
+ }
+ else if (fnDllWinMainA) {
+ // Convert the command-line string to ansi and call the dll function
+ lpaCmdLine = ConvertToMultiByte(lptCmdLine);
+ nRetVal = fnDllWinMainA(hWindow,hInstance,lpaCmdLine,nCmdShow);
+ FreeConvertedMultiByte(lpaCmdLine);
+ }
+ else {
+ // The specified dll function was not found; display an error message
+ GetModuleTitle();
LoadString( GetModuleHandle(NULL), IDS_MissingEntry, (LPTSTR)
szMsg,RC_STRING_MAX_SIZE);
- lptMsgBuffer = (LPTSTR)malloc((_tcslen(szMsg) - 4 + _tcslen(lptFuncName) +
_tcslen(lptDllName) + 1) * sizeof(TCHAR));
- _stprintf(lptMsgBuffer,szMsg,lptFuncName,lptDllName);
- MessageBox(0,lptMsgBuffer,ModuleTitle,MB_ICONERROR);
- free(lptMsgBuffer);
- }
-
- DestroyWindow(hWindow);
- UnregisterClass(rundll32_wclass,hInstance);
-
- // The dll function has finished executing, so unload it
- FreeLibrary(hDll);
- }
- else {
- // The dll could not be loaded; display an error message
- GetModuleTitle();
- LoadString( GetModuleHandle(NULL), IDS_DllNotLoaded, (LPTSTR)
szMsg,RC_STRING_MAX_SIZE);
-
- lptMsgBuffer = (LPTSTR)malloc((_tcslen(szMsg) - 2 + _tcslen(lptDllName) + 1) *
sizeof(TCHAR));
- _stprintf(lptMsgBuffer,szMsg,lptDllName);
-
- MessageBox(0,lptMsgBuffer,ModuleTitle,MB_ICONERROR);
- free(lptMsgBuffer);
- }
-
- if (argv) free(argv);
- return nRetVal;
-}
-
+ lptMsgBuffer = (LPTSTR)malloc((_tcslen(szMsg) - 4 + _tcslen(lptFuncName) +
_tcslen(lptDllName) + 1) * sizeof(TCHAR));
+ _stprintf(lptMsgBuffer,szMsg,lptFuncName,lptDllName);
+ MessageBox(0,lptMsgBuffer,ModuleTitle,MB_ICONERROR);
+ free(lptMsgBuffer);
+ }
+
+ DestroyWindow(hWindow);
+ UnregisterClass(rundll32_wclass,hInstance);
+
+ // The dll function has finished executing, so unload it
+ FreeLibrary(hDll);
+ }
+ else {
+ // The dll could not be loaded; display an error message
+ GetModuleTitle();
+ LoadString( GetModuleHandle(NULL), IDS_DllNotLoaded, (LPTSTR)
szMsg,RC_STRING_MAX_SIZE);
+
+ lptMsgBuffer = (LPTSTR)malloc((_tcslen(szMsg) - 2 + _tcslen(lptDllName) + 1) *
sizeof(TCHAR));
+ _stprintf(lptMsgBuffer,szMsg,lptDllName);
+
+ MessageBox(0,lptMsgBuffer,ModuleTitle,MB_ICONERROR);
+ free(lptMsgBuffer);
+ }
+
+ if (argv) free(argv);
+ return nRetVal;
+}
+