From f0b2c954e086620dad6b42cc0d681d49aa9b8dbd Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Thu, 18 Oct 2007 06:28:02 +0000 Subject: [PATCH] Fix status output svn path=/trunk/; revision=29655 --- reactos/base/applications/network/dwnl/dwnl.c | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/reactos/base/applications/network/dwnl/dwnl.c b/reactos/base/applications/network/dwnl/dwnl.c index 197bc5e27a3..cf9641d0c8a 100644 --- a/reactos/base/applications/network/dwnl/dwnl.c +++ b/reactos/base/applications/network/dwnl/dwnl.c @@ -38,6 +38,27 @@ CBindStatusCallback_Destroy(CBindStatusCallback *This) return; } +static void +write_status(LPCTSTR lpFmt, ...) +{ + va_list args; + + /* FIXME: Determine line length! */ + TCHAR szTxt[80]; + int c; + + va_start(args, lpFmt); + _vstprintf(szTxt, lpFmt, args); + va_end(args); + + c = _tcslen(szTxt); + while (c < (sizeof(szTxt) / sizeof(szTxt[0])) - 1) + szTxt[c++] = _T(' '); + szTxt[c] = _T('\0'); + + _tprintf(_T("\r%.79s"), szTxt); +} + static void CBindStatusCallback_UpdateProgress(CBindStatusCallback *This) { @@ -50,12 +71,12 @@ CBindStatusCallback_UpdateProgress(CBindStatusCallback *This) if (Percentage > 99) Percentage = 99; - _tprintf(_T("\r%2d%% (%I64u bytes downloaded)"), Percentage, This->Progress); + write_status(_T("%2d%% (%I64u bytes downloaded)"), Percentage, This->Progress); } else { /* Unknown size */ - _tprintf(_T("\r%I64u bytes downloaded"), This->Progress); + write_status(_T("%I64u bytes downloaded"), This->Progress); } } @@ -214,7 +235,8 @@ CBindStatusCallback_OnProgress(IBindStatusCallback *iface, break; case BINDSTATUS_ENDDOWNLOADDATA: - _tprintf(_T("\rFile saved.\n")); + write_status(_T("File saved.")); + _tprintf(_T("\n")); break; case BINDSTATUS_DOWNLOADINGDATA: @@ -415,6 +437,8 @@ download_file(IN LPCTSTR pszUrl, static int print_err(int iErr) { + write_status(_T("")); + if (iErr == DWNL_E_LASTERROR) { if (GetLastError() == ERROR_SUCCESS)