tnerror.cpp
上传用户:haiweijt
上传日期:2018-02-23
资源大小:8195k
文件大小:6k
- ///////////////////////////////////////////////////////////////////////////////
- //Telnet Win32 : an ANSI telnet client.
- //Copyright (C) 1998-2000 Paul Brannan
- //Copyright (C) 1998 I.Ioannou
- //Copyright (C) 1997 Brad Johnson
- //
- //This program is free software; you can redistribute it and/or
- //modify it under the terms of the GNU General Public License
- //as published by the Free Software Foundation; either version 2
- //of the License, or (at your option) any later version.
- //
- //This program is distributed in the hope that it will be useful,
- //but WITHOUT ANY WARRANTY; without even the implied warranty of
- //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- //GNU General Public License for more details.
- //
- //You should have received a copy of the GNU General Public License
- //along with this program; if not, write to the Free Software
- //Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- //
- //I.Ioannou
- //roryt@hol.gr
- //
- ///////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////
- //
- // Module: tnerror.cpp
- //
- // Contents: error reporting
- //
- // Product: telnet
- //
- // Revisions: June 15, 1998 Paul Brannan <pbranna@clemson.edu>
- // May 15, 1998 Paul Brannan
- // 5.April.1997 jbj@nounname.com
- // 5.Dec.1996 jbj@nounname.com
- // Version 2.0
- //
- // 02.Apr.1995 igor.milavec@uni-lj.si
- // Original code
- //
- ///////////////////////////////////////////////////////////////////////////////
- #include "tnerror.h"
- #include "ttelhndl.h" // Paul Brannan 5/25/98
- #include "tnconfig.h" // Paul Brannan 5/25/98
- #include <time.h>
- #include <stdio.h>
- #include <stdarg.h>
- #include <stdlib.h>
- #ifndef LANG_USER_DEFAULT
- #define LANG_USER_DEFAULT 400
- #endif
- // This has been moved to tnconfig.cpp
- // int Telnet_Redir = 0;
- // Telnet_Redir is set to the value of the environment variable TELNET_REDIR
- // in main.
- int printit(const char * it){
- DWORD numwritten;
- if (!ini.get_output_redir()) {
- if (!WriteConsole(
- GetStdHandle(STD_OUTPUT_HANDLE), // handle of a console screen buffer
- it, // address of buffer to write from
- strlen(it), // number of characters to write
- &numwritten, // address of number of characters written
- 0 // reserved
- )) return -1;
- // FIX ME!!! We need to tell the console that the cursor has moved.
- // Does this mean making Console global?
- // Paul Brannan 6/14/98
- // Console.sync();
- }else{
- if (!WriteFile(
- GetStdHandle(STD_OUTPUT_HANDLE), // handle of a console screen buffer
- it, // address of buffer to write from
- strlen(it), // number of characters to write
- &numwritten, // address of number of characters written
- NULL // no overlapped I/O
- )) return -1;
- }
- return 0;
- }
- int printm(LPTSTR szModule, BOOL fSystem, DWORD dwMessageId, ...)
- {
- int Result = 0;
- HMODULE hModule = 0;
- if (szModule)
- hModule = LoadLibrary(szModule);
- va_list Ellipsis;
- va_start(Ellipsis, dwMessageId);
- LPTSTR pszMessage = 0;
- DWORD dwMessage = 0;
- if(fSystem) {
- dwMessage = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM, hModule, dwMessageId,
- LANG_USER_DEFAULT, (LPTSTR)&pszMessage, 128, &Ellipsis);
- } else {
- // we will use a string table.
- char szString[256];
- if(LoadString(0, dwMessageId, szString, sizeof(szString)))
- dwMessage = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_STRING, szString, dwMessageId,
- LANG_USER_DEFAULT, (LPTSTR)&pszMessage, 256, &Ellipsis);
- }
- va_end(Ellipsis);
- if (szModule)
- FreeLibrary(hModule);
- if (dwMessage) {
- Result = printit(pszMessage);
- LocalFree(pszMessage);
- }
- return Result;
- }
- void LogErrorConsole(LPTSTR szError)
- {
- DWORD dwLastError = GetLastError();
- const int cbLastError = 1024;
- TCHAR szLastError[cbLastError];
- FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, dwLastError, LANG_USER_DEFAULT,
- szLastError, cbLastError, 0);
- LPTSTR lpszStrings[2];
- lpszStrings[0] = szError;
- lpszStrings[1] = szLastError;
- const int cbErrorString = 1024;
- TCHAR szErrorString[cbErrorString];
- FormatMessage(FORMAT_MESSAGE_FROM_HMODULE| FORMAT_MESSAGE_ARGUMENT_ARRAY,
- 0, MSG_ERROR, LANG_USER_DEFAULT,
- szErrorString, cbErrorString, (va_list*)lpszStrings);
- time_t dwTime;
- time(&dwTime);
- char* szTime = ctime(&dwTime);
- szTime[19] = 0;
- // printf("E %s %s", szTime + 11, szErrorString);
- char * buf;
- buf = new char [ 3 + strlen(szTime) - 11 + strlen(szErrorString) + 5 ];
- sprintf( buf,"E %s %s", szTime + 11, szErrorString);
- printit(buf);
- delete [] buf;
- }
- void LogWarningConsole(DWORD dwEvent, LPTSTR szWarning)
- {
- DWORD dwLastError = GetLastError();
- const int cbLastError = 1024;
- TCHAR szLastError[cbLastError];
- FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, dwLastError, LANG_USER_DEFAULT,
- szLastError, cbLastError, 0);
- LPTSTR lpszStrings[2];
- lpszStrings[0] = szWarning;
- lpszStrings[1] = szLastError;
- const int cbWarningString = 1024;
- TCHAR szWarningString[cbWarningString];
- FormatMessage(FORMAT_MESSAGE_FROM_HMODULE| FORMAT_MESSAGE_ARGUMENT_ARRAY,
- 0, dwEvent, LANG_USER_DEFAULT,
- szWarningString, cbWarningString, (va_list*)lpszStrings);
- time_t dwTime;
- time(&dwTime);
- char* szTime = ctime(&dwTime);
- szTime[19] = 0;
- // printf("W %s %s", szTime + 11, szWarningString);
- char * buf;
- buf = new char [ 3 + strlen(szTime) - 11 + strlen(szWarningString) + 5 ];
- sprintf(buf ,"W %s %s", szTime + 11, szWarningString);
- printit(buf);
- delete [] buf;
- }
- void LogInfoConsole(DWORD dwEvent, LPTSTR szInformation)
- {
- LPTSTR lpszStrings[1];
- lpszStrings[0] = szInformation;
- const int cbInfoString = 1024;
- TCHAR szInfoString[cbInfoString];
- FormatMessage(FORMAT_MESSAGE_FROM_HMODULE| FORMAT_MESSAGE_ARGUMENT_ARRAY,
- 0, dwEvent, LANG_USER_DEFAULT,
- szInfoString, cbInfoString, (va_list*)lpszStrings);
- time_t dwTime;
- time(&dwTime);
- char* szTime = ctime(&dwTime);
- szTime[19] = 0;
- // printf("I %s %s", szTime + 11, szInfoString);
- char * buf;
- buf = new char [ 3 + strlen(szTime) - 11 + strlen(szInfoString) + 5 ];
- sprintf(buf,"I %s %s", szTime + 11, szInfoString);
- printit(buf);
- delete [] buf;
- }