programs/net: convert to unicode

Kirill K. Smirnov lich at math.spbu.ru
Wed Jul 11 11:32:58 CDT 2007


ChangeLog:
Convert net.exe to unicode
Explicitly link against msvcrt
-------------- next part --------------
diff --git a/programs/net/Makefile.in b/programs/net/Makefile.in
index 5364f4e..fdcab77 100644
--- a/programs/net/Makefile.in
+++ b/programs/net/Makefile.in
@@ -3,8 +3,10 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = net.exe
-APPMODE   = -mconsole
-IMPORTS   = user32 advapi32 kernel32
+APPMODE   = -mconsole -municode
+EXTRADEFS = -DUNICODE
+IMPORTS   = user32 advapi32 kernel32 msvcrt
+EXTRAINCL = -I$(TOPSRCDIR)/include/msvcrt
 
 C_SRCS = net.c
 
diff --git a/programs/net/net.c b/programs/net/net.c
index 73e1763..95469b8 100644
--- a/programs/net/net.c
+++ b/programs/net/net.c
@@ -26,12 +26,13 @@ #define NET_STOP  0002
 
 int output_string(int msg, ...)
 {
-    char msg_buffer[8192];
+    WCHAR msg_bufferW[8192];
     va_list arguments;
 
-    LoadString(GetModuleHandle(NULL), msg, msg_buffer, sizeof(msg_buffer));
+    LoadString(GetModuleHandle(NULL), msg, msg_bufferW,
+               sizeof(msg_bufferW)/sizeof(msg_bufferW[0]));
     va_start(arguments, msg);
-    vprintf(msg_buffer, arguments);
+    vwprintf(msg_bufferW, arguments);
     va_end(arguments);
     return 0;
 }
@@ -68,12 +69,12 @@ static BOOL StopService(SC_HANDLE SCMana
     return result;
 }
 
-static BOOL net_service(int operation, char *service_name)
+static BOOL net_service(int operation, WCHAR *service_name)
 {
     SC_HANDLE SCManager, serviceHandle;
     BOOL result = 0;
-    char service_display_name[4096];
-    DWORD buffer_size = sizeof(service_display_name);
+    WCHAR service_display_name[4096];
+    DWORD buffer_size = sizeof(service_display_name) / sizeof(WCHAR);
 
     SCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
     if(!SCManager)
@@ -91,7 +92,7 @@ static BOOL net_service(int operation, c
 
 
     GetServiceDisplayName(SCManager, service_name, service_display_name, &buffer_size);
-    if (!service_display_name[0]) strcpy(service_display_name, service_name);
+    if (!service_display_name[0]) lstrcpyW(service_display_name, service_name);
 
     switch(operation)
     {
@@ -116,20 +117,24 @@ static BOOL net_service(int operation, c
     return result;
 }
 
-int main(int argc, char *argv[])
+int wmain(int argc, WCHAR *argvW[])
 {
+    const WCHAR HELP[] = {'H', 'E', 'L', 'P', 0};
+    const WCHAR START[] = {'S', 'T', 'A', 'R', 'T', 0};
+    const WCHAR STOP[] = {'S', 'T', 'O', 'P', 0};
+
     if (argc < 2)
     {
         output_string(STRING_USAGE);
         return 1;
     }
 
-    if(!strcasecmp(argv[1], "help"))
+    if(!lstrcmpiW(argvW[1], HELP))
     {
         output_string(STRING_HELP_USAGE);
     }
 
-    if(!strcasecmp(argv[1], "start"))
+    if(!lstrcmpiW(argvW[1], START))
     {
         if(argc < 3)
         {
@@ -137,14 +142,14 @@ int main(int argc, char *argv[])
             return 1;
         }
 
-        if(!net_service(NET_START, argv[2]))
+        if(!net_service(NET_START, argvW[2]))
         {
             return 1;
         }
         return 0;
     }
 
-    if(!strcasecmp(argv[1], "stop"))
+    if(!lstrcmpiW(argvW[1], STOP))
     {
         if(argc < 3)
         {
@@ -152,7 +157,7 @@ int main(int argc, char *argv[])
             return 1;
         }
 
-        if(!net_service(NET_STOP, argv[2]))
+        if(!net_service(NET_STOP, argvW[2]))
         {
             return 1;
         }


More information about the wine-patches mailing list