* Sync with recent trunk (r52637).
[reactos.git] / base / applications / network / ipconfig / ipconfig.c
index 3d9de7d..2561b36 100644 (file)
 HINSTANCE hInstance;
 HANDLE ProcessHeap;
 
+int LoadStringAndOem(HINSTANCE hInst,
+               UINT uID,
+               LPTSTR szNode,
+               int byteSize
+)
+{
+  TCHAR *szTmp;
+  int res;
+
+  szTmp = (LPTSTR)HeapAlloc(ProcessHeap, 0, byteSize);
+  if (szTmp == NULL)
+  {
+    return 0;
+  }
+  res = LoadString(hInst, uID, szTmp, byteSize); 
+  CharToOem(szTmp, szNode);
+  HeapFree(ProcessHeap, 0, szTmp);
+  return res;
+}
 
 LPTSTR GetNodeTypeName(UINT NodeType)
 {
@@ -33,27 +52,27 @@ LPTSTR GetNodeTypeName(UINT NodeType)
     switch (NodeType)
     {
         case 1:
-            if (!LoadString(hInstance, IDS_BCAST, szNode, sizeof(szNode)))
+            if (!LoadStringAndOem(hInstance, IDS_BCAST, szNode,  sizeof(szNode)))
                 return NULL;
             break;
 
         case 2:
-            if (!LoadString(hInstance, IDS_P2P, szNode, sizeof(szNode)))
+            if (!LoadStringAndOem(hInstance, IDS_P2P, szNode,  sizeof(szNode)))
                 return NULL;
             break;
 
         case 4:
-            if (!LoadString(hInstance, IDS_MIXED, szNode,  sizeof(szNode)))
+            if (!LoadStringAndOem(hInstance, IDS_MIXED, szNode,  sizeof(szNode)))
                 return NULL;
             break;
 
         case 8:
-            if (!LoadString(hInstance, IDS_HYBRID, szNode,  sizeof(szNode)))
+            if (!LoadStringAndOem(hInstance, IDS_HYBRID, szNode,  sizeof(szNode)))
                 return NULL;
             break;
 
         default :
-            if (!LoadString(hInstance, IDS_UNKNOWN, szNode,  sizeof(szNode)))
+            if (!LoadStringAndOem(hInstance, IDS_UNKNOWN, szNode,  sizeof(szNode)))
                 return NULL;
             break;
     }
@@ -69,42 +88,42 @@ LPTSTR GetInterfaceTypeName(UINT InterfaceType)
     switch (InterfaceType)
     {
         case MIB_IF_TYPE_OTHER:
-            if (!LoadString(hInstance, IDS_OTHER, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_OTHER, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
 
         case MIB_IF_TYPE_ETHERNET:
-            if (!LoadString(hInstance, IDS_ETH, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_ETH, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
 
         case MIB_IF_TYPE_TOKENRING:
-            if (!LoadString(hInstance, IDS_TOKEN, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_TOKEN, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
 
         case MIB_IF_TYPE_FDDI:
-            if (!LoadString(hInstance, IDS_FDDI, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_FDDI, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
 
         case MIB_IF_TYPE_PPP:
-            if (!LoadString(hInstance, IDS_PPP, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_PPP, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
 
         case MIB_IF_TYPE_LOOPBACK:
-            if (!LoadString(hInstance, IDS_LOOP, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_LOOP, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
 
         case MIB_IF_TYPE_SLIP:
-            if (!LoadString(hInstance, IDS_SLIP, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_SLIP, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
 
         default:
-            if (!LoadString(hInstance, IDS_UNKNOWN, szIntType, sizeof(szIntType)))
+            if (!LoadStringAndOem(hInstance, IDS_UNKNOWN, szIntType, sizeof(szIntType)))
                 return NULL;
             break;
     }
@@ -153,6 +172,7 @@ LPTSTR GetConnectionType(LPTSTR lpClass)
 {
     HKEY hKey = NULL;
     LPTSTR ConType = NULL;
+    LPTSTR ConTypeTmp = NULL;
     TCHAR Path[256];
     LPTSTR PrePath  = _T("SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\");
     LPTSTR PostPath = _T("\\Connection");
@@ -180,24 +200,34 @@ LPTSTR GetConnectionType(LPTSTR lpClass)
                            NULL,
                            &dwDataSize) == ERROR_SUCCESS)
         {
+            ConTypeTmp = (LPTSTR)HeapAlloc(ProcessHeap,
+                                        0,
+                                        dwDataSize);
+
             ConType = (LPTSTR)HeapAlloc(ProcessHeap,
                                         0,
                                         dwDataSize);
-            if (ConType)
+            if (ConType && ConTypeTmp)
             {
                 if(RegQueryValueEx(hKey,
                                    _T("Name"),
                                    NULL,
                                    &dwType,
-                                   (PBYTE)ConType,
+                                   (PBYTE)ConTypeTmp,
                                    &dwDataSize) != ERROR_SUCCESS)
                 {
                     HeapFree(ProcessHeap,
                              0,
                              ConType);
 
+                    HeapFree(ProcessHeap,
+                             0,
+                             ConTypeTmp);
+
                     ConType = NULL;
                 }
+
+                if (ConType) CharToOem(ConTypeTmp, ConType);
             }
         }
     }
@@ -674,13 +704,13 @@ VOID Usage(VOID)
             if (lpUsage == NULL)
                 return;
 
-            if (LoadString(hInstance,
+            if (LoadStringAndOem(hInstance,
                            IDS_USAGE,
                            lpUsage,
                            Size))
             {
                 _tprintf(_T("%s"), lpUsage);
-            }
+            }            
         }
     }