Index: base/applications/network/ping/lang/bg-BG.rc =================================================================== --- base/applications/network/ping/lang/bg-BG.rc (revision 72800) +++ base/applications/network/ping/lang/bg-BG.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/cs-CZ.rc =================================================================== --- base/applications/network/ping/lang/cs-CZ.rc (revision 72800) +++ base/applications/network/ping/lang/cs-CZ.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Přibližná doba do přijetí odezvy v milisekundách:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Průměr = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/de-DE.rc =================================================================== --- base/applications/network/ping/lang/de-DE.rc (revision 72800) +++ base/applications/network/ping/lang/de-DE.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Durchschnittliche Antwortzeit in Millisekunden:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Durchschnitt = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/en-US.rc =================================================================== --- base/applications/network/ping/lang/en-US.rc (revision 72800) +++ base/applications/network/ping/lang/en-US.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/es-ES.rc =================================================================== --- base/applications/network/ping/lang/es-ES.rc (revision 72800) +++ base/applications/network/ping/lang/es-ES.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Tiempos aproximados de ida y vuelta en milisegundos:\n\ Mínimo = %1!u!ms, Máximo = %2!u!ms, Media = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/fr-FR.rc =================================================================== --- base/applications/network/ping/lang/fr-FR.rc (revision 72800) +++ base/applications/network/ping/lang/fr-FR.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Délai approximatif de réponse en millisecondes :\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Moyenne = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/it-IT.rc =================================================================== --- base/applications/network/ping/lang/it-IT.rc (revision 72800) +++ base/applications/network/ping/lang/it-IT.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Tempo approssimato di andata e ritorno in milli-secondi:\n\ Minimo = %1!u!ms, Massimo = %2!u!ms, Media = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/pl-PL.rc =================================================================== --- base/applications/network/ping/lang/pl-PL.rc (revision 72800) +++ base/applications/network/ping/lang/pl-PL.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Całkowity, przybliżony czas podróży pakietu w millisekundach:\n\ Minimum = %1!u!ms, Maksimum = %2!u!ms, Uśredniony = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/ro-RO.rc =================================================================== --- base/applications/network/ping/lang/ro-RO.rc (revision 72800) +++ base/applications/network/ping/lang/ro-RO.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "timpul aproximativ de tur-retur, in milisecunde:\n\ minim = %1!u!ms, maxim = %2!u!ms, mediu = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/ru-RU.rc =================================================================== --- base/applications/network/ping/lang/ru-RU.rc (revision 72800) +++ base/applications/network/ping/lang/ru-RU.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Приблизительное время приема-передачи в мс:\n\ Минимальное = %1!u!ms, Максимальное = %2!u!ms, Среднее = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/sq-AL.rc =================================================================== --- base/applications/network/ping/lang/sq-AL.rc (revision 72800) +++ base/applications/network/ping/lang/sq-AL.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Afersisht koha e matjes në mili-sekonda:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Mesatar = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/sv-SE.rc =================================================================== --- base/applications/network/ping/lang/sv-SE.rc (revision 72800) +++ base/applications/network/ping/lang/sv-SE.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Ungefärliga slingtider i millisekunder:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Genomsnittlig = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/tr-TR.rc =================================================================== --- base/applications/network/ping/lang/tr-TR.rc (revision 72800) +++ base/applications/network/ping/lang/tr-TR.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Mili sâniye olarak yaklaşık gidiş geliş süreleri:\n\ En Az = %1!u!ms, En Çok = %2!u!ms, Ortalama = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/uk-UA.rc =================================================================== --- base/applications/network/ping/lang/uk-UA.rc (revision 72800) +++ base/applications/network/ping/lang/uk-UA.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/zh-CN.rc =================================================================== --- base/applications/network/ping/lang/zh-CN.rc (revision 72800) +++ base/applications/network/ping/lang/zh-CN.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/lang/zh-TW.rc =================================================================== --- base/applications/network/ping/lang/zh-TW.rc (revision 72800) +++ base/applications/network/ping/lang/zh-TW.rc (working copy) @@ -61,4 +61,6 @@ IDS_APPROXIMATE_RTT "Approximate round-trip time in milliseconds:\n\ Minimum = %1!u!ms, Maximum = %2!u!ms, Average = %3!u!ms\n" + + IDS_WINSOCK_FAIL "Failed to initialize WinSock: %1!d!\n" END Index: base/applications/network/ping/ping.c =================================================================== --- base/applications/network/ping/ping.c (revision 72800) +++ base/applications/network/ping/ping.c (working copy) @@ -55,6 +55,7 @@ static BOOL WINAPI ConsoleCtrlHandler(DWORD ControlType); static void PrintString(UINT id, ...); +static HANDLE hStdOut; static HANDLE hIcmpFile = INVALID_HANDLE_VALUE; static ULONG Timeout = 4000; static int Family = AF_UNSPEC; @@ -82,9 +83,12 @@ WSADATA wsaData; ULONG i; DWORD StrLen = 46; + int Status; IpOptions.Ttl = 128; + hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); + if (!ParseCmdLine(argc, argv)) { return 1; @@ -92,14 +96,15 @@ if (!SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE)) { - DPRINT1("Failed to set control handler: %lu\n", GetLastError()); + DPRINT("Failed to set control handler: %lu\n", GetLastError()); return 1; } - if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) + Status = WSAStartup(MAKEWORD(2, 2), &wsaData); + if (Status != 0) { - DPRINT1("WSAStartup failed\n"); + PrintString(IDS_WINSOCK_FAIL, Status); return 1; } @@ -113,7 +118,7 @@ if (WSAAddressToStringW(Target->ai_addr, (DWORD)Target->ai_addrlen, NULL, Address, &StrLen) != 0) { - DPRINT1("WSAAddressToStringW failed: %d\n", WSAGetLastError()); + DPRINT("WSAAddressToStringW failed: %d\n", WSAGetLastError()); FreeAddrInfoW(Target); WSACleanup(); @@ -132,7 +137,7 @@ if (hIcmpFile == INVALID_HANDLE_VALUE) { - DPRINT1("IcmpCreateFile failed: %lu\n", GetLastError()); + DPRINT("IcmpCreateFile failed: %lu\n", GetLastError()); FreeAddrInfoW(Target); WSACleanup(); @@ -177,12 +182,12 @@ { WCHAR Format[1024]; WCHAR Msg[1024]; - DWORD Len; + DWORD Len, written; va_list args; if (!LoadStringW(GetModuleHandleW(NULL), id, Format, _countof(Format))) { - DPRINT1("LoadStringW failed: %lu\n", GetLastError()); + DPRINT("LoadStringW failed: %lu\n", GetLastError()); return; } @@ -196,13 +201,14 @@ if (Len == 0) { - DPRINT1("FormatMessageW failed: %lu\n", GetLastError()); + DPRINT("FormatMessageW failed: %lu\n", GetLastError()); va_end(args); return; } - wprintf(L"%s", Msg); + // TODO: Handle writing to file. + WriteConsole(hStdOut, Msg, Len, &written, NULL); va_end(args); } @@ -468,9 +474,7 @@ if (Status != 0) { - DPRINT1("GetNameInfoW failed: %d\n", Status); - - return FALSE; + DPRINT("GetNameInfoW failed: %d\n", WSAGetLastError()); } } @@ -605,6 +609,8 @@ RTTMax = pEchoReply->RoundTripTime; } + wprintf(L"\n"); + RTTTotal += pEchoReply->RoundTripTime; break; Index: base/applications/network/ping/resource.h =================================================================== --- base/applications/network/ping/resource.h (revision 72800) +++ base/applications/network/ping/resource.h (working copy) @@ -28,3 +28,4 @@ #define IDS_TRANSMIT_FAILED 125 #define IDS_STATISTICS 126 #define IDS_APPROXIMATE_RTT 127 +#define IDS_WINSOCK_FAIL 128