[CMAKE]
[reactos.git] / base / applications / network / ipconfig / ipconfig.c
index 5bb2d95..2657614 100644 (file)
 HINSTANCE hInstance;
 HANDLE ProcessHeap;
 
+int LoadStringAndOem(HINSTANCE hInst,
+               UINT uID,
+               LPTSTR szNode,
+               int Siz
+)      
+{
+  TCHAR szTmp[25];
+  int res = LoadString(hInst, uID, szTmp, sizeof(szTmp)); 
+  CharToOem(szTmp, szNode);
+  return(res);
+}
 
 LPTSTR GetNodeTypeName(UINT NodeType)
 {
@@ -33,27 +44,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 +80,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 +164,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 +192,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);
             }
         }
     }
@@ -359,6 +381,7 @@ CLEANUP:
 
 VOID ShowInfo(BOOL bAll)
 {
+    MIB_IFROW mibEntry;
     PIP_ADAPTER_INFO pAdapterInfo = NULL;
     PIP_ADAPTER_INFO pAdapter = NULL;
     ULONG adaptOutBufLen = 0;
@@ -441,6 +464,9 @@ VOID ShowInfo(BOOL bAll)
     {
         LPTSTR IntType, myConType;
 
+        mibEntry.dwIndex = pAdapter->Index;
+        GetIfEntry(&mibEntry);
+
         IntType = GetInterfaceTypeName(pAdapter->Type);
         myConType = GetConnectionType(pAdapter->AdapterName);
 
@@ -449,7 +475,7 @@ VOID ShowInfo(BOOL bAll)
         if (myConType != NULL) HeapFree(ProcessHeap, 0, myConType);
 
         /* check if the adapter is connected to the media */
-        if (_tcscmp(pAdapter->IpAddressList.IpAddress.String, "0.0.0.0") == 0)
+        if (mibEntry.dwOperStatus != MIB_IF_OPER_STATUS_CONNECTED && mibEntry.dwOperStatus != MIB_IF_OPER_STATUS_OPERATIONAL)
         {
             _tprintf(_T("\tMedia State . . . . . . . . . . . : Media disconnected\n"));
             pAdapter = pAdapter->Next;
@@ -670,7 +696,7 @@ VOID Usage(VOID)
             if (lpUsage == NULL)
                 return;
 
-            if (LoadString(hInstance,
+            if (LoadStringAndOem(hInstance,
                            IDS_USAGE,
                            lpUsage,
                            Size))