Author: tfaber
Date: Fri Oct 12 11:40:53 2012
New Revision: 57539
URL:
http://svn.reactos.org/svn/reactos?rev=57539&view=rev
Log:
[WLANCONF]
- Add localization support. Patch by Lee Schroeder.
CORE-6721
Added:
trunk/reactos/base/applications/network/wlanconf/lang/
trunk/reactos/base/applications/network/wlanconf/lang/en-US.rc (with props)
trunk/reactos/base/applications/network/wlanconf/resource.h (with props)
Modified:
trunk/reactos/base/applications/network/wlanconf/CMakeLists.txt
trunk/reactos/base/applications/network/wlanconf/wlanconf.c
trunk/reactos/base/applications/network/wlanconf/wlanconf.rc
Modified: trunk/reactos/base/applications/network/wlanconf/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/…
==============================================================================
--- trunk/reactos/base/applications/network/wlanconf/CMakeLists.txt [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/network/wlanconf/CMakeLists.txt [iso-8859-1] Fri Oct
12 11:40:53 2012
@@ -3,6 +3,13 @@
BEFORE include
${REACTOS_SOURCE_DIR}/include/reactos/drivers/ndisuio)
add_executable(wlanconf wlanconf.c wlanconf.rc)
+
+# FIXME:
http://www.cmake.org/Bug/view.php?id=12998
+if(NOT MSVC)
+ #add_target_compile_flags(wlanconf "-Wno-format")
+ set_source_files_properties(wlanconf.c PROPERTIES COMPILE_FLAGS
"-Wno-format")
+endif()
+
set_module_type(wlanconf win32cui)
-add_importlibs(wlanconf msvcrt iphlpapi kernel32)
+add_importlibs(wlanconf msvcrt user32 iphlpapi kernel32)
add_cd_file(TARGET wlanconf DESTINATION reactos/system32 FOR all)
Added: trunk/reactos/base/applications/network/wlanconf/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/…
==============================================================================
--- trunk/reactos/base/applications/network/wlanconf/lang/en-US.rc (added)
+++ trunk/reactos/base/applications/network/wlanconf/lang/en-US.rc [iso-8859-1] Fri Oct 12
11:40:53 2012
@@ -1,0 +1,40 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+STRINGTABLE DISCARDABLE
+BEGIN
+IDS_USAGE, "\nConfigure a WLAN adapter.\n\n\
+WLANCONF [-c SSID [-w WEP] [-a]] [-d] [-s]\n\n\
+\t-c SSID\t\tConnects to a supplied SSID,\n\
+\t-w WEP\t\tSpecifies a WEP key to use.\n\
+\t-a\t\tSpecifies the target network is ad-hoc\n\
+\t-d\t\tDisconnects from the current AP.\n\
+\t-s\t\tScans and displays a list of access points\n\
+\t\t\tin range.\n\n\
+Passing no parameters will print information about the current WLAN connection\n"
+/* === */
+IDS_NO_NETWORK, "No networks found in range\n"
+IDS_NO_WLAN_ADAPTER, "Unable to find a WLAN adapter on the system\n"
+IDS_SUCCESS, "The operation completed successfully.\n"
+IDS_WLAN_DISCONNECT, "\nWLAN disconnected\n"
+/* === */
+IDS_MSG_WEP_ENABLED, "WEP enabled: %s\n"
+IDS_MSG_NETWORK_MODE, "Network mode: %s\n"
+IDS_MSG_CURRENT_WIRELESS, "\nCurrent wireless configuration information:\n\n"
+IDS_MSG_ENCRYPTED, "Encrypted: %s\n"
+IDS_MSG_NETWORK_TYPE, "Network Type: %s\n"
+IDS_MSG_RSSI, "RSSI: %i dBm\n"
+IDS_MSG_SUPPORT_RATE, "Supported Rates (Mbps): "
+IDS_MSG_TRANSMISSION_POWER, "Transmission power: %d mW\n"
+IDS_MSG_ANTENNA_COUNT, "Antenna count: %d\n"
+IDS_MSG_TRANSMIT_ANTENNA, "Transmit antenna: %d\n"
+IDS_MSG_TRANSMIT_ANTENNA_ANY, "Transmit antenna: Any\n"
+IDS_MSG_RECEIVE_ANTENNA, "Receive antenna: %d\n"
+IDS_MSG_RECEIVE_ANTENNA_ANY, "Receive antenna: Any\n"
+IDS_MSG_FRAGMENT_THRESHOLD, "Fragmentation threshold: %d bytes\n"
+IDS_MSG_RTS_THRESHOLD, "RTS threshold: %d bytes\n"
+/* === */
+IDS_YES, "Yes"
+IDS_NO, "No"
+IDS_ADHOC, "Adhoc"
+IDS_INFRASTRUCTURE, "Infrastructure"
+END
Propchange: trunk/reactos/base/applications/network/wlanconf/lang/en-US.rc
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/base/applications/network/wlanconf/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/…
==============================================================================
--- trunk/reactos/base/applications/network/wlanconf/resource.h (added)
+++ trunk/reactos/base/applications/network/wlanconf/resource.h [iso-8859-1] Fri Oct 12
11:40:53 2012
@@ -1,0 +1,24 @@
+#define IDS_USAGE 0
+#define IDS_NO_NETWORK 1
+#define IDS_NO_WLAN_ADAPTER 2
+#define IDS_SUCCESS 3
+#define IDS_WLAN_DISCONNECT 4
+#define IDS_MSG_WEP_ENABLED 5
+#define IDS_MSG_NETWORK_MODE 6
+#define IDS_MSG_CURRENT_WIRELESS 7
+#define IDS_MSG_ENCRYPTED 8
+#define IDS_MSG_NETWORK_TYPE 9
+#define IDS_MSG_RSSI 10
+#define IDS_MSG_SUPPORT_RATE 11
+#define IDS_MSG_TRANSMISSION_POWER 12
+#define IDS_MSG_ANTENNA_COUNT 13
+#define IDS_MSG_TRANSMIT_ANTENNA 14
+#define IDS_MSG_TRANSMIT_ANTENNA_ANY 15
+#define IDS_MSG_RECEIVE_ANTENNA 16
+#define IDS_MSG_RECEIVE_ANTENNA_ANY 17
+#define IDS_MSG_FRAGMENT_THRESHOLD 18
+#define IDS_MSG_RTS_THRESHOLD 19
+#define IDS_YES 20
+#define IDS_NO 21
+#define IDS_ADHOC 22
+#define IDS_INFRASTRUCTURE 23
Propchange: trunk/reactos/base/applications/network/wlanconf/resource.h
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/base/applications/network/wlanconf/wlanconf.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/…
==============================================================================
--- trunk/reactos/base/applications/network/wlanconf/wlanconf.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/network/wlanconf/wlanconf.c [iso-8859-1] Fri Oct 12
11:40:53 2012
@@ -14,14 +14,32 @@
#include <nuiouser.h>
#include <iphlpapi.h>
+#include "resource.h"
+
+#define COUNT_OF(a) (sizeof(a) / sizeof(a[0]))
+#define MAX_BUFFER_SIZE 5024
+
BOOL bScan = FALSE;
BOOL bConnect = FALSE;
-char* sSsid = NULL;
-char* sWepKey = NULL;
+char *sSsid = NULL;
+char *sWepKey = NULL;
BOOL bAdhoc = FALSE;
BOOL bDisconnect = FALSE;
+
+/* This takes strings from a resource stringtable and outputs it to
+the command prompt. */
+VOID PrintResourceString(INT resID, ...)
+{
+ TCHAR szMsgBuf[MAX_BUFFER_SIZE];
+ va_list arg_ptr;
+
+ va_start(arg_ptr, resID);
+ LoadString(GetModuleHandle(NULL), resID, szMsgBuf, MAX_BUFFER_SIZE);
+ _vtprintf(szMsgBuf, arg_ptr);
+ va_end(arg_ptr);
+}
DWORD DoFormatMessage(DWORD ErrorCode)
{
@@ -258,7 +276,7 @@
if (!bSuccess)
return FALSE;
- _tprintf(_T("The operation completed successfully.\n"));
+ PrintResourceString(IDS_SUCCESS);
return TRUE;
}
@@ -317,6 +335,7 @@
PNDIS_802_11_SSID SsidInfo;
CHAR SsidBuffer[NDIS_802_11_LENGTH_SSID + 1];
DWORD i;
+ TCHAR szMsgBuf[128];
QueryOidSize = FIELD_OFFSET(NDISUIO_QUERY_OID, Data) + sizeof(NDIS_802_11_SSID);
QueryOid = HeapAlloc(GetProcessHeap(), 0, QueryOidSize);
@@ -362,16 +381,16 @@
NULL);
if (SsidInfo->SsidLength == 0 || !bSuccess)
{
- _tprintf(_T("\nWLAN disconnected\n"));
+ PrintResourceString(IDS_WLAN_DISCONNECT);
HeapFree(GetProcessHeap(), 0, QueryOid);
return TRUE;
}
else
{
- _tprintf(_T("\nCurrent wireless configuration information:\n\n"));
- }
-
- _tprintf(_T("SSID: %s\n"), SsidBuffer);
+ PrintResourceString(IDS_MSG_CURRENT_WIRELESS);
+ }
+
+ _tprintf(_T("SSID: %hs\n"), SsidBuffer);
_tprintf(_T("BSSID: "));
for (i = 0; i < sizeof(NDIS_802_11_MAC_ADDRESS); i++)
@@ -407,7 +426,11 @@
return FALSE;
}
- _tprintf(_T("Network mode: %s\n"), (*(PUINT)QueryOid->Data ==
Ndis802_11IBSS) ? "Adhoc" : "Infrastructure");
+ LoadString(GetModuleHandle(NULL),
+ *(PUINT)QueryOid->Data == Ndis802_11IBSS ? IDS_ADHOC :
IDS_INFRASTRUCTURE,
+ szMsgBuf,
+ COUNT_OF(szMsgBuf));
+ PrintResourceString(IDS_MSG_NETWORK_MODE, szMsgBuf);
QueryOid->Oid = OID_802_11_WEP_STATUS;
@@ -425,9 +448,13 @@
return FALSE;
}
- _tprintf(_T("WEP enabled: %s\n"), (*(PUINT)QueryOid->Data ==
Ndis802_11WEPEnabled) ? "Yes" : "No");
-
- _tprintf("\n");
+ LoadString(GetModuleHandle(NULL),
+ *(PUINT)QueryOid->Data == Ndis802_11WEPEnabled ? IDS_YES : IDS_NO,
+ szMsgBuf,
+ COUNT_OF(szMsgBuf));
+ PrintResourceString(IDS_MSG_WEP_ENABLED, szMsgBuf);
+
+ _tprintf(_T("\n"));
QueryOid->Oid = OID_802_11_RSSI;
bSuccess = DeviceIoControl(hAdapter,
@@ -457,7 +484,7 @@
if (bSuccess)
{
/* This OID is optional */
- _tprintf(_T("Transmission power: %d mW\n"),
*(PUINT)QueryOid->Data);
+ PrintResourceString(IDS_MSG_TRANSMISSION_POWER, *(PUINT)QueryOid->Data);
}
_tprintf(_T("\n"));
@@ -475,7 +502,7 @@
if (bSuccess)
{
/* This OID is optional */
- _tprintf(_T("Antenna count: %d\n"), *(PUINT)QueryOid->Data);
+ PrintResourceString(IDS_MSG_ANTENNA_COUNT, *(PUINT)QueryOid->Data);
}
QueryOid->Oid = OID_802_11_TX_ANTENNA_SELECTED;
@@ -493,9 +520,9 @@
UINT TransmitAntenna = *(PUINT)QueryOid->Data;
if (TransmitAntenna != 0xFFFFFFFF)
- _tprintf(_T("Transmit antenna: %d\n"), TransmitAntenna);
+ PrintResourceString(IDS_MSG_TRANSMIT_ANTENNA, TransmitAntenna);
else
- _tprintf(_T("Transmit antenna: Any\n"));
+ PrintResourceString(IDS_MSG_TRANSMIT_ANTENNA_ANY);
}
QueryOid->Oid = OID_802_11_RX_ANTENNA_SELECTED;
@@ -513,9 +540,9 @@
UINT ReceiveAntenna = *(PUINT)QueryOid->Data;
if (ReceiveAntenna != 0xFFFFFFFF)
- _tprintf(_T("Receive antenna: %d\n"), ReceiveAntenna);
+ PrintResourceString(IDS_MSG_RECEIVE_ANTENNA, ReceiveAntenna);
else
- _tprintf(_T("Receive antenna: Any\n"));
+ PrintResourceString(IDS_MSG_RECEIVE_ANTENNA_ANY);
}
_tprintf(_T("\n"));
@@ -533,7 +560,7 @@
if (bSuccess)
{
/* This OID is optional */
- _tprintf(_T("Fragmentation threshold: %d bytes\n"),
*(PUINT)QueryOid->Data);
+ PrintResourceString(IDS_MSG_FRAGMENT_THRESHOLD, *(PUINT)QueryOid->Data);
}
QueryOid->Oid = OID_802_11_RTS_THRESHOLD;
@@ -549,7 +576,7 @@
if (bSuccess)
{
/* This OID is optional */
- _tprintf(_T("RTS threshold: %d bytes\n"), *(PUINT)QueryOid->Data);
+ PrintResourceString(IDS_MSG_RTS_THRESHOLD, *(PUINT)QueryOid->Data);
}
HeapFree(GetProcessHeap(), 0, QueryOid);
@@ -722,7 +749,7 @@
if (!bSuccess)
return FALSE;
- _tprintf(_T("The operation completed successfully.\n"));
+ PrintResourceString(IDS_SUCCESS);
return TRUE;
}
@@ -736,6 +763,7 @@
DWORD QueryOidSize;
PNDIS_802_11_BSSID_LIST BssidList;
DWORD i, j;
+ TCHAR szMsgBuf[128];
SetOid.Oid = OID_802_11_BSSID_LIST_SCAN;
@@ -776,7 +804,7 @@
if (BssidList->NumberOfItems == 0)
{
- _tprintf(_T("No networks found in range\n"));
+ PrintResourceString(IDS_NO_NETWORK);
}
else
{
@@ -793,9 +821,7 @@
RtlCopyMemory(SsidBuffer, Ssid->Ssid, Ssid->SsidLength);
SsidBuffer[Ssid->SsidLength] = 0;
- _tprintf(_T("\n"));
-
- _tprintf(_T("SSID: %s\n"), SsidBuffer);
+ _tprintf(_T("\nSSID: %hs\n"), SsidBuffer);
_tprintf(_T("BSSID: "));
for (j = 0; j < sizeof(NDIS_802_11_MAC_ADDRESS); j++)
@@ -809,13 +835,18 @@
}
_tprintf(_T("\n"));
- _tprintf(_T("Encrypted: %s\n"
- "Network Type: %s\n"
- "RSSI: %i dBm\n"
- "Supported Rates (Mbps): "),
- BssidInfo->Privacy == 0 ? "No" : "Yes",
- NetworkType == Ndis802_11IBSS ? "Adhoc" :
"Infrastructure",
- (int)Rssi);
+ LoadString(GetModuleHandle(NULL),
+ BssidInfo->Privacy == 0 ? IDS_NO : IDS_YES,
+ szMsgBuf,
+ COUNT_OF(szMsgBuf));
+ PrintResourceString(IDS_MSG_ENCRYPTED, szMsgBuf);
+ LoadString(GetModuleHandle(NULL),
+ NetworkType == Ndis802_11IBSS ? IDS_ADHOC : IDS_INFRASTRUCTURE,
+ szMsgBuf,
+ COUNT_OF(szMsgBuf));
+ PrintResourceString(IDS_MSG_NETWORK_TYPE, szMsgBuf);
+ PrintResourceString(IDS_MSG_RSSI, (int)Rssi);
+ PrintResourceString(IDS_MSG_SUPPORT_RATE);
for (j = 0; j < NDIS_802_11_LENGTH_RATES; j++)
{
@@ -850,20 +881,7 @@
return bSuccess;
}
-VOID Usage()
-{
- _tprintf(_T("\nConfigures a WLAN adapter.\n\n"
- "WLANCONF [-c SSID [-w WEP] [-a]] [-d] [-s]\n\n"
- " -c SSID Connects to a supplied SSID.\n"
- " -w WEP Specifies a WEP key to use.\n"
- " -a Specifies the target network is ad-hoc\n"
- " -d Disconnects from the current AP.\n"
- " -s Scans and displays a list of access points in range.\n\n"
- " Passing no parameters will print information about the current WLAN
connection\n"));
-}
-
-
-BOOL ParseCmdline(int argc, char* argv[])
+BOOL ParseCmdline(int argc, char *argv[])
{
INT i;
@@ -882,7 +900,7 @@
case 'c':
if (i == argc - 1)
{
- Usage();
+ PrintResourceString(IDS_USAGE);
return FALSE;
}
bConnect = TRUE;
@@ -891,7 +909,7 @@
case 'w':
if (i == argc - 1)
{
- Usage();
+ PrintResourceString(IDS_USAGE);
return FALSE;
}
sWepKey = argv[++i];
@@ -900,14 +918,14 @@
bAdhoc = TRUE;
break;
default :
- Usage();
+ PrintResourceString(IDS_USAGE);
return FALSE;
}
}
else
{
- Usage();
+ PrintResourceString(IDS_USAGE);
return FALSE;
}
}
@@ -915,7 +933,7 @@
return TRUE;
}
-int main(int argc, char* argv[])
+int main(int argc, char *argv[])
{
HANDLE hAdapter;
IP_ADAPTER_INDEX_MAP IpInfo;
@@ -925,7 +943,7 @@
if (!OpenWlanAdapter(&hAdapter, &IpInfo))
{
- _tprintf(_T("Unable to find a WLAN adapter on the system\n"));
+ PrintResourceString(IDS_NO_WLAN_ADAPTER);
return -1;
}
Modified: trunk/reactos/base/applications/network/wlanconf/wlanconf.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/…
==============================================================================
--- trunk/reactos/base/applications/network/wlanconf/wlanconf.rc [iso-8859-1] (original)
+++ trunk/reactos/base/applications/network/wlanconf/wlanconf.rc [iso-8859-1] Fri Oct 12
11:40:53 2012
@@ -1,7 +1,17 @@
+#include "resource.h"
+
+#include <windows.h>
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS WLAN Configuration Tool\0"
#define REACTOS_STR_INTERNAL_NAME "wlanconf\0"
#define REACTOS_STR_ORIGINAL_FILENAME "wlanconf.exe\0"
#define REACTOS_STR_ORIGINAL_COPYRIGHT "Cameron Gutman
(cameron.gutman(a)reactos.org)\0"
#include <reactos/version.rc>
-
+// UTF-8
+#pragma code_page(65001)
+#ifdef LANGUAGE_EN_US
+ #include "lang/en-US.rc"
+#endif