+++ /dev/null
-///////////////////////////////////////////////////////////////////////////////
-//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
-//
-///////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////
-// Class TkeyDef - Key Definitions //
-// - kept in an array container //
-// originally part of KeyTrans.cpp //
-/////////////////////////////////////////////////////////
-
-#include "precomp.h"
-
-// This class did not properly release memory before, and a buffer overrun
-// was apparent in operator=(char*). Fixed. (Paul Brannan Feb. 4, 1999)
-
-TKeyDef::TKeyDef() {
- uKeyDef.szKeyDef = 0;
- vk_code = dwState = 0;
-}
-
-TKeyDef::TKeyDef(char *def, DWORD state, DWORD code) {
- uKeyDef.szKeyDef = 0;
- if (def != NULL && *def != 0) {
- // szKeyDef = (char *) GlobalAlloc(GPTR, strlen(def) +1);
- uKeyDef.szKeyDef = new char[strlen(def)+1];
- strcpy(uKeyDef.szKeyDef, def);
- }
- dwState = state;
- vk_code = code;
-}
-
-TKeyDef::TKeyDef(optype op, DWORD state, DWORD code) {
- uKeyDef.op = new optype;
- uKeyDef.op->sendstr = 0;
- uKeyDef.op->the_op = op.the_op;
- dwState = state;
- vk_code = code;
-}
-
-TKeyDef::TKeyDef(const TKeyDef &t) {
- if(t.uKeyDef.szKeyDef == NULL) {
- uKeyDef.szKeyDef = (char *)NULL;
- } else if(t.uKeyDef.op->sendstr == 0) {
- uKeyDef.op = new optype;
- uKeyDef.op->sendstr = 0;
- uKeyDef.op->the_op = t.uKeyDef.op->the_op;
- } else {
- uKeyDef.szKeyDef = new char[strlen(t.uKeyDef.szKeyDef)+1];
- strcpy(uKeyDef.szKeyDef, t.uKeyDef.szKeyDef);
- }
- dwState = t.dwState;
- vk_code = t.vk_code;
-}
-
-TKeyDef::~TKeyDef() {
- if(uKeyDef.szKeyDef) delete[] uKeyDef.szKeyDef;
-}
-
-char * TKeyDef::operator=(char *def) {
- if(def != NULL && *def != 0) {
- if(uKeyDef.szKeyDef) delete[] uKeyDef.szKeyDef;
- uKeyDef.szKeyDef = new char[strlen(def)+1];
- strcpy(uKeyDef.szKeyDef, def);
- }
- return uKeyDef.szKeyDef;
-}
-
-DWORD TKeyDef::operator=(DWORD code) {
- return vk_code = code;
-}
-
-TKeyDef& TKeyDef::operator=(const TKeyDef &t) {
- if(t.uKeyDef.szKeyDef) {
- if(uKeyDef.szKeyDef) delete[] uKeyDef.szKeyDef;
- if(t.uKeyDef.op->sendstr) {
- uKeyDef.szKeyDef = new char[strlen(t.uKeyDef.szKeyDef)+1];
- strcpy(uKeyDef.szKeyDef, t.uKeyDef.szKeyDef);
- } else {
- uKeyDef.op = new optype;
- uKeyDef.op->sendstr = 0;
- uKeyDef.op->the_op = t.uKeyDef.op->the_op;
- }
- } else {
- uKeyDef.szKeyDef = (char *)NULL;
- }
- dwState = t.dwState;
- vk_code = t.vk_code;
- return *this;
-}
-
-const optype& TKeyDef::operator=(optype op) {
- uKeyDef.op = new optype;
- uKeyDef.op->sendstr = 0;
- uKeyDef.op->the_op = op.the_op;
- return *uKeyDef.op;
-}
-
-// STL requires that operators be friends rather than member functions
-// (Paul Brannan 5/25/98)
-#ifndef __BORLANDC__
-bool operator==(const TKeyDef & t1, const TKeyDef & t2) {
- return ((t1.vk_code == t2.vk_code) && (t1.dwState == t2.dwState));
-}
-// We need this function for compatibility with STL (Paul Brannan 5/25/98)
-bool operator< (const TKeyDef& t1, const TKeyDef& t2) {
- if (t1.vk_code == t2.vk_code) return t1.dwState < t2.dwState;
- return t1.vk_code < t2.vk_code;
-}
-#else
-int TKeyDef::operator==(TKeyDef & t) {
- return ((vk_code == t.vk_code) && (dwState == t.dwState));
-}
-#endif
-