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/w... ============================================================================== --- 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/w... ============================================================================== --- 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/w... ============================================================================== --- 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/w... ============================================================================== --- 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/w... ============================================================================== --- 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@reactos.org)\0" #include <reactos/version.rc>
- +// UTF-8 +#pragma code_page(65001) +#ifdef LANGUAGE_EN_US + #include "lang/en-US.rc" +#endif