summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2004-07-11 04:29:12 (UTC)
committer Michael Krelin <hacker@klever.net>2004-07-11 04:29:12 (UTC)
commitd6f931eb800d16d0bf116765cbaeef83d232cfad (patch) (unidiff)
tree811e8513e303825ebf028ea9df332a243cdc38f8
parent885f8cc426a8840ae61023b75f3f0e4a1e268082 (diff)
downloadkinsole-d6f931eb800d16d0bf116765cbaeef83d232cfad.zip
kinsole-d6f931eb800d16d0bf116765cbaeef83d232cfad.tar.gz
kinsole-d6f931eb800d16d0bf116765cbaeef83d232cfad.tar.bz2
prepared for kinsole 1.1 release1.1
git-svn-id: http://svn.klever.net/kin/kinsole/trunk@7 fe716a7a-6dde-0310-88d9-d003556173a8
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--AUTHORS3
-rw-r--r--COPYING2
-rw-r--r--README.RELEASE (renamed from README)0
-rw-r--r--help/kinsole.cnt4
-rw-r--r--help/kinsole.rtf18
-rw-r--r--help/kinsole.xml16
-rw-r--r--install/install.cpp16
-rw-r--r--install/install.rc10
-rw-r--r--kinsole.cpp6
-rw-r--r--kinsole.mak50
-rw-r--r--kinsole.rc10
11 files changed, 87 insertions, 48 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..a9fb0c7
--- a/dev/null
+++ b/AUTHORS
@@ -0,0 +1,3 @@
1Klever dissected:
2 Michael 'hacker' Krelin <hacker@klever.net>
3 Leonid Ivanov <kamel@klever.net>
diff --git a/COPYING b/COPYING
index 997e508..9abe63f 100644
--- a/COPYING
+++ b/COPYING
@@ -1,19 +1,19 @@
1Copyright (c) 1998, 2002 Klever Group (http://www.klever.net/) 1Copyright (c) 1998-2004 Klever Group (http://www.klever.net/)
2 2
3Permission is hereby granted, free of charge, to any person obtaining a copy of 3Permission is hereby granted, free of charge, to any person obtaining a copy of
4this software and associated documentation files (the "Software"), to deal in 4this software and associated documentation files (the "Software"), to deal in
5the Software without restriction, including without limitation the rights to 5the Software without restriction, including without limitation the rights to
6use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 6use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7of the Software, and to permit persons to whom the Software is furnished to do 7of the Software, and to permit persons to whom the Software is furnished to do
8so, subject to the following conditions: 8so, subject to the following conditions:
9 9
10The above copyright notice and this permission notice shall be included in all 10The above copyright notice and this permission notice shall be included in all
11copies or substantial portions of the Software. 11copies or substantial portions of the Software.
12 12
13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19SOFTWARE. 19SOFTWARE.
diff --git a/README b/README.RELEASE
index 9bbcbe8..9bbcbe8 100644
--- a/README
+++ b/README.RELEASE
diff --git a/help/kinsole.cnt b/help/kinsole.cnt
index 9a8af90..a30e9b7 100644
--- a/help/kinsole.cnt
+++ b/help/kinsole.cnt
@@ -1,9 +1,9 @@
1:Base KINSole.hlp>Standard 1:Base KINSole.hlp>Standard
2:Title KINSole 2:Title KINSole
31 KINSole 31 KINSole
42 About KINSole=About 42 About KINSole=About
52 Using KINSole=Using 52 Using KINSole=Using
62 Command Line Options=CmdOptions 62 Command Line Options=CmdOptions
72 Keyboard Shortcuts=HotKeys 72 Keyboard Shortcuts=HotKeys
82 Beta Notes=BetaNotes 82 Notes=Notes
92 Beta News=News 92 What's New=News
diff --git a/help/kinsole.rtf b/help/kinsole.rtf
index 2cfd296..f0b6c8a 100644
--- a/help/kinsole.rtf
+++ b/help/kinsole.rtf
@@ -1,97 +1,97 @@
1{\rtf1\ansi 1{\rtf1\ansi
2@{\footnote 2@{\footnote
3THIS FILE WAS AUTOMATICALLY GENERATED FROM XML DOCUMENT. 3THIS FILE WAS AUTOMATICALLY GENERATED FROM XML DOCUMENT.
4DO NOT MODIFY THIS FILE DIRECTLY. EDIT XML DOCUMENT INSTEAD 4DO NOT MODIFY THIS FILE DIRECTLY. EDIT XML DOCUMENT INSTEAD
5} 5}
6{\fonttbl{\f0\froman Times New Roman;}{\f1\fswiss Arial;}{\f3\froman Symbol;}}{\colortbl; 6{\fonttbl{\f0\froman Times New Roman;}{\f1\fswiss Arial;}{\f3\froman Symbol;}}{\colortbl;
7 \red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; 7 \red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
8 \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; 8 \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
9 \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; 9 \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
10 \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} 10 \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}
11 11
12\pard\plain\keepn 12\pard\plain\keepn
13#{\footnote About} 13#{\footnote About}
14${\footnote About KINSole} 14${\footnote About KINSole}
15{ \f1\fs18\b\sb120 About KINSole} 15{ \f1\fs18\b\sb120 About KINSole}
16\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b KINSole} is our {\i Win32} implementation of client side of the {\i telnet} protocol described in details in the {\uldb {\b RFC854}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc854.txt")} and related RFCs (namely {\uldb {\b RFC855}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc855.txt")}, {\uldb {\b RFC857}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc857.txt")}, {\uldb {\b RFC1091}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1091.txt")}, {\uldb {\b RFC1073}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1073.txt")}, {\uldb {\b RFC1572}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1572.txt")} and others). It uses {\i Win32} console and, therefore, can be run both windowed and in fullscreen mode. 16\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b KINSole} is our {\i Win32} implementation of client side of the {\i telnet} protocol described in details in the {\uldb {\b RFC854}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc854.txt")} and related RFCs (namely {\uldb {\b RFC855}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc855.txt")}, {\uldb {\b RFC857}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc857.txt")}, {\uldb {\b RFC1091}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1091.txt")}, {\uldb {\b RFC1073}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1073.txt")}, {\uldb {\b RFC1572}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1572.txt")} and others). It uses {\i Win32} console and, therefore, can be run both windowed and in fullscreen mode.
17\par\sa120\sb120\qj\pard \f1\fs18\sb120 17\par\sa120\sb120\qj\pard \f1\fs18\sb120
18\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}} 18\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}}
19{ 19{
20\par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1998, 2002 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")} 20\par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1998-2004 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")}
21\par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 21\par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
22\par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 22\par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
23\par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23\par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24} 24}
25\par \sa0\sb120\ql \f1\fs16 Author: {\b\uldb\cf11 Michael Krelin ({\i hacker@klever.net})}{\v %!ExecFile("mailto:hacker@klever.net")} 25\par \sa0\sb120\ql \f1\fs16 Author: {\b\uldb\cf11 Michael Krelin ({\i hacker@klever.net})}{\v %!ExecFile("mailto:hacker@klever.net")}
26\par \sa0\sb0 Fan mail send to {\i\uldb gefilte@klever.net}{\v %!ExecFile("mailto:gefilte@klever.net")} 26\par \sa0\sb0 Fan mail send to {\i\uldb gefilte@klever.net}{\v %!ExecFile("mailto:gefilte@klever.net")}
27\page 27\page
28 28
29\pard\plain\keepn 29\pard\plain\keepn
30#{\footnote News} 30#{\footnote News}
31${\footnote Beta News} 31${\footnote What's new}
32{ \f1\fs18\b\sb120 Beta News} 32{ \f1\fs18\b\sb120 What's New}
33\par\pard\plain\f1\fs24\qc\cf2\b 1.00 Beta 3 - August 19st, 2002 33\par\pard\plain\f1\fs24\qc\cf2\b 1.1 - July 11th, 2004
34\par\pard\plain\fi0\li0\f1\fs18 \bullet No changes in code. License change. 34\par\pard\plain\fi0\li0\f1\fs18 \bullet No changes in code. License change.
35\par\pard\plain\f1\fs24\qc\cf2\b 1.00 Beta 2 - March 7th, 1998 35\par\pard\plain\f1\fs24\qc\cf2\b 1.00 Beta 2 - March 7th, 1998
36\par\pard\plain\fi0\li0\f1\fs18 \bullet Better copying from {\b KINSole} window. 36\par\pard\plain\fi0\li0\f1\fs18 \bullet Better copying from {\b KINSole} window.
37\par\pard\plain\fi0\li0\f1\fs18 \bullet Better handling of cursor position when resizing window. 37\par\pard\plain\fi0\li0\f1\fs18 \bullet Better handling of cursor position when resizing window.
38\par\pard\plain\fi0\li0\f1\fs18 \bullet Sending {\b CR/LF} pair when pressing {\b ENTER}. This is of help when telnetting to non-telnet ports. 38\par\pard\plain\fi0\li0\f1\fs18 \bullet Sending {\b CR/LF} pair when pressing {\b ENTER}. This is of help when telnetting to non-telnet ports.
39\par\pard\plain\fi0\li0\f1\fs18 \bullet Corrected bug, preventing {\b KINSole} from pasting text to remote twice. 39\par\pard\plain\fi0\li0\f1\fs18 \bullet Corrected bug, preventing {\b KINSole} from pasting text to remote twice.
40\par\pard\plain\fi0\li0\f1\fs18 \bullet Improved handling of echoing. Previously {\b KINSole} didn't turn echo off on some systems, namely {\b Solaris}. 40\par\pard\plain\fi0\li0\f1\fs18 \bullet Improved handling of echoing. Previously {\b KINSole} didn't turn echo off on some systems, namely {\b Solaris}.
41\par\pard\plain\fi0\li0\f1\fs18 \bullet Typo causing {\b KINSole} not to show diamond characters in {\b VT10x} mode corrected. 41\par\pard\plain\fi0\li0\f1\fs18 \bullet Typo causing {\b KINSole} not to show diamond characters in {\b VT10x} mode corrected.
42\par\pard\plain\fi0\li0\f1\fs18 \bullet {\b GPF} when invoking {\b KINSole} with {\b -t} option fixed. 42\par\pard\plain\fi0\li0\f1\fs18 \bullet {\b GPF} when invoking {\b KINSole} with {\b -t} option fixed.
43\par\pard\plain\fi0\li0\f1\fs18 \bullet Hotkey ({\b Alt-INS}) for copy operation added. Not supposed to work under {\b\cf6 Windows NT}. 43\par\pard\plain\fi0\li0\f1\fs18 \bullet Hotkey ({\b Alt-INS}) for copy operation added. Not supposed to work under {\b\cf6 Windows NT}.
44\par\pard\plain\fi0\li0\f1\fs18 \bullet {\b Paste} is made aware of local echoing. 44\par\pard\plain\fi0\li0\f1\fs18 \bullet {\b Paste} is made aware of local echoing.
45\par\pard\plain\fi0\li0\f1\fs18 \bullet Default terminal type when telnetting to non-telnet port is now {\b TTY}. 45\par\pard\plain\fi0\li0\f1\fs18 \bullet Default terminal type when telnetting to non-telnet port is now {\b TTY}.
46\par\pard\plain\fi0\li0\f1\fs18 \bullet {\b Timing Mark} telnet option ({\uldb {\b RFC860}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc860.txt")}) implemented ({\b Alt-T}). 46\par\pard\plain\fi0\li0\f1\fs18 \bullet {\b Timing Mark} telnet option ({\uldb {\b RFC860}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc860.txt")}) implemented ({\b Alt-T}).
47\par\pard\plain\fi0\li0\f1\fs18 \bullet Improved handling of window icon when starting from other {\i Win32} command line application. 47\par\pard\plain\fi0\li0\f1\fs18 \bullet Improved handling of window icon when starting from other {\i Win32} command line application.
48\page 48\page
49 49
50\pard\plain\keepn 50\pard\plain\keepn
51#{\footnote Using} 51#{\footnote Using}
52${\footnote Using KINSole} 52${\footnote Using KINSole}
53{ \f1\fs18\b\sb120 Using {\b KINSole}} 53{ \f1\fs18\b\sb120 Using {\b KINSole}}
54\par\sa120\sb120\qj\pard \f1\fs18\sb120 You may run {\b KINSole} from your MS-DOS prompt by typing '{\i kinsole host port}'. 54\par\sa120\sb120\qj\pard \f1\fs18\sb120 You may run {\b KINSole} from your MS-DOS prompt by typing '{\i kinsole host port}'.
55\par\sa120\sb120\qj\pard \f1\fs18\sb120 If you need to know more about custom options, please proceed to the {\uldb Command Line Options}{\v CmdOptions} section. 55\par\sa120\sb120\qj\pard \f1\fs18\sb120 If you need to know more about custom options, please proceed to the {\uldb Command Line Options}{\v CmdOptions} section.
56\page 56\page
57 57
58\pard\plain\keepn 58\pard\plain\keepn
59#{\footnote CmdOptions} 59#{\footnote CmdOptions}
60${\footnote Command Line Options} 60${\footnote Command Line Options}
61{ \f1\fs18\b\sb120 Command Line Options} 61{ \f1\fs18\b\sb120 Command Line Options}
62\par\sa120\sb120\qj\pard \f1\fs18\sb120 Usage: 62\par\sa120\sb120\qj\pard \f1\fs18\sb120 Usage:
63\par\sa120\sb120\qj\pard \f1\fs18\sb120 KINSole [{\i options} ]{\i host}[ {\i port}] 63\par\sa120\sb120\qj\pard \f1\fs18\sb120 KINSole [{\i options} ]{\i host}[ {\i port}]
64\par\sa120\sb120\qj\pard \f1\fs18\sb120 Available options are:\pard 64\par\sa120\sb120\qj\pard \f1\fs18\sb120 Available options are:\pard
65\par \fi0\li0 \bullet {\b -r {\i ##}} or {\b -{\i ##}} - Try to set the number of rows in console screen buffer. 65\par \fi0\li0 \bullet {\b -r {\i ##}} or {\b -{\i ##}} - Try to set the number of rows in console screen buffer.
66\par \fi0\li0 \bullet {\b -c {\i ##}} - Try to set the number of columns in console screenbuffer. 66\par \fi0\li0 \bullet {\b -c {\i ##}} - Try to set the number of columns in console screenbuffer.
67\par \fi0\li0 \bullet 67\par \fi0\li0 \bullet
68\par\sa120\sb120\qj\f1\fs16 Note: Changing of console's screenbuffer size either from command line or on remote host's request (ESC[?3h vt100/vt102 control sequence) may not work when in fullscreen mode. 68\par\sa120\sb120\qj\f1\fs16 Note: Changing of console's screenbuffer size either from command line or on remote host's request (ESC[?3h vt100/vt102 control sequence) may not work when in fullscreen mode.
69\par \fi0\li0 \bullet {\b -l {\i username}} - Pass username to remote server in environment if remote server allows. 69\par \fi0\li0 \bullet {\b -l {\i username}} - Pass username to remote server in environment if remote server allows.
70\par \fi0\li0 \bullet {\b -e {\i var}={\i val}} - Pass environment variable to remote server. 70\par \fi0\li0 \bullet {\b -e {\i var}={\i val}} - Pass environment variable to remote server.
71\par \fi0\li0 \bullet {\b -v {\i var}={\i val}} - Pass user environment variable to remote server. 71\par \fi0\li0 \bullet {\b -v {\i var}={\i val}} - Pass user environment variable to remote server.
72\par \fi0\li0 \bullet {\b -t {\i termtype}} - Change preferred terminal type to pass to remote server. This option does not really force specific terminal emulation. Final decision on terminal type is left up to server. Both sides are supposed to negotiate terminal type when connecting so that both sides may feel satisfied. Default preference is {\b vt102}.\pard 72\par \fi0\li0 \bullet {\b -t {\i termtype}} - Change preferred terminal type to pass to remote server. This option does not really force specific terminal emulation. Final decision on terminal type is left up to server. Both sides are supposed to negotiate terminal type when connecting so that both sides may feel satisfied. Default preference is {\b vt102}.\pard
73\page 73\page
74 74
75\pard\plain\keepn 75\pard\plain\keepn
76#{\footnote HotKeys} 76#{\footnote HotKeys}
77${\footnote Hot Keys} 77${\footnote Hot Keys}
78{ \f1\fs18\b\sb120 Hot Keys} 78{ \f1\fs18\b\sb120 Hot Keys}
79\par\sa120\sb120\qj\pard \f1\fs18\sb120 While running {\b KINSole} you may use these key combinations:\pard 79\par\sa120\sb120\qj\pard \f1\fs18\sb120 While running {\b KINSole} you may use these key combinations:\pard
80\par \fi0\li0 \bullet {\b Alt-X/Alt-Q} - Terminate telnet session and leave {\b KINSole}. 80\par \fi0\li0 \bullet {\b Alt-X/Alt-Q} - Terminate telnet session and leave {\b KINSole}.
81\par \fi0\li0 \bullet {\b Alt-Y} - Send {\b AYT (Are You There)} telnet command. Remote host (if it supports telnet protocol as it's supposed to) should provide you with visible/printable/audible feedback stating that it's alive. You may want to use it when running program which takes unusually long time to finish and you suspect that your connection is dead. 81\par \fi0\li0 \bullet {\b Alt-Y} - Send {\b AYT (Are You There)} telnet command. Remote host (if it supports telnet protocol as it's supposed to) should provide you with visible/printable/audible feedback stating that it's alive. You may want to use it when running program which takes unusually long time to finish and you suspect that your connection is dead.
82\par \fi0\li0 \bullet {\b Shift-INS} Paste text from Windows Clipboard. 82\par \fi0\li0 \bullet {\b Shift-INS} Paste text from Windows Clipboard.
83\par \fi0\li0 \bullet {\b Ctrl-Break} Send {\b IP (Interrupt Process)} telnet command. Usually effectively equivalent to Ctrl-C, but it's up to server to decide what to do in each case. 83\par \fi0\li0 \bullet {\b Ctrl-Break} Send {\b IP (Interrupt Process)} telnet command. Usually effectively equivalent to Ctrl-C, but it's up to server to decide what to do in each case.
84\par \fi0\li0 \bullet {\b Alt-INS} - Invoke {\b copying} from {\b KINSole} screen buffer. 84\par \fi0\li0 \bullet {\b Alt-INS} - Invoke {\b copying} from {\b KINSole} screen buffer.
85\par \fi0\li0 \bullet {\b Alt-T} - Send {\b TIMING-MARK} request. As soon as response comes {\b KINSole} will flash window thrice or beep if window handle is not available for some reason.\pard 85\par \fi0\li0 \bullet {\b Alt-T} - Send {\b TIMING-MARK} request. As soon as response comes {\b KINSole} will flash window thrice or beep if window handle is not available for some reason.\pard
86\page 86\page
87 87
88\pard\plain\keepn 88\pard\plain\keepn
89#{\footnote BetaNotes} 89#{\footnote Notes}
90${\footnote Beta Notes} 90${\footnote Notes}
91{ \f1\fs18\b\sb120 Beta Notes} 91{ \f1\fs18\b\sb120 Notes}
92\par\sa120\sb120\qj\pard \f1\fs18\sb120 A few things you may want to know about this Beta Release:\pard 92\par\sa120\sb120\qj\pard \f1\fs18\sb120 A few things you may want to know about this release:\pard
93\par \fi0\li0 \bullet Only two terminal emulation modules are included in this beta release - one for dumb terminal and one for vt100/102. If you try to select ANSI terminal type vt100 emulation will be selected, which is actually close enough to ANSI so you shouldn't suffer too much. Why would one want to use ANSI terminal emulation, anyway? 93\par \fi0\li0 \bullet Only two terminal emulation modules are included in this release - one for dumb terminal and one for vt100/102. If you try to select ANSI terminal type vt100 emulation will be selected, which is actually close enough to ANSI so you shouldn't suffer too much. Why would one want to use ANSI terminal emulation, anyway?
94\par \fi0\li0 \bullet Telnet {\b LINEMODE} option ({\uldb {\b RFC1184}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1184.txt")}) is still to come. 94\par \fi0\li0 \bullet Telnet {\b LINEMODE} option ({\uldb {\b RFC1184}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1184.txt")}) is still to come.
95\par \fi0\li0 \bullet Pasting of text using console toolbar button may cause {\b KINSole} to lock up. Use {\b Shift-INS} instead.\pard 95\par \fi0\li0 \bullet Pasting of text using console toolbar button may cause {\b KINSole} to lock up. Use {\b Shift-INS} instead.\pard
96\page 96\page
97} \ No newline at end of file 97} \ No newline at end of file
diff --git a/help/kinsole.xml b/help/kinsole.xml
index 7d15eed..c08aa01 100644
--- a/help/kinsole.xml
+++ b/help/kinsole.xml
@@ -1,72 +1,72 @@
1<?xml version="1.0"?> 1<?xml version="1.0"?>
2<winhelp> 2<winhelp>
3 <topic id="About" title="About KINSole"> 3 <topic id="About" title="About KINSole">
4 <heading scroll="no">About KINSole</heading> 4 <heading scroll="no">About KINSole</heading>
5 <p><kin>KINSole</kin> is our <term>Win32</term> implementation of client side of the <term>telnet</term> protocol described in details in the <rfc num="854"/> and related RFCs (namely <rfc num="855"/>, <rfc num="857"/>, <rfc num="1091"/>, <rfc num="1073"/>, <rfc num="1572"/> and others). It uses <term>Win32</term> console and, therefore, can be run both windowed and in fullscreen mode.</p> 5 <p><kin>KINSole</kin> is our <term>Win32</term> implementation of client side of the <term>telnet</term> protocol described in details in the <rfc num="854"/> and related RFCs (namely <rfc num="855"/>, <rfc num="857"/>, <rfc num="1091"/>, <rfc num="1073"/>, <rfc num="1572"/> and others). It uses <term>Win32</term> console and, therefore, can be run both windowed and in fullscreen mode.</p>
6 <p/> 6 <p/>
7 <p><b><i>Enjoy!</i></b></p> 7 <p><b><i>Enjoy!</i></b></p>
8 <license years="1998, 2002"/> 8 <license years="1998-2004"/>
9 <credits/> 9 <credits/>
10 </topic> 10 </topic>
11 <topic id="News" title="Beta News"> 11 <topic id="News" title="What's new">
12 <heading scroll="no">Beta News</heading> 12 <heading scroll="no">What's New</heading>
13 <newsfor version="1.00 Beta 3" date="August 19st, 2002"> 13 <newsfor version="1.1" date="July 11th, 2004">
14 <ni>No changes in code. License change.</ni> 14 <ni>No changes in code. License change.</ni>
15 </newsfor> 15 </newsfor>
16 <newsfor version="1.00 Beta 2" date="March 7th, 1998"> 16 <newsfor version="1.00 Beta 2" date="March 7th, 1998">
17 <ni>Better copying from <kin>KINSole</kin> window.</ni> 17 <ni>Better copying from <kin>KINSole</kin> window.</ni>
18 <ni>Better handling of cursor position when resizing window.</ni> 18 <ni>Better handling of cursor position when resizing window.</ni>
19 <ni>Sending <b>CR/LF</b> pair when pressing <b>ENTER</b>. This is of help when telnetting to non-telnet ports.</ni> 19 <ni>Sending <b>CR/LF</b> pair when pressing <b>ENTER</b>. This is of help when telnetting to non-telnet ports.</ni>
20 <ni>Corrected bug, preventing <kin>KINSole</kin> from pasting text to remote twice.</ni> 20 <ni>Corrected bug, preventing <kin>KINSole</kin> from pasting text to remote twice.</ni>
21 <ni>Improved handling of echoing. Previously <kin>KINSole</kin> didn't turn echo off on some systems, namely <b>Solaris</b>.</ni> 21 <ni>Improved handling of echoing. Previously <kin>KINSole</kin> didn't turn echo off on some systems, namely <b>Solaris</b>.</ni>
22 <ni>Typo causing <kin>KINSole</kin> not to show diamond characters in <b>VT10x</b> mode corrected.</ni> 22 <ni>Typo causing <kin>KINSole</kin> not to show diamond characters in <b>VT10x</b> mode corrected.</ni>
23 <ni><b>GPF</b> when invoking <kin>KINSole</kin> with <b>-t</b> option fixed.</ni> 23 <ni><b>GPF</b> when invoking <kin>KINSole</kin> with <b>-t</b> option fixed.</ni>
24 <ni>Hotkey (<b>Alt-INS</b>) for copy operation added. Not supposed to work under <product>Windows NT</product>.</ni> 24 <ni>Hotkey (<b>Alt-INS</b>) for copy operation added. Not supposed to work under <product>Windows NT</product>.</ni>
25 <ni><b>Paste</b> is made aware of local echoing.</ni> 25 <ni><b>Paste</b> is made aware of local echoing.</ni>
26 <ni>Default terminal type when telnetting to non-telnet port is now <b>TTY</b>.</ni> 26 <ni>Default terminal type when telnetting to non-telnet port is now <b>TTY</b>.</ni>
27 <ni><b>Timing Mark</b> telnet option (<rfc num="860"/>) implemented (<b>Alt-T</b>).</ni> 27 <ni><b>Timing Mark</b> telnet option (<rfc num="860"/>) implemented (<b>Alt-T</b>).</ni>
28 <ni>Improved handling of window icon when starting from other <term>Win32</term> command line application.</ni> 28 <ni>Improved handling of window icon when starting from other <term>Win32</term> command line application.</ni>
29 </newsfor> 29 </newsfor>
30 </topic> 30 </topic>
31 <topic id="Using" title="Using KINSole"> 31 <topic id="Using" title="Using KINSole">
32 <heading scroll="no">Using <kin>KINSole</kin></heading> 32 <heading scroll="no">Using <kin>KINSole</kin></heading>
33 <p>You may run <kin>KINSole</kin> from your MS-DOS prompt by typing '<i>kinsole host port</i>'.</p> 33 <p>You may run <kin>KINSole</kin> from your MS-DOS prompt by typing '<i>kinsole host port</i>'.</p>
34 <p>If you need to know more about custom options, please proceed to the <a href="#CmdOptions">Command Line Options</a> section.</p> 34 <p>If you need to know more about custom options, please proceed to the <a href="#CmdOptions">Command Line Options</a> section.</p>
35 </topic> 35 </topic>
36 <topic id="CmdOptions" title="Command Line Options"> 36 <topic id="CmdOptions" title="Command Line Options">
37 <heading scroll="no">Command Line Options</heading> 37 <heading scroll="no">Command Line Options</heading>
38 <p>Usage:</p> 38 <p>Usage:</p>
39 <p>KINSole [<i>options</i> ]<i>host</i>[ <i>port</i>]</p> 39 <p>KINSole [<i>options</i> ]<i>host</i>[ <i>port</i>]</p>
40 <p>Available options are:</p> 40 <p>Available options are:</p>
41 <ul> 41 <ul>
42 <li><b>-r <i>##</i></b> or <b>-<i>##</i></b> - Try to set the number of rows in console screen buffer.</li> 42 <li><b>-r <i>##</i></b> or <b>-<i>##</i></b> - Try to set the number of rows in console screen buffer.</li>
43 <li><b>-c <i>##</i></b> - Try to set the number of columns in console screenbuffer.</li> 43 <li><b>-c <i>##</i></b> - Try to set the number of columns in console screenbuffer.</li>
44 <li><note>Note: Changing of console's screenbuffer size either from command line or on remote host's request (ESC[?3h vt100/vt102 control sequence) may not work when in fullscreen mode.</note></li> 44 <li><note>Note: Changing of console's screenbuffer size either from command line or on remote host's request (ESC[?3h vt100/vt102 control sequence) may not work when in fullscreen mode.</note></li>
45 <li><b>-l <i>username</i></b> - Pass username to remote server in environment if remote server allows.</li> 45 <li><b>-l <i>username</i></b> - Pass username to remote server in environment if remote server allows.</li>
46 <li><b>-e <i>var</i>=<i>val</i></b> - Pass environment variable to remote server.</li> 46 <li><b>-e <i>var</i>=<i>val</i></b> - Pass environment variable to remote server.</li>
47 <li><b>-v <i>var</i>=<i>val</i></b> - Pass user environment variable to remote server.</li> 47 <li><b>-v <i>var</i>=<i>val</i></b> - Pass user environment variable to remote server.</li>
48 <li><b>-t <i>termtype</i></b> - Change preferred terminal type to pass to remote server. This option does not really force specific terminal emulation. Final decision on terminal type is left up to server. Both sides are supposed to negotiate terminal type when connecting so that both sides may feel satisfied. Default preference is <b>vt102</b>.</li> 48 <li><b>-t <i>termtype</i></b> - Change preferred terminal type to pass to remote server. This option does not really force specific terminal emulation. Final decision on terminal type is left up to server. Both sides are supposed to negotiate terminal type when connecting so that both sides may feel satisfied. Default preference is <b>vt102</b>.</li>
49 </ul> 49 </ul>
50 </topic> 50 </topic>
51 <topic id="HotKeys" title="Hot Keys"> 51 <topic id="HotKeys" title="Hot Keys">
52 <heading scroll="no">Hot Keys</heading> 52 <heading scroll="no">Hot Keys</heading>
53 <p>While running <kin>KINSole</kin> you may use these key combinations:</p> 53 <p>While running <kin>KINSole</kin> you may use these key combinations:</p>
54 <ul> 54 <ul>
55 <li><b>Alt-X/Alt-Q</b> - Terminate telnet session and leave <kin>KINSole</kin>.</li> 55 <li><b>Alt-X/Alt-Q</b> - Terminate telnet session and leave <kin>KINSole</kin>.</li>
56 <li><b>Alt-Y</b> - Send <b>AYT (Are You There)</b> telnet command. Remote host (if it supports telnet protocol as it's supposed to) should provide you with visible/printable/audible feedback stating that it's alive. You may want to use it when running program which takes unusually long time to finish and you suspect that your connection is dead.</li> 56 <li><b>Alt-Y</b> - Send <b>AYT (Are You There)</b> telnet command. Remote host (if it supports telnet protocol as it's supposed to) should provide you with visible/printable/audible feedback stating that it's alive. You may want to use it when running program which takes unusually long time to finish and you suspect that your connection is dead.</li>
57 <li><b>Shift-INS</b> Paste text from Windows Clipboard.</li> 57 <li><b>Shift-INS</b> Paste text from Windows Clipboard.</li>
58 <li><b>Ctrl-Break</b> Send <b>IP (Interrupt Process)</b> telnet command. Usually effectively equivalent to Ctrl-C, but it's up to server to decide what to do in each case.</li> 58 <li><b>Ctrl-Break</b> Send <b>IP (Interrupt Process)</b> telnet command. Usually effectively equivalent to Ctrl-C, but it's up to server to decide what to do in each case.</li>
59 <li><b>Alt-INS</b> - Invoke <b>copying</b> from <kin>KINSole</kin> screen buffer.</li> 59 <li><b>Alt-INS</b> - Invoke <b>copying</b> from <kin>KINSole</kin> screen buffer.</li>
60 <li><b>Alt-T</b> - Send <b>TIMING-MARK</b> request. As soon as response comes <kin>KINSole</kin> will flash window thrice or beep if window handle is not available for some reason.</li> 60 <li><b>Alt-T</b> - Send <b>TIMING-MARK</b> request. As soon as response comes <kin>KINSole</kin> will flash window thrice or beep if window handle is not available for some reason.</li>
61 </ul> 61 </ul>
62 </topic> 62 </topic>
63 <topic id="BetaNotes" title="Beta Notes"> 63 <topic id="Notes" title="Notes">
64 <heading scroll="no">Beta Notes</heading> 64 <heading scroll="no">Notes</heading>
65 <p>A few things you may want to know about this Beta Release:</p> 65 <p>A few things you may want to know about this release:</p>
66 <ul> 66 <ul>
67 <li>Only two terminal emulation modules are included in this beta release - one for dumb terminal and one for vt100/102. If you try to select ANSI terminal type vt100 emulation will be selected, which is actually close enough to ANSI so you shouldn't suffer too much. Why would one want to use ANSI terminal emulation, anyway?</li> 67 <li>Only two terminal emulation modules are included in this release - one for dumb terminal and one for vt100/102. If you try to select ANSI terminal type vt100 emulation will be selected, which is actually close enough to ANSI so you shouldn't suffer too much. Why would one want to use ANSI terminal emulation, anyway?</li>
68 <li>Telnet <b>LINEMODE</b> option (<rfc num="1184"/>) is still to come.</li> 68 <li>Telnet <b>LINEMODE</b> option (<rfc num="1184"/>) is still to come.</li>
69 <li>Pasting of text using console toolbar button may cause <kin>KINSole</kin> to lock up. Use <b>Shift-INS</b> instead.</li> 69 <li>Pasting of text using console toolbar button may cause <kin>KINSole</kin> to lock up. Use <b>Shift-INS</b> instead.</li>
70 </ul> 70 </ul>
71 </topic> 71 </topic>
72</winhelp> 72</winhelp>
diff --git a/install/install.cpp b/install/install.cpp
index e6f4e5a..aa474d5 100644
--- a/install/install.cpp
+++ b/install/install.cpp
@@ -1,65 +1,65 @@
1#include "resource.h" 1#include "resource.h"
2#include "../shared-code/install.h" 2#include "../shared-code/install.h"
3 3
4 #define KINAME"KINSole 1.00 Beta 3" 4 #define KINAME"KINSole 1.1"
5 #define SKINAME"KINSole" 5 #define SKINAME"KINSole"
6 6
7BOOL Install(void) 7BOOL Install(void)
8{ 8{
9STRING tPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group, Inc.",SKINAME "Path"); 9STRING tPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",SKINAME "Path");
10STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group, Inc.","KINPath"); 10STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath");
11LPCSTR qPath = ((LPCSTR)tPath)?(LPCSTR)tPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings"); 11LPCSTR qPath = ((LPCSTR)tPath)?(LPCSTR)tPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings");
12STRING path = REQUESTPATH(" " KINAME,"Note: KINSole program file will be installed into your windows directory so that you can rely on it's presence in your search path\nEnter destination path:",qPath); 12STRING path = REQUESTPATH(" " KINAME,"Note: KINSole program file will be installed into your windows directory so that you can rely on it's presence in your search path\nEnter destination path:",qPath);
13 if(!path) 13 if(!path)
14 return NULL; 14 return NULL;
15STRING winDir(_MAX_PATH); 15STRING winDir(_MAX_PATH);
16 16
17 GetWindowsDirectory(winDir,_MAX_PATH); 17 GetWindowsDirectory(winDir,_MAX_PATH);
18 INSTALLFILE("KINSole.ex_",winDir,"KINSole.exe"); 18 INSTALLFILE("KINSole.ex_",winDir,"KINSole.exe");
19 MAKE_PATH(path); 19 MAKE_PATH(path);
20STRING shortPath = GET_SHORT_PATH(path); 20STRING shortPath = GET_SHORT_PATH(path);
21 if(!shortPath){ 21 if(!shortPath){
22 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK); 22 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK);
23 return FALSE; 23 return FALSE;
24 } 24 }
25 if(!( 25 if(!(
26 INSTALLFILE("KINSole.hl_",path,"KINSole.hlp") && 26 INSTALLFILE("KINSole.hl_",path,"KINSole.hlp") &&
27 INSTALLFILE("KINSole.cn_",path,"KINSole.cnt") 27 INSTALLFILE("KINSole.cn_",path,"KINSole.cnt")
28 )){ 28 )){
29 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK); 29 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK);
30 return FALSE; 30 return FALSE;
31 } 31 }
32 ADDMENU("Accessories\\Klever Co.","KINSole Help",path,SKINAME ".hlp"); 32 ADDMENU("Klever Group","KINSole Help",path,SKINAME ".hlp");
33 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group, Inc.", SKINAME "Path",path); 33 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group", SKINAME "Path",path);
34 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group, Inc.","KINPath",path); 34 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath",path);
35FILE* inf=CREATE_INF_FILE(path, SKINAME ".INF"); 35FILE* inf=CREATE_INF_FILE(path, SKINAME ".INF");
36 if(!inf){ 36 if(!inf){
37 MessageBox(NULL,"Failed to install " KINAME,NULL,MB_ICONERROR|MB_OK); 37 MessageBox(NULL,"Failed to install " KINAME,NULL,MB_ICONERROR|MB_OK);
38 return FALSE; 38 return FALSE;
39 } 39 }
40 INF_FILE_HEADER(inf); 40 INF_FILE_HEADER(inf);
41 INF_FILE_SECTION(inf,"Uninstall"); 41 INF_FILE_SECTION(inf,"Uninstall");
42 fprintf(inf,"AddReg=kFiles\nDelReg=kReg\nUpdateInis=kMenu\n"); 42 fprintf(inf,"AddReg=kFiles\nDelReg=kReg\nUpdateInis=kMenu\n");
43 43
44 INF_FILE_SECTION(inf,"kFiles"); 44 INF_FILE_SECTION(inf,"kFiles");
45 INF_REMOVE_ROOT(inf,SKINAME "Files",shortPath); 45 INF_REMOVE_ROOT(inf,SKINAME "Files",shortPath);
46 INF_REMOVE_HELP_FILE(inf,SKINAME "Files",SKINAME); 46 INF_REMOVE_HELP_FILE(inf,SKINAME "Files",SKINAME);
47 INF_REMOVE_FILE(inf,SKINAME "Files",SKINAME ".inf"); 47 INF_REMOVE_FILE(inf,SKINAME "Files",SKINAME ".inf");
48 48
49 INF_REMOVE_ROOT(inf,SKINAME "WFiles",winDir); 49 INF_REMOVE_ROOT(inf,SKINAME "WFiles",winDir);
50 INF_REMOVE_FILE(inf,SKINAME "WFiles",SKINAME ".exe"); 50 INF_REMOVE_FILE(inf,SKINAME "WFiles",SKINAME ".exe");
51 51
52 INF_FILE_SECTION(inf,"kReg"); 52 INF_FILE_SECTION(inf,"kReg");
53 INF_UNINSTALL_REG(inf,SKINAME); 53 INF_UNINSTALL_REG(inf,SKINAME);
54 54
55 INF_FILE_SECTION(inf,"kMenu"); 55 INF_FILE_SECTION(inf,"kMenu");
56 INF_MENU_GROUP(inf,1,"Accessories\\Klever Co."); 56 INF_MENU_GROUP(inf,1,"Klever Group");
57 INF_MENU_ITEM(inf,1,"KINSole Help"); 57 INF_MENU_ITEM(inf,1,"KINSole Help");
58 fclose(inf); 58 fclose(inf);
59 59
60 REG_UNINSTALL_COMMAND(SKINAME,"Klever " KINAME,shortPath,SKINAME ".INF","Uninstall"); 60 REG_UNINSTALL_COMMAND(SKINAME,"Klever " KINAME,shortPath,SKINAME ".INF","Uninstall");
61 61
62 MessageBox(NULL,KINAME " installed successfully, you may now run it from command line, read documentation in Programs/Accessories/Klever Co. menu or simply remove it using Control Panel Add/Remove Programs applet."," Rejoice!",MB_ICONINFORMATION|MB_OK); 62 MessageBox(NULL,KINAME " installed successfully, you may now run it from command line, read documentation in 'Programs/Klever Group' menu or simply remove it using Control Panel Add/Remove Programs applet."," Rejoice!",MB_ICONINFORMATION|MB_OK);
63 63
64 return TRUE; 64 return TRUE;
65} 65}
diff --git a/install/install.rc b/install/install.rc
index d7780b6..04ae8f4 100644
--- a/install/install.rc
+++ b/install/install.rc
@@ -1,182 +1,182 @@
1//Microsoft Developer Studio generated resource script. 1//Microsoft Developer Studio generated resource script.
2// 2//
3#include "resource.h" 3#include "resource.h"
4 4
5#define APSTUDIO_READONLY_SYMBOLS 5#define APSTUDIO_READONLY_SYMBOLS
6///////////////////////////////////////////////////////////////////////////// 6/////////////////////////////////////////////////////////////////////////////
7// 7//
8// Generated from the TEXTINCLUDE 2 resource. 8// Generated from the TEXTINCLUDE 2 resource.
9// 9//
10#include "afxres.h" 10#include "afxres.h"
11 11
12///////////////////////////////////////////////////////////////////////////// 12/////////////////////////////////////////////////////////////////////////////
13#undef APSTUDIO_READONLY_SYMBOLS 13#undef APSTUDIO_READONLY_SYMBOLS
14 14
15///////////////////////////////////////////////////////////////////////////// 15/////////////////////////////////////////////////////////////////////////////
16// English (U.S.) resources 16// English (U.S.) resources
17 17
18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
19#ifdef _WIN32 19#ifdef _WIN32
20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
21#pragma code_page(1252) 21#pragma code_page(1252)
22#endif //_WIN32 22#endif //_WIN32
23 23
24///////////////////////////////////////////////////////////////////////////// 24/////////////////////////////////////////////////////////////////////////////
25// 25//
26// Dialog 26// Dialog
27// 27//
28 28
29#if defined(APSTUDIO_INVOKED) || defined(FALSE) 29#if defined(APSTUDIO_INVOKED) || defined(FALSE)
30#if defined(APSTUDIO_INVOKED) 30#if defined(APSTUDIO_INVOKED)
31IDD_INSTALLING$(FALSE) DIALOGEX 0, 0, 200, 74 31IDD_INSTALLING$(FALSE) DIALOGEX 0, 0, 200, 74
32#else 32#else
33IDD_INSTALLING DIALOGEX 0, 0, 200, 74 33IDD_INSTALLING DIALOGEX 0, 0, 200, 74
34#endif 34#endif
35STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP 35STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP
36FONT 8, "MS Sans Serif", 0, 0, 0x1 36FONT 8, "MS Sans Serif", 0, 0, 0x1
37BEGIN 37BEGIN
38 PUSHBUTTON "Cancel",IDCANCEL,143,53,50,14,BS_CENTER | BS_VCENTER | 38 PUSHBUTTON "Cancel",IDCANCEL,143,53,50,14,BS_CENTER | BS_VCENTER |
39 BS_NOTIFY | BS_FLAT,WS_EX_DLGMODALFRAME 39 BS_NOTIFY | BS_FLAT,WS_EX_DLGMODALFRAME
40 CONTROL "Animate1",IDC_DISKS,"SysAnimate32",ACS_TRANSPARENT | 40 CONTROL "Animate1",IDC_DISKS,"SysAnimate32",ACS_TRANSPARENT |
41 ACS_AUTOPLAY | WS_TABSTOP,161,7,32,32 41 ACS_AUTOPLAY | WS_TABSTOP,161,7,32,32
42 LTEXT "",IDC_STATE,7,7,150,32,SS_NOPREFIX | SS_NOTIFY 42 LTEXT "",IDC_STATE,7,7,150,32,SS_NOPREFIX | SS_NOTIFY
43 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",0x0,7,45, 43 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",0x0,7,45,
44 186,7,WS_EX_DLGMODALFRAME 44 186,7,WS_EX_DLGMODALFRAME
45END 45END
46#endif 46#endif
47 47
48IDD_PATH DIALOGEX 0, 0, 255, 73 48IDD_PATH DIALOGEX 0, 0, 255, 73
49STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | WS_POPUP | 49STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | WS_POPUP |
50 WS_VISIBLE | WS_CAPTION 50 WS_VISIBLE | WS_CAPTION
51EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE 51EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
52FONT 8, "MS Sans Serif", 0, 0, 0x1 52FONT 8, "MS Sans Serif", 0, 0, 0x1
53BEGIN 53BEGIN
54 LTEXT "",IDC_PROMPT,7,7,241,30 54 LTEXT "",IDC_PROMPT,7,7,241,30
55 EDITTEXT IDC_PATH,7,37,195,12,ES_AUTOHSCROLL 55 EDITTEXT IDC_PATH,7,37,195,12,ES_AUTOHSCROLL
56 PUSHBUTTON "B&rowse..",IDC_BROWSE,208,37,40,12 56 PUSHBUTTON "B&rowse..",IDC_BROWSE,208,37,40,12
57 DEFPUSHBUTTON "OK",IDOK,69,52,50,14 57 DEFPUSHBUTTON "OK",IDOK,69,52,50,14
58 PUSHBUTTON "Cancel",IDCANCEL,135,52,50,14 58 PUSHBUTTON "Cancel",IDCANCEL,135,52,50,14
59END 59END
60 60
61 61
62///////////////////////////////////////////////////////////////////////////// 62/////////////////////////////////////////////////////////////////////////////
63// 63//
64// DESIGNINFO 64// DESIGNINFO
65// 65//
66 66
67#ifdef APSTUDIO_INVOKED 67#ifdef APSTUDIO_INVOKED
68GUIDELINES DESIGNINFO DISCARDABLE 68GUIDELINES DESIGNINFO DISCARDABLE
69BEGIN 69BEGIN
70 "IDD_INSTALLING$(FALSE)", DIALOG 70 "IDD_INSTALLING$(FALSE)", DIALOG
71 BEGIN 71 BEGIN
72 LEFTMARGIN, 7 72 LEFTMARGIN, 7
73 RIGHTMARGIN, 193 73 RIGHTMARGIN, 193
74 TOPMARGIN, 7 74 TOPMARGIN, 7
75 BOTTOMMARGIN, 67 75 BOTTOMMARGIN, 67
76 HORZGUIDE, 39 76 HORZGUIDE, 39
77 END 77 END
78 78
79 IDD_PATH, DIALOG 79 IDD_PATH, DIALOG
80 BEGIN 80 BEGIN
81 LEFTMARGIN, 7 81 LEFTMARGIN, 7
82 RIGHTMARGIN, 248 82 RIGHTMARGIN, 248
83 VERTGUIDE, 202 83 VERTGUIDE, 202
84 VERTGUIDE, 208 84 VERTGUIDE, 208
85 TOPMARGIN, 7 85 TOPMARGIN, 7
86 BOTTOMMARGIN, 66 86 BOTTOMMARGIN, 66
87 HORZGUIDE, 37 87 HORZGUIDE, 37
88 END 88 END
89END 89END
90#endif // APSTUDIO_INVOKED 90#endif // APSTUDIO_INVOKED
91 91
92 92
93#ifdef APSTUDIO_INVOKED 93#ifdef APSTUDIO_INVOKED
94///////////////////////////////////////////////////////////////////////////// 94/////////////////////////////////////////////////////////////////////////////
95// 95//
96// TEXTINCLUDE 96// TEXTINCLUDE
97// 97//
98 98
991 TEXTINCLUDE DISCARDABLE 991 TEXTINCLUDE DISCARDABLE
100BEGIN 100BEGIN
101 "resource.h\0" 101 "resource.h\0"
102END 102END
103 103
1042 TEXTINCLUDE DISCARDABLE 1042 TEXTINCLUDE DISCARDABLE
105BEGIN 105BEGIN
106 "#include ""afxres.h""\r\n" 106 "#include ""afxres.h""\r\n"
107 "\0" 107 "\0"
108END 108END
109 109
1103 TEXTINCLUDE DISCARDABLE 1103 TEXTINCLUDE DISCARDABLE
111BEGIN 111BEGIN
112 "#include ""custom.rch""\0" 112 "#include ""custom.rch""\0"
113END 113END
114 114
115#endif // APSTUDIO_INVOKED 115#endif // APSTUDIO_INVOKED
116 116
117 117
118///////////////////////////////////////////////////////////////////////////// 118/////////////////////////////////////////////////////////////////////////////
119// 119//
120// Icon 120// Icon
121// 121//
122 122
123// Icon with lowest ID value placed first to ensure application icon 123// Icon with lowest ID value placed first to ensure application icon
124// remains consistent on all systems. 124// remains consistent on all systems.
125IDI_ICON ICON DISCARDABLE "../shared-data/install-icon.ico" 125IDI_ICON ICON DISCARDABLE "../shared-data/install-icon.ico"
126 126
127#ifndef _MAC 127#ifndef _MAC
128///////////////////////////////////////////////////////////////////////////// 128/////////////////////////////////////////////////////////////////////////////
129// 129//
130// Version 130// Version
131// 131//
132 132
133VS_VERSION_INFO VERSIONINFO 133VS_VERSION_INFO VERSIONINFO
134 FILEVERSION 1,0,0,3 134 FILEVERSION 1,1,0,0
135 PRODUCTVERSION 1,0,0,3 135 PRODUCTVERSION 1,1,0,0
136 FILEFLAGSMASK 0x3fL 136 FILEFLAGSMASK 0x3fL
137#ifdef _DEBUG 137#ifdef _DEBUG
138 FILEFLAGS 0x1L 138 FILEFLAGS 0x1L
139#else 139#else
140 FILEFLAGS 0x0L 140 FILEFLAGS 0x0L
141#endif 141#endif
142 FILEOS 0x40004L 142 FILEOS 0x40004L
143 FILETYPE 0x1L 143 FILETYPE 0x1L
144 FILESUBTYPE 0x0L 144 FILESUBTYPE 0x0L
145BEGIN 145BEGIN
146 BLOCK "StringFileInfo" 146 BLOCK "StringFileInfo"
147 BEGIN 147 BEGIN
148 BLOCK "040904b0" 148 BLOCK "040904b0"
149 BEGIN 149 BEGIN
150 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" 150 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0"
151 VALUE "FileDescription", "INSTALL: KINSole, telnet client\0" 151 VALUE "FileDescription", "INSTALL: KINSole, telnet client\0"
152 VALUE "FileVersion", "1, 0, 0, 3\0" 152 VALUE "FileVersion", "1, 1, 0, 0\0"
153 VALUE "InternalName", "INSTALL\0" 153 VALUE "InternalName", "INSTALL\0"
154 VALUE "LegalCopyright", "Copyright © 1998, 2002 Klever Group (http://www.klever.net/)\0" 154 VALUE "LegalCopyright", "Copyright © 1998-2004 Klever Group (http://www.klever.net/)\0"
155 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" 155 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0"
156 VALUE "OriginalFilename", "INSTALL.EXE\0" 156 VALUE "OriginalFilename", "INSTALL.EXE\0"
157 VALUE "ProductName", "KINSole\0" 157 VALUE "ProductName", "KINSole\0"
158 VALUE "ProductVersion", "1, 0, 0, 3\0" 158 VALUE "ProductVersion", "1, 1, 0, 0\0"
159 END 159 END
160 END 160 END
161 BLOCK "VarFileInfo" 161 BLOCK "VarFileInfo"
162 BEGIN 162 BEGIN
163 VALUE "Translation", 0x409, 1200 163 VALUE "Translation", 0x409, 1200
164 END 164 END
165END 165END
166 166
167#endif // !_MAC 167#endif // !_MAC
168 168
169#endif // English (U.S.) resources 169#endif // English (U.S.) resources
170///////////////////////////////////////////////////////////////////////////// 170/////////////////////////////////////////////////////////////////////////////
171 171
172 172
173 173
174#ifndef APSTUDIO_INVOKED 174#ifndef APSTUDIO_INVOKED
175///////////////////////////////////////////////////////////////////////////// 175/////////////////////////////////////////////////////////////////////////////
176// 176//
177// Generated from the TEXTINCLUDE 3 resource. 177// Generated from the TEXTINCLUDE 3 resource.
178// 178//
179#include "custom.rch" 179#include "custom.rch"
180///////////////////////////////////////////////////////////////////////////// 180/////////////////////////////////////////////////////////////////////////////
181#endif // not APSTUDIO_INVOKED 181#endif // not APSTUDIO_INVOKED
182 182
diff --git a/kinsole.cpp b/kinsole.cpp
index 463db1c..01286f3 100644
--- a/kinsole.cpp
+++ b/kinsole.cpp
@@ -1,211 +1,211 @@
1#include <stdio.h> 1#include <stdio.h>
2 2
3 #ifdef_DEBUG 3 #ifdef_DEBUG
4#include <afxwin.h> 4#include <afxwin.h>
5#else 5#else
6#define ASSERT(f) ((void)0) 6#define ASSERT(f) ((void)0)
7#define VERIFY(f) ((void)(f)) 7#define VERIFY(f) ((void)(f))
8#define TRACE0(sz) 8#define TRACE0(sz)
9#define TRACE1(sz, p1) 9#define TRACE1(sz, p1)
10#define TRACE2(sz, p1, p2) 10#define TRACE2(sz, p1, p2)
11#define TRACE3(sz, p1, p2, p3) 11#define TRACE3(sz, p1, p2, p3)
12#endif 12#endif
13 13
14#include <winsock.h> 14#include <winsock.h>
15#include "resource.h" 15#include "resource.h"
16#include "windowsx.h" 16#include "windowsx.h"
17 17
18 #define DAMN_KIN_NAME "KINSole" 18 #define DAMN_KIN_NAME "KINSole"
19 #define DAMN_KIN_VERSION"v1.00 Beta 3" 19 #define DAMN_KIN_VERSION"1.1"
20 20
21#ifdef _DEBUG 21#ifdef _DEBUG
22#define new DEBUG_NEW 22#define new DEBUG_NEW
23#undef THIS_FILE 23#undef THIS_FILE
24static char THIS_FILE[] = __FILE__; 24static char THIS_FILE[] = __FILE__;
25#endif 25#endif
26 26
27enum { 27enum {
28 WM_USERSOCKET = WM_USER+16, 28 WM_USERSOCKET = WM_USER+16,
29 WM_USERKEY, 29 WM_USERKEY,
30 WM_USERNOP 30 WM_USERNOP
31}; 31};
32enum { 32enum {
33 tnIAC = 255, 33 tnIAC = 255,
34 tnSE = 240, 34 tnSE = 240,
35 tnNOP = 241, 35 tnNOP = 241,
36 tnDM = 242, 36 tnDM = 242,
37 tnBreak = 243, 37 tnBreak = 243,
38 tnIP = 244, 38 tnIP = 244,
39 tnAO = 245, 39 tnAO = 245,
40 tnAYT = 246, 40 tnAYT = 246,
41 tnEC = 247, 41 tnEC = 247,
42 tnEL = 248, 42 tnEL = 248,
43 tnGA = 249, 43 tnGA = 249,
44 tnSB = 250, 44 tnSB = 250,
45 tnWILL = 251, 45 tnWILL = 251,
46 tnWONT = 252, 46 tnWONT = 252,
47 tnDO = 253, 47 tnDO = 253,
48 tnDONT = 254 48 tnDONT = 254
49}; 49};
50 50
51WSADATA wsaData; 51WSADATA wsaData;
52ATOM wsaWC = NULL; 52ATOM wsaWC = NULL;
53HWND wsaW = NULL; 53HWND wsaW = NULL;
54 54
55CHAR remoteHost[256]; 55CHAR remoteHost[256];
56CHAR remoteProt[256]; 56CHAR remoteProt[256];
57sockaddr_in remoteSIN; 57sockaddr_in remoteSIN;
58 58
59 59
60SOCKET telnetSocket; 60SOCKET telnetSocket;
61HANDLE hConsoleInput; 61HANDLE hConsoleInput;
62HANDLE hConsoleOutput; 62HANDLE hConsoleOutput;
63HWND hConsoleWindow; 63HWND hConsoleWindow;
64HANDLE hConsoleThread; 64HANDLE hConsoleThread;
65DWORD consoleThreadID; 65DWORD consoleThreadID;
66HANDLE hDispatchThread; 66HANDLE hDispatchThread;
67DWORD dispatchThreadID; 67DWORD dispatchThreadID;
68BOOL bTelnet,bTermPulled; 68BOOL bTelnet,bTermPulled;
69 69
70 enum_cState { 70 enum_cState {
71 cstateNone = 0, cstateIAC, cstateDO, cstateSB, cstateSBData, 71 cstateNone = 0, cstateIAC, cstateDO, cstateSB, cstateSBData,
72 cstateSBDataIAC, cstateWILL, cstateDONT,cstateWONT, 72 cstateSBDataIAC, cstateWILL, cstateDONT,cstateWONT,
73 }connState = cstateNone; 73 }connState = cstateNone;
74BYTE negOption = 0; 74BYTE negOption = 0;
75 75
76 76
77BOOL SelectSocket() { 77BOOL SelectSocket() {
78 return WSAAsyncSelect(telnetSocket,wsaW,WM_USERSOCKET,FD_READ|FD_OOB|FD_CLOSE)!=SOCKET_ERROR; 78 return WSAAsyncSelect(telnetSocket,wsaW,WM_USERSOCKET,FD_READ|FD_OOB|FD_CLOSE)!=SOCKET_ERROR;
79} 79}
80 80
81BOOL ShowWill(BYTE o) 81BOOL ShowWill(BYTE o)
82{ 82{
83 TRACE1("We're WILLing to %d\n",(WORD)o); 83 TRACE1("We're WILLing to %d\n",(WORD)o);
84static 84static
85BYTE d[3] = {tnIAC,tnWILL,0}; 85BYTE d[3] = {tnIAC,tnWILL,0};
86 d[2] = o; 86 d[2] = o;
87BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d); 87BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d);
88 SelectSocket(); 88 SelectSocket();
89 return rv; 89 return rv;
90} 90}
91BOOL ShowUnwill(BYTE o) 91BOOL ShowUnwill(BYTE o)
92{ 92{
93 TRACE1("We're NOT WILLing to %d\n",(WORD)o); 93 TRACE1("We're NOT WILLing to %d\n",(WORD)o);
94static 94static
95BYTE d[3] = {tnIAC,tnWONT,0}; 95BYTE d[3] = {tnIAC,tnWONT,0};
96 d[2] = o; 96 d[2] = o;
97BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d); 97BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d);
98 SelectSocket(); 98 SelectSocket();
99 return rv; 99 return rv;
100} 100}
101BOOL BegDo(BYTE o) 101BOOL BegDo(BYTE o)
102{ 102{
103 TRACE1("We beg to DO %d\n",(WORD)o); 103 TRACE1("We beg to DO %d\n",(WORD)o);
104static 104static
105BYTE d[3] = {tnIAC,tnDO,0}; 105BYTE d[3] = {tnIAC,tnDO,0};
106 d[2] = o; 106 d[2] = o;
107BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d); 107BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d);
108 SelectSocket(); 108 SelectSocket();
109 return rv; 109 return rv;
110} 110}
111BOOL BegDont(BYTE o) 111BOOL BegDont(BYTE o)
112{ 112{
113 TRACE1("We beg DONT'T %d\n",(WORD)o); 113 TRACE1("We beg DONT'T %d\n",(WORD)o);
114static 114static
115BYTE d[3] = {tnIAC,tnDONT,0}; 115BYTE d[3] = {tnIAC,tnDONT,0};
116 d[2] = o; 116 d[2] = o;
117BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d); 117BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d);
118 SelectSocket(); 118 SelectSocket();
119 return rv; 119 return rv;
120} 120}
121BOOL SubNegotiate(BYTE o,LPBYTE data,UINT size) 121BOOL SubNegotiate(BYTE o,LPBYTE data,UINT size)
122{ 122{
123LPBYTE d = new BYTE[3+size*2+2]; 123LPBYTE d = new BYTE[3+size*2+2];
124int ds = 0; 124int ds = 0;
125 d[ds++]=tnIAC; d[ds++]=tnSB; d[ds++]=o; 125 d[ds++]=tnIAC; d[ds++]=tnSB; d[ds++]=o;
126 for(UINT tmp=0;tmp<size;tmp++) 126 for(UINT tmp=0;tmp<size;tmp++)
127 if(data[tmp]!=tnIAC) 127 if(data[tmp]!=tnIAC)
128 d[ds++]=data[tmp]; 128 d[ds++]=data[tmp];
129 else{ 129 else{
130 d[ds++]=tnIAC; d[ds++]=tnIAC; 130 d[ds++]=tnIAC; d[ds++]=tnIAC;
131 } 131 }
132 d[ds++]=tnIAC;d[ds++]=tnSE; 132 d[ds++]=tnIAC;d[ds++]=tnSE;
133BOOL rv = send(telnetSocket,(char*)d,ds,0)==ds; 133BOOL rv = send(telnetSocket,(char*)d,ds,0)==ds;
134 delete d; 134 delete d;
135 SelectSocket(); 135 SelectSocket();
136 return rv; 136 return rv;
137} 137}
138BOOL SendLiteral(CHAR c) 138BOOL SendLiteral(CHAR c)
139{ 139{
140BYTE d[2] = {tnIAC,0}; 140BYTE d[2] = {tnIAC,0};
141BOOL rv = FALSE; 141BOOL rv = FALSE;
142 if(c==tnIAC){ 142 if(c==tnIAC){
143 d[1]=c; 143 d[1]=c;
144 rv = send(telnetSocket,(char*)d,2,0)==2; 144 rv = send(telnetSocket,(char*)d,2,0)==2;
145 }else 145 }else
146 rv = send(telnetSocket,&c,1,0)==1; 146 rv = send(telnetSocket,&c,1,0)==1;
147 return rv; 147 return rv;
148} 148}
149BOOL SendLiteral(LPCTSTR c,UINT size) 149BOOL SendLiteral(LPCTSTR c,UINT size)
150{ 150{
151 for(UINT tmp=0;tmp<size;tmp++) 151 for(UINT tmp=0;tmp<size;tmp++)
152 SendLiteral(c[tmp]); 152 SendLiteral(c[tmp]);
153 return TRUE; 153 return TRUE;
154} 154}
155BOOL SendLiteral(LPCTSTR c) 155BOOL SendLiteral(LPCTSTR c)
156{ 156{
157 return SendLiteral(c,strlen(c)); 157 return SendLiteral(c,strlen(c));
158} 158}
159BOOL SendCommand(BYTE c) 159BOOL SendCommand(BYTE c)
160{ 160{
161 TRACE1("Issuing %d command\n",(WORD)c); 161 TRACE1("Issuing %d command\n",(WORD)c);
162static 162static
163BYTE d[2] = {tnIAC,0}; 163BYTE d[2] = {tnIAC,0};
164 d[1] = c; 164 d[1] = c;
165BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d); 165BOOL rv = send(telnetSocket,(char*)d,sizeof(d),0)==sizeof(d);
166 SelectSocket(); 166 SelectSocket();
167 return rv; 167 return rv;
168 168
169} 169}
170 170
171BOOL CALLBACK consoleCtrlHandler(DWORD dwCtrlType) 171BOOL CALLBACK consoleCtrlHandler(DWORD dwCtrlType)
172{ 172{
173 switch(dwCtrlType){ 173 switch(dwCtrlType){
174 case CTRL_BREAK_EVENT: 174 case CTRL_BREAK_EVENT:
175 SendCommand(tnIP); 175 SendCommand(tnIP);
176 return TRUE; 176 return TRUE;
177 case CTRL_CLOSE_EVENT: 177 case CTRL_CLOSE_EVENT:
178 case CTRL_LOGOFF_EVENT: 178 case CTRL_LOGOFF_EVENT:
179 case CTRL_SHUTDOWN_EVENT: 179 case CTRL_SHUTDOWN_EVENT:
180 PostMessage(wsaW,WM_QUIT,0,0); 180 PostMessage(wsaW,WM_QUIT,0,0);
181 return TRUE; 181 return TRUE;
182 } 182 }
183 return FALSE; 183 return FALSE;
184} 184}
185 185
186#include "options.cpp" 186#include "options.cpp"
187 187
188BOOL ProcessConsoleInput() 188BOOL ProcessConsoleInput()
189{ 189{
190INPUT_RECORD ir[512]; 190INPUT_RECORD ir[512];
191DWORD got; 191DWORD got;
192 while(GetNumberOfConsoleInputEvents(hConsoleInput,&got) && got){ 192 while(GetNumberOfConsoleInputEvents(hConsoleInput,&got) && got){
193 VERIFY(ReadConsoleInput(hConsoleInput,ir,(sizeof(ir)/sizeof(*ir)),&got)); 193 VERIFY(ReadConsoleInput(hConsoleInput,ir,(sizeof(ir)/sizeof(*ir)),&got));
194 for(DWORD tmp=0;tmp<got;tmp++){ 194 for(DWORD tmp=0;tmp<got;tmp++){
195 if(ir[tmp].EventType==KEY_EVENT && ir[tmp].Event.KeyEvent.bKeyDown){ 195 if(ir[tmp].EventType==KEY_EVENT && ir[tmp].Event.KeyEvent.bKeyDown){
196 if(( 196 if((
197 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='X' || 197 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='X' ||
198 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='Q' 198 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='Q'
199 ) && ir[tmp].Event.KeyEvent.dwControlKeyState&(LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED) 199 ) && ir[tmp].Event.KeyEvent.dwControlKeyState&(LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)
200 ){ 200 ){
201 PostMessage(wsaW,WM_QUIT,0,0); 201 PostMessage(wsaW,WM_QUIT,0,0);
202 return FALSE; 202 return FALSE;
203 }else if( 203 }else if(
204 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='O' 204 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='O'
205 && ir[tmp].Event.KeyEvent.dwControlKeyState&(LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED) 205 && ir[tmp].Event.KeyEvent.dwControlKeyState&(LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)
206 ){ 206 ){
207 SendCommand(tnAO); 207 SendCommand(tnAO);
208 }else if( 208 }else if(
209 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='Y' 209 ir[tmp].Event.KeyEvent.wVirtualKeyCode=='Y'
210 && ir[tmp].Event.KeyEvent.dwControlKeyState&(LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED) 210 && ir[tmp].Event.KeyEvent.dwControlKeyState&(LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED)
211 ){ 211 ){
@@ -361,376 +361,376 @@ void ProcessIACByte(BYTE c)
361 case tnSE: 361 case tnSE:
362 TRACE0("SE\n");break; 362 TRACE0("SE\n");break;
363 case tnNOP: 363 case tnNOP:
364 TRACE0("NOP\n");break; 364 TRACE0("NOP\n");break;
365 case tnDM: 365 case tnDM:
366 TRACE0("DM\n");break; 366 TRACE0("DM\n");break;
367 case tnBreak: 367 case tnBreak:
368 TRACE0("Break\n");break; 368 TRACE0("Break\n");break;
369 case tnIP: 369 case tnIP:
370 TRACE0("IP\n");break; 370 TRACE0("IP\n");break;
371 case tnAO: 371 case tnAO:
372 TRACE0("AO\n");break; 372 TRACE0("AO\n");break;
373 case tnAYT: 373 case tnAYT:
374 TRACE0("AYT\n");break; 374 TRACE0("AYT\n");break;
375 case tnEC: 375 case tnEC:
376 TRACE0("EC\n");break; 376 TRACE0("EC\n");break;
377 case tnEL: 377 case tnEL:
378 TRACE0("EL\n");break; 378 TRACE0("EL\n");break;
379 case tnGA: 379 case tnGA:
380 TRACE0("GA\n");break; 380 TRACE0("GA\n");break;
381 case tnSB: 381 case tnSB:
382 connState = cstateSB; 382 connState = cstateSB;
383 break; 383 break;
384 case tnWILL: 384 case tnWILL:
385 connState = cstateWILL; 385 connState = cstateWILL;
386 break; 386 break;
387 case tnWONT: 387 case tnWONT:
388 connState = cstateWONT; 388 connState = cstateWONT;
389 break; 389 break;
390 case tnDO: 390 case tnDO:
391 connState = cstateDO; 391 connState = cstateDO;
392 break; 392 break;
393 case tnDONT: 393 case tnDONT:
394 connState = cstateDONT; 394 connState = cstateDONT;
395 break; 395 break;
396 default: 396 default:
397 TRACE1("Unknown OpCode = %d\n",(WORD)c); 397 TRACE1("Unknown OpCode = %d\n",(WORD)c);
398 break; 398 break;
399 } 399 }
400} 400}
401 401
402void ProcessNetByte(BYTE c) 402void ProcessNetByte(BYTE c)
403{ 403{
404 //TRACE1("<%d>",connState); 404 //TRACE1("<%d>",connState);
405 switch(connState){ 405 switch(connState){
406 case cstateWONT: 406 case cstateWONT:
407 ProcessWONT(c); 407 ProcessWONT(c);
408 break; 408 break;
409 case cstateDO: 409 case cstateDO:
410 ProcessDO(c); 410 ProcessDO(c);
411 break; 411 break;
412 case cstateWILL: 412 case cstateWILL:
413 ProcessWILL(c); 413 ProcessWILL(c);
414 break; 414 break;
415 case cstateDONT: 415 case cstateDONT:
416 ProcessDONT(c); 416 ProcessDONT(c);
417 break; 417 break;
418 case cstateSB: 418 case cstateSB:
419 negOption = c; 419 negOption = c;
420 connState = cstateSBData; 420 connState = cstateSBData;
421 break; 421 break;
422 case cstateSBData: 422 case cstateSBData:
423 case cstateSBDataIAC: 423 case cstateSBDataIAC:
424 ProcessSBData(c); 424 ProcessSBData(c);
425 break; 425 break;
426 case cstateIAC: 426 case cstateIAC:
427 ProcessIACByte(c); 427 ProcessIACByte(c);
428 break; 428 break;
429 case cstateNone: 429 case cstateNone:
430 default: 430 default:
431 ASSERT(connState==cstateNone); 431 ASSERT(connState==cstateNone);
432 if(c==tnIAC) 432 if(c==tnIAC)
433 connState=cstateIAC; 433 connState=cstateIAC;
434 else 434 else
435 TerminalOut(c); 435 TerminalOut(c);
436 break; 436 break;
437 } 437 }
438} 438}
439 439
440LRESULT WSMessage(WPARAM wP,LPARAM lP) 440LRESULT WSMessage(WPARAM wP,LPARAM lP)
441{ 441{
442 if(WSAGETSELECTERROR(lP)){ 442 if(WSAGETSELECTERROR(lP)){
443 TRACE0("SelectError\n"); 443 TRACE0("SelectError\n");
444 PostMessage(wsaW,WM_QUIT,0,0); 444 PostMessage(wsaW,WM_QUIT,0,0);
445 return 0; 445 return 0;
446 } 446 }
447 if(WSAGETSELECTEVENT(lP)&FD_READ){ 447 if(WSAGETSELECTEVENT(lP)&FD_READ){
448 //?? TRACE0("FD_READ\n"); 448 //?? TRACE0("FD_READ\n");
449 BYTE input[80*12]; 449 BYTE input[80*12];
450 int got; 450 int got;
451 TerminalPreO(); 451 TerminalPreO();
452 //?? TRACE0("rv\n"); 452 //?? TRACE0("rv\n");
453 got=recv(telnetSocket,(CHAR*)input,sizeof(input),0); 453 got=recv(telnetSocket,(CHAR*)input,sizeof(input),0);
454 //?? TRACE1("/rv %d\n",got); 454 //?? TRACE1("/rv %d\n",got);
455 for(int tmp=0;tmp<got;tmp++) 455 for(int tmp=0;tmp<got;tmp++)
456 ProcessNetByte(input[tmp]); 456 ProcessNetByte(input[tmp]);
457 TerminalPostO(); 457 TerminalPostO();
458 //?? TRACE0("/FD_READ\n"); 458 //?? TRACE0("/FD_READ\n");
459 return 0; 459 return 0;
460 } 460 }
461 if(WSAGETSELECTEVENT(lP)&FD_OOB){ 461 if(WSAGETSELECTEVENT(lP)&FD_OOB){
462 TRACE0("OOB\n"); 462 TRACE0("OOB\n");
463 } 463 }
464 if(WSAGETSELECTEVENT(lP)&FD_CLOSE){ 464 if(WSAGETSELECTEVENT(lP)&FD_CLOSE){
465 TRACE0("CLOSE\n"); 465 TRACE0("CLOSE\n");
466 PostMessage(wsaW,WM_QUIT,0,0); 466 PostMessage(wsaW,WM_QUIT,0,0);
467 return 0; 467 return 0;
468 } 468 }
469 VERIFY(SelectSocket()); 469 VERIFY(SelectSocket());
470 return 0; 470 return 0;
471} 471}
472 472
473LRESULT CALLBACK WSWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) 473LRESULT CALLBACK WSWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
474{ 474{
475 switch(uMsg){ 475 switch(uMsg){
476 case WM_USERSOCKET: 476 case WM_USERSOCKET:
477 return WSMessage(wParam,lParam); 477 return WSMessage(wParam,lParam);
478 case WM_USERKEY: 478 case WM_USERKEY:
479 return ProcessConsoleInput(); 479 return ProcessConsoleInput();
480 default: 480 default:
481 TRACE0("DEFWINDOWPROC\n"); 481 TRACE0("DEFWINDOWPROC\n");
482 return ::DefWindowProc(hWnd,uMsg,wParam,lParam); 482 return ::DefWindowProc(hWnd,uMsg,wParam,lParam);
483 } 483 }
484 return 0; 484 return 0;
485} 485}
486 486
487 487
488BOOL InitializeWinsock() 488BOOL InitializeWinsock()
489{ 489{
490 if(WSAStartup(0x101,&wsaData)){ 490 if(WSAStartup(0x101,&wsaData)){
491 printf("Failed to initialize winsock services\n"); 491 printf("Failed to initialize winsock services\n");
492 return FALSE; 492 return FALSE;
493 } 493 }
494WNDCLASS wc; 494WNDCLASS wc;
495 memset(&wc,0,sizeof(wc)); 495 memset(&wc,0,sizeof(wc));
496 wc.lpfnWndProc=WSWndProc; wc.hInstance=::GetModuleHandle(NULL); 496 wc.lpfnWndProc=WSWndProc; wc.hInstance=::GetModuleHandle(NULL);
497 wc.lpszClassName = "_WSTFWC_"; 497 wc.lpszClassName = "_WSTFWC_";
498 wsaWC = RegisterClass(&wc); 498 wsaWC = RegisterClass(&wc);
499 if(!wsaWC){ 499 if(!wsaWC){
500 printf("Failed to initialize winsock services - 1\n"); 500 printf("Failed to initialize winsock services - 1\n");
501 return FALSE; 501 return FALSE;
502 } 502 }
503 wsaW = ::CreateWindow("_WSTFWC_","KIN Sole Mio",0,0,0,0,0,NULL,NULL,::GetModuleHandle(NULL),NULL); 503 wsaW = ::CreateWindow("_WSTFWC_","KIN Sole Mio",0,0,0,0,0,NULL,NULL,::GetModuleHandle(NULL),NULL);
504 if(!wsaW){ 504 if(!wsaW){
505 printf("Failed to initialize winsock services\n"); 505 printf("Failed to initialize winsock services\n");
506 return FALSE; 506 return FALSE;
507 } 507 }
508 return TRUE; 508 return TRUE;
509} 509}
510void DeinitializeWinsock() 510void DeinitializeWinsock()
511{ 511{
512 if(wsaW) 512 if(wsaW)
513 ::DestroyWindow(wsaW); 513 ::DestroyWindow(wsaW);
514 wsaW=NULL; 514 wsaW=NULL;
515 if(wsaWC) 515 if(wsaWC)
516 ::UnregisterClass("_WSTFWC_",::GetModuleHandle(NULL)); 516 ::UnregisterClass("_WSTFWC_",::GetModuleHandle(NULL));
517 wsaWC=NULL; 517 wsaWC=NULL;
518 WSACleanup(); 518 WSACleanup();
519} 519}
520 520
521HWND GetThisConsoleWnd() 521HWND GetThisConsoleWnd()
522{ 522{
523DWORD pid = GetCurrentProcessId(); 523DWORD pid = GetCurrentProcessId();
524CHAR title[512]; 524CHAR title[512];
525CHAR* t = title; 525CHAR* t = title;
526 if(!GetConsoleTitle(title,sizeof(title))) 526 if(!GetConsoleTitle(title,sizeof(title)))
527 t = NULL; 527 t = NULL;
528HWND hrv = FindWindowEx(NULL,NULL,"tty",t); 528HWND hrv = FindWindowEx(NULL,NULL,"tty",t);
529HWND nopro = NULL; 529HWND nopro = NULL;
530UINT nopros=0; 530UINT nopros=0;
531 do{ 531 do{
532 DWORD wpid; 532 DWORD wpid;
533 if(!GetWindowThreadProcessId(hrv,&wpid)) 533 if(!GetWindowThreadProcessId(hrv,&wpid))
534 continue; 534 continue;
535 if(wpid==pid) 535 if(wpid==pid)
536 return hrv; 536 return hrv;
537 nopro=hrv; 537 nopro=hrv;
538 nopros++; 538 nopros++;
539 hrv = FindWindowEx(NULL,hrv,"tty",t); 539 hrv = FindWindowEx(NULL,hrv,"tty",t);
540 }while(hrv); 540 }while(hrv);
541 if(nopros==1){ 541 if(nopros==1){
542 ASSERT(nopro); 542 ASSERT(nopro);
543 return nopro; 543 return nopro;
544 } 544 }
545 return NULL; 545 return NULL;
546} 546}
547 547
548main(int argc,char*argv[]) 548main(int argc,char*argv[])
549{ 549{
550 if(argc<2){ 550 if(argc<2){
551usagebye: 551usagebye:
552 printf( 552 printf(
553 DAMN_KIN_NAME " " DAMN_KIN_VERSION ", Copyright (c) 1998, 2002 Klever Group (http://www.klever.net/)\n\n" 553 DAMN_KIN_NAME " " DAMN_KIN_VERSION ", Copyright (c) 1998-2004 Klever Group (http://www.klever.net/)\n\n"
554 "Usage:\t" DAMN_KIN_NAME " [<options> ]<host-name/ip-address>[ <port>]\n\n" 554 "Usage:\t" DAMN_KIN_NAME " [<options> ]<host-name/ip-address>[ <port>]\n\n"
555 "Options are:\n" 555 "Options are:\n"
556 "-r## or -##\tSet number of rows in console screenbuffer\n" 556 "-r## or -##\tSet number of rows in console screenbuffer\n"
557 "-c##\t\tSet number of columns in console screenbuffer\n" 557 "-c##\t\tSet number of columns in console screenbuffer\n"
558 "\tnote: changing console screenbuffer size may not work properly\n" 558 "\tnote: changing console screenbuffer size may not work properly\n"
559 "\twhen in full-screen mode\n" 559 "\twhen in full-screen mode\n"
560 "-l<user>\tPass username to remote server in environment\n" 560 "-l<user>\tPass username to remote server in environment\n"
561 "-e<var>=<val>\tPass environment variable to remote server\n" 561 "-e<var>=<val>\tPass environment variable to remote server\n"
562 "-v<var>=<val>\tPass user environment variable to remote server\n" 562 "-v<var>=<val>\tPass user environment variable to remote server\n"
563 "-t<termtype>\tChange preferred terminal type\n" 563 "-t<termtype>\tChange preferred terminal type\n"
564 "\tnote: there are only two different terminal emulations in this\n" 564 "\tnote: there are only two different terminal emulations in this\n"
565 "\tbeta release - one for dumb terminal and one for vt terminal\n" 565 "\trelease - one for dumb terminal and one for vt terminal\n"
566 ); 566 );
567 CleanEnvars(); 567 CleanEnvars();
568 return 1; 568 return 1;
569 } 569 }
570 if(!InitializeWinsock()){ 570 if(!InitializeWinsock()){
571 DeinitializeWinsock(); 571 DeinitializeWinsock();
572 return 2; 572 return 2;
573 } 573 }
574CONSOLE_SCREEN_BUFFER_INFO csbi; 574CONSOLE_SCREEN_BUFFER_INFO csbi;
575int ac = 0; 575int ac = 0;
576CHAR *ho = NULL, *po = NULL; 576CHAR *ho = NULL, *po = NULL;
577HANDLE hConsole = CreateFile("CONOUT$",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, 577HANDLE hConsole = CreateFile("CONOUT$",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,
578 NULL,OPEN_EXISTING,0,NULL); 578 NULL,OPEN_EXISTING,0,NULL);
579 ASSERT(hConsole); 579 ASSERT(hConsole);
580 // *** GetStdHandle(STD_OUTPUT_HANDLE);// *?*?* Do something about redirections and not only here. 580 // *** GetStdHandle(STD_OUTPUT_HANDLE);// *?*?* Do something about redirections and not only here.
581 VERIFY(GetConsoleScreenBufferInfo(hConsole,&csbi)); 581 VERIFY(GetConsoleScreenBufferInfo(hConsole,&csbi));
582BOOL bSized=FALSE; 582BOOL bSized=FALSE;
583 bTermPulled=FALSE; 583 bTermPulled=FALSE;
584 for(int tmp=1;tmp<argc;tmp++){ 584 for(int tmp=1;tmp<argc;tmp++){
585 char* v = argv[tmp]; 585 char* v = argv[tmp];
586 ASSERT(v && *v); 586 ASSERT(v && *v);
587 if((*v)=='/' || (*v)=='-'){ 587 if((*v)=='/' || (*v)=='-'){
588 int lines = atoi(&v[1]); 588 int lines = atoi(&v[1]);
589 if(lines){ 589 if(lines){
590 if(lines<csbi.dwSize.Y){ 590 if(lines<csbi.dwSize.Y){
591 SMALL_RECT wi = {0,0,csbi.dwSize.X-1,lines-1}; 591 SMALL_RECT wi = {0,0,csbi.dwSize.X-1,lines-1};
592 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi)); 592 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi));
593 } 593 }
594 COORD ns = {csbi.dwSize.X,lines}; 594 COORD ns = {csbi.dwSize.X,lines};
595 if(SetConsoleScreenBufferSize(hConsole,ns)) 595 if(SetConsoleScreenBufferSize(hConsole,ns))
596 bSized=TRUE; 596 bSized=TRUE;
597 }else if(v[1]=='r'){ 597 }else if(v[1]=='r'){
598 int lines = atoi(&v[2]); 598 int lines = atoi(&v[2]);
599 if(lines){ 599 if(lines){
600 if(lines<csbi.dwSize.Y){ 600 if(lines<csbi.dwSize.Y){
601 SMALL_RECT wi = {0,0,csbi.dwSize.X-1,lines-1}; 601 SMALL_RECT wi = {0,0,csbi.dwSize.X-1,lines-1};
602 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi)); 602 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi));
603 } 603 }
604 COORD ns = {csbi.dwSize.X,lines}; 604 COORD ns = {csbi.dwSize.X,lines};
605 if(SetConsoleScreenBufferSize(hConsole,ns)) 605 if(SetConsoleScreenBufferSize(hConsole,ns))
606 bSized=TRUE; 606 bSized=TRUE;
607 }else 607 }else
608 goto usagebye; 608 goto usagebye;
609 }else if(v[1]=='c'){ 609 }else if(v[1]=='c'){
610 int rows = atoi(&v[2]); 610 int rows = atoi(&v[2]);
611 if(rows){ 611 if(rows){
612 if(rows<csbi.dwSize.X){ 612 if(rows<csbi.dwSize.X){
613 SMALL_RECT wi = {0,0,rows-1,csbi.dwSize.Y-1}; 613 SMALL_RECT wi = {0,0,rows-1,csbi.dwSize.Y-1};
614 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi)); 614 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi));
615 } 615 }
616 COORD ns = {rows,csbi.dwSize.Y}; 616 COORD ns = {rows,csbi.dwSize.Y};
617 if(SetConsoleScreenBufferSize(hConsole,ns)) 617 if(SetConsoleScreenBufferSize(hConsole,ns))
618 bSized=TRUE; 618 bSized=TRUE;
619 }else 619 }else
620 goto usagebye; 620 goto usagebye;
621 }else if(v[1]=='l'){ 621 }else if(v[1]=='l'){
622 CHAR* vv = &v[2]; 622 CHAR* vv = &v[2];
623 VERIFY(AddEnvar(nesbVar,"USER",vv)); 623 VERIFY(AddEnvar(nesbVar,"USER",vv));
624 }else if(v[1]=='e'){ // -e<name>=<value>VAR 624 }else if(v[1]=='e'){ // -e<name>=<value>VAR
625 CHAR* n = &v[2]; 625 CHAR* n = &v[2];
626 CHAR* vv = strchr(&v[2],'='); 626 CHAR* vv = strchr(&v[2],'=');
627 if(!vv) 627 if(!vv)
628 goto usagebye; 628 goto usagebye;
629 *(vv++)=0; 629 *(vv++)=0;
630 VERIFY(AddEnvar(nesbVar,n,vv)); 630 VERIFY(AddEnvar(nesbVar,n,vv));
631 }else if(v[1]=='v'){ // -v<name>=<value>USERVAR 631 }else if(v[1]=='v'){ // -v<name>=<value>USERVAR
632 CHAR* n = &v[2]; 632 CHAR* n = &v[2];
633 CHAR* vv = strchr(n,'='); 633 CHAR* vv = strchr(n,'=');
634 if(!vv) 634 if(!vv)
635 goto usagebye; 635 goto usagebye;
636 *(vv++)=0; 636 *(vv++)=0;
637 VERIFY(AddEnvar(nesbUserVar,n,vv)); 637 VERIFY(AddEnvar(nesbUserVar,n,vv));
638 }else if(v[1]=='t'){// -t<ttype> -t<tname>=<ttype> 638 }else if(v[1]=='t'){// -t<ttype> -t<tname>=<ttype>
639 CHAR* n = &v[2]; 639 CHAR* n = &v[2];
640 CHAR* nn = strchr(n,'='); 640 CHAR* nn = strchr(n,'=');
641 if(nn){ 641 if(nn){
642 *(nn++)=0; 642 *(nn++)=0;
643 if(!*nn) 643 if(!*nn)
644 nn=NULL; 644 nn=NULL;
645 } 645 }
646 if(!TerminalPullType(nn?nn:n,nn?n:NULL)){ 646 if(!TerminalPullType(nn?nn:n,nn?n:NULL)){
647 printf("Available terminal types are:"); 647 printf("Available terminal types are:");
648 TerminalPrintTypes(); 648 TerminalPrintTypes();
649 printf("\n"); 649 printf("\n");
650 goto usagebye; 650 goto usagebye;
651 } 651 }
652 bTermPulled=TRUE; 652 bTermPulled=TRUE;
653 }else if(v[1]=='#'){ 653 }else if(v[1]=='#'){
654 int cp = atoi(&v[2]); 654 int cp = atoi(&v[2]);
655 #ifdef_DEBUG 655 #ifdef_DEBUG
656 TRACE2("SetCP(%d)=%d\n",cp,SetConsoleCP(cp)); 656 TRACE2("SetCP(%d)=%d\n",cp,SetConsoleCP(cp));
657 TRACE2("SetOutCP(%d)=%d\n",cp,SetConsoleOutputCP(cp)); 657 TRACE2("SetOutCP(%d)=%d\n",cp,SetConsoleOutputCP(cp));
658#else 658#else
659 SetConsoleCP(cp); 659 SetConsoleCP(cp);
660 SetConsoleOutputCP(cp); 660 SetConsoleOutputCP(cp);
661#endif 661#endif
662 TRACE2("CP,OCP=%d,%d\n",GetConsoleCP(),GetConsoleOutputCP()); 662 TRACE2("CP,OCP=%d,%d\n",GetConsoleCP(),GetConsoleOutputCP());
663 }else 663 }else
664 goto usagebye; 664 goto usagebye;
665 }else{ 665 }else{
666 if(ac==0){ 666 if(ac==0){
667 ho = v; 667 ho = v;
668 ac++; 668 ac++;
669 }else if(ac==1){ 669 }else if(ac==1){
670 po = v; 670 po = v;
671 ac++; 671 ac++;
672 }else 672 }else
673 goto usagebye; 673 goto usagebye;
674 } 674 }
675 } 675 }
676 if(!ho) 676 if(!ho)
677 goto usagebye; 677 goto usagebye;
678servent* se = getservbyname("telnet","tcp"); 678servent* se = getservbyname("telnet","tcp");
679UINT port = po?atol(po):(se?ntohs(se->s_port):23); 679UINT port = po?atol(po):(se?ntohs(se->s_port):23);
680 if(port==23 || (se && port==ntohs(se->s_port))) 680 if(port==23 || (se && port==ntohs(se->s_port)))
681 bTelnet = TRUE; 681 bTelnet = TRUE;
682 if(po && !port){ 682 if(po && !port){
683 se = getservbyname(po,"tcp"); 683 se = getservbyname(po,"tcp");
684 if(!se){ 684 if(!se){
685 printf("Failed to resolve tcp-service port name\n"); 685 printf("Failed to resolve tcp-service port name\n");
686 DeinitializeWinsock(); 686 DeinitializeWinsock();
687 return 2; 687 return 2;
688 } 688 }
689 port = ntohs(se->s_port); 689 port = ntohs(se->s_port);
690 if(!stricmp(po,"telnet")) 690 if(!stricmp(po,"telnet"))
691 bTelnet = TRUE; 691 bTelnet = TRUE;
692 else 692 else
693 bTelnet = FALSE; 693 bTelnet = FALSE;
694 }else{ 694 }else{
695 se = getservbyport(htons(port),"tcp"); 695 se = getservbyport(htons(port),"tcp");
696 if(se){ 696 if(se){
697 po = se->s_name; 697 po = se->s_name;
698 if(!stricmp(po,"telnet")) 698 if(!stricmp(po,"telnet"))
699 bTelnet=TRUE; 699 bTelnet=TRUE;
700 }else{ 700 }else{
701 VERIFY(_itoa(port,remoteProt,10)); 701 VERIFY(_itoa(port,remoteProt,10));
702 po = NULL; 702 po = NULL;
703 bTelnet=FALSE; 703 bTelnet=FALSE;
704 } 704 }
705 } 705 }
706 if(po) 706 if(po)
707 strcpy(remoteProt,po); 707 strcpy(remoteProt,po);
708HICON hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_IKON)); 708HICON hIcon = LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(IDI_IKON));
709LONG oldBIcon = NULL, oldSIcon = NULL; 709LONG oldBIcon = NULL, oldSIcon = NULL;
710 hConsoleWindow = GetThisConsoleWnd(); 710 hConsoleWindow = GetThisConsoleWnd();
711 if(hConsoleWindow){ 711 if(hConsoleWindow){
712 oldBIcon = SendMessage(hConsoleWindow,WM_SETICON,ICON_BIG,(LPARAM)hIcon); 712 oldBIcon = SendMessage(hConsoleWindow,WM_SETICON,ICON_BIG,(LPARAM)hIcon);
713 oldSIcon = SendMessage(hConsoleWindow,WM_SETICON,ICON_SMALL,(LPARAM)hIcon); 713 oldSIcon = SendMessage(hConsoleWindow,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
714 } 714 }
715 Telnet(ho,port); 715 Telnet(ho,port);
716 CleanEnvars(); 716 CleanEnvars();
717 if(hConsoleWindow){ 717 if(hConsoleWindow){
718 SendMessage(hConsoleWindow,WM_SETICON,ICON_BIG,(LPARAM)oldBIcon); 718 SendMessage(hConsoleWindow,WM_SETICON,ICON_BIG,(LPARAM)oldBIcon);
719 SendMessage(hConsoleWindow,WM_SETICON,ICON_SMALL,(LPARAM)oldSIcon); 719 SendMessage(hConsoleWindow,WM_SETICON,ICON_SMALL,(LPARAM)oldSIcon);
720 } 720 }
721 Sleep(150); 721 Sleep(150);
722 if(bSized){ 722 if(bSized){
723 CONSOLE_SCREEN_BUFFER_INFO CSBI; 723 CONSOLE_SCREEN_BUFFER_INFO CSBI;
724 VERIFY(GetConsoleScreenBufferInfo(hConsole,&CSBI)); 724 VERIFY(GetConsoleScreenBufferInfo(hConsole,&CSBI));
725 if(CSBI.dwSize.Y>csbi.dwSize.Y || CSBI.dwSize.X>csbi.dwSize.X){ 725 if(CSBI.dwSize.Y>csbi.dwSize.Y || CSBI.dwSize.X>csbi.dwSize.X){
726 SMALL_RECT wi = {0,0,csbi.dwSize.X-1,csbi.dwSize.Y-1}; 726 SMALL_RECT wi = {0,0,csbi.dwSize.X-1,csbi.dwSize.Y-1};
727 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi)); 727 VERIFY(SetConsoleWindowInfo(hConsole,TRUE,&wi));
728 } 728 }
729 COORD ns = {csbi.dwSize.X,csbi.dwSize.Y}; 729 COORD ns = {csbi.dwSize.X,csbi.dwSize.Y};
730 VERIFY(SetConsoleScreenBufferSize(hConsole,ns)); 730 VERIFY(SetConsoleScreenBufferSize(hConsole,ns));
731 } 731 }
732 Sleep(100); 732 Sleep(100);
733 DeinitializeWinsock(); 733 DeinitializeWinsock();
734 Sleep(100); 734 Sleep(100);
735 return 0; 735 return 0;
736} 736}
diff --git a/kinsole.mak b/kinsole.mak
index b25a32d..9b7eeac 100644
--- a/kinsole.mak
+++ b/kinsole.mak
@@ -1,612 +1,648 @@
1# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20 1# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
2# ** DO NOT EDIT ** 2# ** DO NOT EDIT **
3 3
4# TARGTYPE "Win32 (x86) Application" 0x0101 4# TARGTYPE "Win32 (x86) Application" 0x0101
5# TARGTYPE "Win32 (x86) Console Application" 0x0103 5# TARGTYPE "Win32 (x86) Console Application" 0x0103
6 6
7!IF "$(CFG)" == "" 7!IF "$(CFG)" == ""
8CFG=Install - Win32 Debug 8CFG=Install - Win32 Debug
9!MESSAGE No configuration specified. Defaulting to Install - Win32 Debug. 9!MESSAGE No configuration specified. Defaulting to Install - Win32 Debug.
10!ENDIF 10!ENDIF
11 11
12!IF "$(CFG)" != "KINSole - Win32 Release" && "$(CFG)" !=\ 12!IF "$(CFG)" != "KINSole - Win32 Release" && "$(CFG)" !=\
13 "KINSole - Win32 Debug" && "$(CFG)" != "Install - Win32 Release" && "$(CFG)" !=\ 13 "KINSole - Win32 Debug" && "$(CFG)" != "Install - Win32 Release" && "$(CFG)" !=\
14 "Install - Win32 Debug" 14 "Install - Win32 Debug"
15!MESSAGE Invalid configuration "$(CFG)" specified. 15!MESSAGE Invalid configuration "$(CFG)" specified.
16!MESSAGE You can specify a configuration when running NMAKE on this makefile 16!MESSAGE You can specify a configuration when running NMAKE on this makefile
17!MESSAGE by defining the macro CFG on the command line. For example: 17!MESSAGE by defining the macro CFG on the command line. For example:
18!MESSAGE 18!MESSAGE
19!MESSAGE NMAKE /f "kinsole.mak" CFG="Install - Win32 Debug" 19!MESSAGE NMAKE /f "kinsole.mak" CFG="Install - Win32 Debug"
20!MESSAGE 20!MESSAGE
21!MESSAGE Possible choices for configuration are: 21!MESSAGE Possible choices for configuration are:
22!MESSAGE 22!MESSAGE
23!MESSAGE "KINSole - Win32 Release" (based on "Win32 (x86) Console Application") 23!MESSAGE "KINSole - Win32 Release" (based on "Win32 (x86) Console Application")
24!MESSAGE "KINSole - Win32 Debug" (based on "Win32 (x86) Console Application") 24!MESSAGE "KINSole - Win32 Debug" (based on "Win32 (x86) Console Application")
25!MESSAGE "Install - Win32 Release" (based on "Win32 (x86) Application") 25!MESSAGE "Install - Win32 Release" (based on "Win32 (x86) Application")
26!MESSAGE "Install - Win32 Debug" (based on "Win32 (x86) Application") 26!MESSAGE "Install - Win32 Debug" (based on "Win32 (x86) Application")
27!MESSAGE 27!MESSAGE
28!ERROR An invalid configuration is specified. 28!ERROR An invalid configuration is specified.
29!ENDIF 29!ENDIF
30 30
31!IF "$(OS)" == "Windows_NT" 31!IF "$(OS)" == "Windows_NT"
32NULL= 32NULL=
33!ELSE 33!ELSE
34NULL=nul 34NULL=nul
35!ENDIF 35!ENDIF
36################################################################################ 36################################################################################
37# Begin Project 37# Begin Project
38# PROP Target_Last_Scanned "Install - Win32 Debug" 38# PROP Target_Last_Scanned "Install - Win32 Debug"
39 39
40!IF "$(CFG)" == "KINSole - Win32 Release" 40!IF "$(CFG)" == "KINSole - Win32 Release"
41 41
42# PROP BASE Use_MFC 0 42# PROP BASE Use_MFC 0
43# PROP BASE Use_Debug_Libraries 0 43# PROP BASE Use_Debug_Libraries 0
44# PROP BASE Output_Dir "Release" 44# PROP BASE Output_Dir "Release"
45# PROP BASE Intermediate_Dir "Release" 45# PROP BASE Intermediate_Dir "Release"
46# PROP BASE Target_Dir "" 46# PROP BASE Target_Dir ""
47# PROP Use_MFC 0 47# PROP Use_MFC 0
48# PROP Use_Debug_Libraries 0 48# PROP Use_Debug_Libraries 0
49# PROP Output_Dir "Release" 49# PROP Output_Dir "Release"
50# PROP Intermediate_Dir "Release" 50# PROP Intermediate_Dir "Release"
51# PROP Target_Dir "" 51# PROP Target_Dir ""
52OUTDIR=.\Release 52OUTDIR=.\Release
53INTDIR=.\Release 53INTDIR=.\Release
54# Begin Custom Macros 54# Begin Custom Macros
55OutDir=.\Release 55OutDir=.\Release
56TargetName=kinsole 56TargetName=kinsole
57# End Custom Macros 57# End Custom Macros
58 58
59ALL : "$(OUTDIR)\kinsole.exe" "$(OUTDIR)\kinsole.ex_" "$(OUTDIR)\kinsole.hlp"\ 59ALL : "$(OUTDIR)\kinsole.exe" "$(OUTDIR)\kinsole.ex_" "$(OUTDIR)\kinsole.hlp"\
60 "$(OUTDIR)\kinsole.cnt" "$(OUTDIR)\kinsole.hl_" "$(OUTDIR)\kinsole.cn_" 60 "$(OUTDIR)\kinsole.cnt" "$(OUTDIR)\kinsole.hl_" "$(OUTDIR)\kinsole.cn_"
61 61
62CLEAN : 62CLEAN :
63 -@erase "$(INTDIR)\kinsole.cn_" 63 -@erase "$(INTDIR)\kinsole.cn_"
64 -@erase "$(INTDIR)\kinsole.cnt" 64 -@erase "$(INTDIR)\kinsole.cnt"
65 -@erase "$(INTDIR)\kinsole.hl_" 65 -@erase "$(INTDIR)\kinsole.hl_"
66 -@erase "$(INTDIR)\kinsole.hlp" 66 -@erase "$(INTDIR)\kinsole.hlp"
67 -@erase "$(INTDIR)\KINSole.obj" 67 -@erase "$(INTDIR)\KINSole.obj"
68 -@erase "$(INTDIR)\KINSole.res" 68 -@erase "$(INTDIR)\kinsole.res"
69 -@erase "$(OUTDIR)\kinsole.ex_" 69 -@erase "$(OUTDIR)\kinsole.ex_"
70 -@erase "$(OUTDIR)\kinsole.exe" 70 -@erase "$(OUTDIR)\kinsole.exe"
71 -@erase "$(OUTDIR)\kinsole.map" 71 -@erase "$(OUTDIR)\kinsole.map"
72 72
73"$(OUTDIR)" : 73"$(OUTDIR)" :
74 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 74 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
75 75
76CPP=cl.exe 76CPP=cl.exe
77# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c 77# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
78# ADD CPP /nologo /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /c 78# ADD CPP /nologo /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /c
79# SUBTRACT CPP /YX 79# SUBTRACT CPP /YX
80CPP_PROJ=/nologo /ML /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\ 80CPP_PROJ=/nologo /ML /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
81 /Fo"$(INTDIR)/" /c 81 /Fo"$(INTDIR)/" /c
82CPP_OBJS=.\Release/ 82CPP_OBJS=.\Release/
83CPP_SBRS=.\. 83CPP_SBRS=.\.
84 84
85.c{$(CPP_OBJS)}.obj: 85.c{$(CPP_OBJS)}.obj:
86 $(CPP) $(CPP_PROJ) $< 86 $(CPP) $(CPP_PROJ) $<
87 87
88.cpp{$(CPP_OBJS)}.obj: 88.cpp{$(CPP_OBJS)}.obj:
89 $(CPP) $(CPP_PROJ) $< 89 $(CPP) $(CPP_PROJ) $<
90 90
91.cxx{$(CPP_OBJS)}.obj: 91.cxx{$(CPP_OBJS)}.obj:
92 $(CPP) $(CPP_PROJ) $< 92 $(CPP) $(CPP_PROJ) $<
93 93
94.c{$(CPP_SBRS)}.sbr: 94.c{$(CPP_SBRS)}.sbr:
95 $(CPP) $(CPP_PROJ) $< 95 $(CPP) $(CPP_PROJ) $<
96 96
97.cpp{$(CPP_SBRS)}.sbr: 97.cpp{$(CPP_SBRS)}.sbr:
98 $(CPP) $(CPP_PROJ) $< 98 $(CPP) $(CPP_PROJ) $<
99 99
100.cxx{$(CPP_SBRS)}.sbr: 100.cxx{$(CPP_SBRS)}.sbr:
101 $(CPP) $(CPP_PROJ) $< 101 $(CPP) $(CPP_PROJ) $<
102 102
103RSC=rc.exe 103RSC=rc.exe
104# ADD BASE RSC /l 0x409 /d "NDEBUG" 104# ADD BASE RSC /l 0x409 /d "NDEBUG"
105# ADD RSC /l 0x409 /d "NDEBUG" 105# ADD RSC /l 0x409 /d "NDEBUG"
106RSC_PROJ=/l 0x409 /fo"$(INTDIR)/KINSole.res" /d "NDEBUG" 106RSC_PROJ=/l 0x409 /fo"$(INTDIR)/kinsole.res" /d "NDEBUG"
107BSC32=bscmake.exe 107BSC32=bscmake.exe
108# ADD BASE BSC32 /nologo 108# ADD BASE BSC32 /nologo
109# ADD BSC32 /nologo 109# ADD BSC32 /nologo
110BSC32_FLAGS=/nologo /o"$(OUTDIR)/kinsole.bsc" 110BSC32_FLAGS=/nologo /o"$(OUTDIR)/kinsole.bsc"
111BSC32_SBRS= \ 111BSC32_SBRS= \
112 112
113LINK32=link.exe 113LINK32=link.exe
114# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 114# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
115# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /map /machine:I386 115# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib /nologo /subsystem:console /map /machine:I386
116LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ 116LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
117 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ 117 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
118 odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:no\ 118 odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:no\
119 /pdb:"$(OUTDIR)/kinsole.pdb" /map:"$(INTDIR)/kinsole.map" /machine:I386\ 119 /pdb:"$(OUTDIR)/kinsole.pdb" /map:"$(INTDIR)/kinsole.map" /machine:I386\
120 /out:"$(OUTDIR)/kinsole.exe" 120 /out:"$(OUTDIR)/kinsole.exe"
121LINK32_OBJS= \ 121LINK32_OBJS= \
122 "$(INTDIR)\KINSole.obj" \ 122 "$(INTDIR)\KINSole.obj" \
123 "$(INTDIR)\KINSole.res" 123 "$(INTDIR)\kinsole.res"
124 124
125"$(OUTDIR)\kinsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 125"$(OUTDIR)\kinsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
126 $(LINK32) @<< 126 $(LINK32) @<<
127 $(LINK32_FLAGS) $(LINK32_OBJS) 127 $(LINK32_FLAGS) $(LINK32_OBJS)
128<< 128<<
129 129
130# Begin Custom Build - Performing Custom Build Step 130# Begin Custom Build - Performing Custom Build Step
131OutDir=.\Release 131OutDir=.\Release
132TargetName=kinsole 132TargetName=kinsole
133InputPath=.\Release\kinsole.exe 133InputPath=.\Release\kinsole.exe
134SOURCE=$(InputPath) 134SOURCE=$(InputPath)
135 135
136"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 136"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
137 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_ 137 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_
138 138
139# End Custom Build 139# End Custom Build
140 140
141!ELSEIF "$(CFG)" == "KINSole - Win32 Debug" 141!ELSEIF "$(CFG)" == "KINSole - Win32 Debug"
142 142
143# PROP BASE Use_MFC 0 143# PROP BASE Use_MFC 0
144# PROP BASE Use_Debug_Libraries 1 144# PROP BASE Use_Debug_Libraries 1
145# PROP BASE Output_Dir "Debug" 145# PROP BASE Output_Dir "Debug"
146# PROP BASE Intermediate_Dir "Debug" 146# PROP BASE Intermediate_Dir "Debug"
147# PROP BASE Target_Dir "" 147# PROP BASE Target_Dir ""
148# PROP Use_MFC 2 148# PROP Use_MFC 2
149# PROP Use_Debug_Libraries 1 149# PROP Use_Debug_Libraries 1
150# PROP Output_Dir "Debug" 150# PROP Output_Dir "Debug"
151# PROP Intermediate_Dir "Debug" 151# PROP Intermediate_Dir "Debug"
152# PROP Target_Dir "" 152# PROP Target_Dir ""
153OUTDIR=.\Debug 153OUTDIR=.\Debug
154INTDIR=.\Debug 154INTDIR=.\Debug
155# Begin Custom Macros 155# Begin Custom Macros
156OutDir=.\Debug 156OutDir=.\Debug
157TargetName=kinsole 157TargetName=kinsole
158# End Custom Macros 158# End Custom Macros
159 159
160ALL : "$(OUTDIR)\kinsole.exe" "$(OUTDIR)\kinsole.ex_" "$(OUTDIR)\kinsole.hlp"\ 160ALL : "$(OUTDIR)\kinsole.exe" "$(OUTDIR)\kinsole.ex_" "$(OUTDIR)\kinsole.hlp"\
161 "$(OUTDIR)\kinsole.cnt" "$(OUTDIR)\kinsole.hl_" "$(OUTDIR)\kinsole.cn_" 161 "$(OUTDIR)\kinsole.cnt" "$(OUTDIR)\kinsole.hl_" "$(OUTDIR)\kinsole.cn_"
162 162
163CLEAN : 163CLEAN :
164 -@erase "$(INTDIR)\kinsole.cn_" 164 -@erase "$(INTDIR)\kinsole.cn_"
165 -@erase "$(INTDIR)\kinsole.cnt" 165 -@erase "$(INTDIR)\kinsole.cnt"
166 -@erase "$(INTDIR)\kinsole.hl_" 166 -@erase "$(INTDIR)\kinsole.hl_"
167 -@erase "$(INTDIR)\kinsole.hlp" 167 -@erase "$(INTDIR)\kinsole.hlp"
168 -@erase "$(INTDIR)\KINSole.obj" 168 -@erase "$(INTDIR)\KINSole.obj"
169 -@erase "$(INTDIR)\KINSole.res" 169 -@erase "$(INTDIR)\kinsole.res"
170 -@erase "$(INTDIR)\vc40.idb" 170 -@erase "$(INTDIR)\vc40.idb"
171 -@erase "$(INTDIR)\vc40.pdb" 171 -@erase "$(INTDIR)\vc40.pdb"
172 -@erase "$(OUTDIR)\kinsole.ex_" 172 -@erase "$(OUTDIR)\kinsole.ex_"
173 -@erase "$(OUTDIR)\kinsole.exe" 173 -@erase "$(OUTDIR)\kinsole.exe"
174 -@erase "$(OUTDIR)\kinsole.ilk" 174 -@erase "$(OUTDIR)\kinsole.ilk"
175 -@erase "$(OUTDIR)\kinsole.pdb" 175 -@erase "$(OUTDIR)\kinsole.pdb"
176 176
177"$(OUTDIR)" : 177"$(OUTDIR)" :
178 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 178 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
179 179
180CPP=cl.exe 180CPP=cl.exe
181# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c 181# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
182# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_AFXDLL" /D "_MBCS" /c 182# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_AFXDLL" /D "_MBCS" /c
183# SUBTRACT CPP /YX 183# SUBTRACT CPP /YX
184CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\ 184CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
185 /D "_AFXDLL" /D "_MBCS" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c 185 /D "_AFXDLL" /D "_MBCS" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
186CPP_OBJS=.\Debug/ 186CPP_OBJS=.\Debug/
187CPP_SBRS=.\. 187CPP_SBRS=.\.
188 188
189.c{$(CPP_OBJS)}.obj: 189.c{$(CPP_OBJS)}.obj:
190 $(CPP) $(CPP_PROJ) $< 190 $(CPP) $(CPP_PROJ) $<
191 191
192.cpp{$(CPP_OBJS)}.obj: 192.cpp{$(CPP_OBJS)}.obj:
193 $(CPP) $(CPP_PROJ) $< 193 $(CPP) $(CPP_PROJ) $<
194 194
195.cxx{$(CPP_OBJS)}.obj: 195.cxx{$(CPP_OBJS)}.obj:
196 $(CPP) $(CPP_PROJ) $< 196 $(CPP) $(CPP_PROJ) $<
197 197
198.c{$(CPP_SBRS)}.sbr: 198.c{$(CPP_SBRS)}.sbr:
199 $(CPP) $(CPP_PROJ) $< 199 $(CPP) $(CPP_PROJ) $<
200 200
201.cpp{$(CPP_SBRS)}.sbr: 201.cpp{$(CPP_SBRS)}.sbr:
202 $(CPP) $(CPP_PROJ) $< 202 $(CPP) $(CPP_PROJ) $<
203 203
204.cxx{$(CPP_SBRS)}.sbr: 204.cxx{$(CPP_SBRS)}.sbr:
205 $(CPP) $(CPP_PROJ) $< 205 $(CPP) $(CPP_PROJ) $<
206 206
207RSC=rc.exe 207RSC=rc.exe
208# ADD BASE RSC /l 0x409 /d "_DEBUG" 208# ADD BASE RSC /l 0x409 /d "_DEBUG"
209# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" 209# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
210RSC_PROJ=/l 0x409 /fo"$(INTDIR)/KINSole.res" /d "_DEBUG" /d "_AFXDLL" 210RSC_PROJ=/l 0x409 /fo"$(INTDIR)/kinsole.res" /d "_DEBUG" /d "_AFXDLL"
211BSC32=bscmake.exe 211BSC32=bscmake.exe
212# ADD BASE BSC32 /nologo 212# ADD BASE BSC32 /nologo
213# ADD BSC32 /nologo 213# ADD BSC32 /nologo
214BSC32_FLAGS=/nologo /o"$(OUTDIR)/kinsole.bsc" 214BSC32_FLAGS=/nologo /o"$(OUTDIR)/kinsole.bsc"
215BSC32_SBRS= \ 215BSC32_SBRS= \
216 216
217LINK32=link.exe 217LINK32=link.exe
218# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 218# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
219# ADD LINK32 wsock32.lib /nologo /subsystem:console /debug /machine:I386 219# ADD LINK32 wsock32.lib /nologo /subsystem:console /debug /machine:I386
220LINK32_FLAGS=wsock32.lib /nologo /subsystem:console /incremental:yes\ 220LINK32_FLAGS=wsock32.lib /nologo /subsystem:console /incremental:yes\
221 /pdb:"$(OUTDIR)/kinsole.pdb" /debug /machine:I386 /out:"$(OUTDIR)/kinsole.exe" 221 /pdb:"$(OUTDIR)/kinsole.pdb" /debug /machine:I386 /out:"$(OUTDIR)/kinsole.exe"
222LINK32_OBJS= \ 222LINK32_OBJS= \
223 "$(INTDIR)\KINSole.obj" \ 223 "$(INTDIR)\KINSole.obj" \
224 "$(INTDIR)\KINSole.res" 224 "$(INTDIR)\kinsole.res"
225 225
226"$(OUTDIR)\kinsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 226"$(OUTDIR)\kinsole.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
227 $(LINK32) @<< 227 $(LINK32) @<<
228 $(LINK32_FLAGS) $(LINK32_OBJS) 228 $(LINK32_FLAGS) $(LINK32_OBJS)
229<< 229<<
230 230
231# Begin Custom Build 231# Begin Custom Build
232OutDir=.\Debug 232OutDir=.\Debug
233TargetName=kinsole 233TargetName=kinsole
234InputPath=.\Debug\kinsole.exe 234InputPath=.\Debug\kinsole.exe
235SOURCE=$(InputPath) 235SOURCE=$(InputPath)
236 236
237"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 237"$(OutDir)\$(TargetName).ex_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
238 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_ 238 compress $(OutDir)\$(TargetName).exe $(OutDir)\$(TargetName).ex_
239 239
240# End Custom Build 240# End Custom Build
241 241
242!ELSEIF "$(CFG)" == "Install - Win32 Release" 242!ELSEIF "$(CFG)" == "Install - Win32 Release"
243 243
244# PROP BASE Use_MFC 2 244# PROP BASE Use_MFC 2
245# PROP BASE Use_Debug_Libraries 0 245# PROP BASE Use_Debug_Libraries 0
246# PROP BASE Output_Dir "Install\Release" 246# PROP BASE Output_Dir "Install\Release"
247# PROP BASE Intermediate_Dir "Install\Release" 247# PROP BASE Intermediate_Dir "Install\Release"
248# PROP BASE Target_Dir "Install" 248# PROP BASE Target_Dir "Install"
249# PROP Use_MFC 0 249# PROP Use_MFC 0
250# PROP Use_Debug_Libraries 0 250# PROP Use_Debug_Libraries 0
251# PROP Output_Dir "Install\Release" 251# PROP Output_Dir "Install\Release"
252# PROP Intermediate_Dir "Install\Release" 252# PROP Intermediate_Dir "Install\Release"
253# PROP Target_Dir "Install" 253# PROP Target_Dir "Install"
254OUTDIR=.\Install\Release 254OUTDIR=.\Install\Release
255INTDIR=.\Install\Release 255INTDIR=.\Install\Release
256 256
257ALL : "KINSole - Win32 Release" "$(OUTDIR)\Install.exe" 257ALL : "KINSole - Win32 Release" "$(OUTDIR)\Install.exe"
258 258
259CLEAN : 259CLEAN :
260 -@erase "$(INTDIR)\install.obj" 260 -@erase "$(INTDIR)\install.obj"
261 -@erase "$(INTDIR)\Install.res" 261 -@erase "$(INTDIR)\Install.res"
262 -@erase "$(OUTDIR)\Install.exe" 262 -@erase "$(OUTDIR)\Install.exe"
263 263
264"$(OUTDIR)" : 264"$(OUTDIR)" :
265 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 265 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
266 266
267CPP=cl.exe 267CPP=cl.exe
268# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c 268# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c
269# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /c 269# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /c
270CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\ 270CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D\
271 "_MBCS" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c 271 "_MBCS" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /c
272CPP_OBJS=.\Install\Release/ 272CPP_OBJS=.\Install\Release/
273CPP_SBRS=.\. 273CPP_SBRS=.\.
274 274
275.c{$(CPP_OBJS)}.obj: 275.c{$(CPP_OBJS)}.obj:
276 $(CPP) $(CPP_PROJ) $< 276 $(CPP) $(CPP_PROJ) $<
277 277
278.cpp{$(CPP_OBJS)}.obj: 278.cpp{$(CPP_OBJS)}.obj:
279 $(CPP) $(CPP_PROJ) $< 279 $(CPP) $(CPP_PROJ) $<
280 280
281.cxx{$(CPP_OBJS)}.obj: 281.cxx{$(CPP_OBJS)}.obj:
282 $(CPP) $(CPP_PROJ) $< 282 $(CPP) $(CPP_PROJ) $<
283 283
284.c{$(CPP_SBRS)}.sbr: 284.c{$(CPP_SBRS)}.sbr:
285 $(CPP) $(CPP_PROJ) $< 285 $(CPP) $(CPP_PROJ) $<
286 286
287.cpp{$(CPP_SBRS)}.sbr: 287.cpp{$(CPP_SBRS)}.sbr:
288 $(CPP) $(CPP_PROJ) $< 288 $(CPP) $(CPP_PROJ) $<
289 289
290.cxx{$(CPP_SBRS)}.sbr: 290.cxx{$(CPP_SBRS)}.sbr:
291 $(CPP) $(CPP_PROJ) $< 291 $(CPP) $(CPP_PROJ) $<
292 292
293MTL=mktyplib.exe 293MTL=mktyplib.exe
294# ADD BASE MTL /nologo /D "NDEBUG" /win32 294# ADD BASE MTL /nologo /D "NDEBUG" /win32
295# ADD MTL /nologo /D "NDEBUG" /win32 295# ADD MTL /nologo /D "NDEBUG" /win32
296MTL_PROJ=/nologo /D "NDEBUG" /win32 296MTL_PROJ=/nologo /D "NDEBUG" /win32
297RSC=rc.exe 297RSC=rc.exe
298# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" 298# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
299# ADD RSC /l 0x409 /d "NDEBUG" 299# ADD RSC /l 0x409 /d "NDEBUG"
300RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG" 300RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "NDEBUG"
301BSC32=bscmake.exe 301BSC32=bscmake.exe
302# ADD BASE BSC32 /nologo 302# ADD BASE BSC32 /nologo
303# ADD BSC32 /nologo 303# ADD BSC32 /nologo
304BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" 304BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc"
305BSC32_SBRS= \ 305BSC32_SBRS= \
306 306
307LINK32=link.exe 307LINK32=link.exe
308# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 308# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
309# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386 309# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /machine:I386
310LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ 310LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
311 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ 311 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
312 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\ 312 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:no\
313 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe" 313 /pdb:"$(OUTDIR)/Install.pdb" /machine:I386 /out:"$(OUTDIR)/Install.exe"
314LINK32_OBJS= \ 314LINK32_OBJS= \
315 "$(INTDIR)\install.obj" \ 315 "$(INTDIR)\install.obj" \
316 "$(INTDIR)\Install.res" 316 "$(INTDIR)\Install.res"
317 317
318"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 318"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
319 $(LINK32) @<< 319 $(LINK32) @<<
320 $(LINK32_FLAGS) $(LINK32_OBJS) 320 $(LINK32_FLAGS) $(LINK32_OBJS)
321<< 321<<
322 322
323!ELSEIF "$(CFG)" == "Install - Win32 Debug" 323!ELSEIF "$(CFG)" == "Install - Win32 Debug"
324 324
325# PROP BASE Use_MFC 2 325# PROP BASE Use_MFC 2
326# PROP BASE Use_Debug_Libraries 1 326# PROP BASE Use_Debug_Libraries 1
327# PROP BASE Output_Dir "Install\Debug" 327# PROP BASE Output_Dir "Install\Debug"
328# PROP BASE Intermediate_Dir "Install\Debug" 328# PROP BASE Intermediate_Dir "Install\Debug"
329# PROP BASE Target_Dir "Install" 329# PROP BASE Target_Dir "Install"
330# PROP Use_MFC 0 330# PROP Use_MFC 0
331# PROP Use_Debug_Libraries 1 331# PROP Use_Debug_Libraries 1
332# PROP Output_Dir "Install\Debug" 332# PROP Output_Dir "Install\Debug"
333# PROP Intermediate_Dir "Install\Debug" 333# PROP Intermediate_Dir "Install\Debug"
334# PROP Target_Dir "Install" 334# PROP Target_Dir "Install"
335OUTDIR=.\Install\Debug 335OUTDIR=.\Install\Debug
336INTDIR=.\Install\Debug 336INTDIR=.\Install\Debug
337 337
338ALL : "KINSole - Win32 Debug" "$(OUTDIR)\Install.exe" 338ALL : "KINSole - Win32 Debug" "$(OUTDIR)\Install.exe"
339 339
340CLEAN : 340CLEAN :
341 -@erase "$(INTDIR)\install.obj" 341 -@erase "$(INTDIR)\install.obj"
342 -@erase "$(INTDIR)\Install.res" 342 -@erase "$(INTDIR)\Install.res"
343 -@erase "$(INTDIR)\vc40.idb" 343 -@erase "$(INTDIR)\vc40.idb"
344 -@erase "$(INTDIR)\vc40.pdb" 344 -@erase "$(INTDIR)\vc40.pdb"
345 -@erase "$(OUTDIR)\Install.exe" 345 -@erase "$(OUTDIR)\Install.exe"
346 -@erase "$(OUTDIR)\Install.ilk" 346 -@erase "$(OUTDIR)\Install.ilk"
347 -@erase "$(OUTDIR)\Install.pdb" 347 -@erase "$(OUTDIR)\Install.pdb"
348 348
349"$(OUTDIR)" : 349"$(OUTDIR)" :
350 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" 350 if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
351 351
352CPP=cl.exe 352CPP=cl.exe
353# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c 353# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /YX /c
354# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /c 354# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /c
355CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ 355CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
356 /D "_MBCS" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c 356 /D "_MBCS" /Fp"$(INTDIR)/Install.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
357CPP_OBJS=.\Install\Debug/ 357CPP_OBJS=.\Install\Debug/
358CPP_SBRS=.\. 358CPP_SBRS=.\.
359 359
360.c{$(CPP_OBJS)}.obj: 360.c{$(CPP_OBJS)}.obj:
361 $(CPP) $(CPP_PROJ) $< 361 $(CPP) $(CPP_PROJ) $<
362 362
363.cpp{$(CPP_OBJS)}.obj: 363.cpp{$(CPP_OBJS)}.obj:
364 $(CPP) $(CPP_PROJ) $< 364 $(CPP) $(CPP_PROJ) $<
365 365
366.cxx{$(CPP_OBJS)}.obj: 366.cxx{$(CPP_OBJS)}.obj:
367 $(CPP) $(CPP_PROJ) $< 367 $(CPP) $(CPP_PROJ) $<
368 368
369.c{$(CPP_SBRS)}.sbr: 369.c{$(CPP_SBRS)}.sbr:
370 $(CPP) $(CPP_PROJ) $< 370 $(CPP) $(CPP_PROJ) $<
371 371
372.cpp{$(CPP_SBRS)}.sbr: 372.cpp{$(CPP_SBRS)}.sbr:
373 $(CPP) $(CPP_PROJ) $< 373 $(CPP) $(CPP_PROJ) $<
374 374
375.cxx{$(CPP_SBRS)}.sbr: 375.cxx{$(CPP_SBRS)}.sbr:
376 $(CPP) $(CPP_PROJ) $< 376 $(CPP) $(CPP_PROJ) $<
377 377
378MTL=mktyplib.exe 378MTL=mktyplib.exe
379# ADD BASE MTL /nologo /D "_DEBUG" /win32 379# ADD BASE MTL /nologo /D "_DEBUG" /win32
380# ADD MTL /nologo /D "_DEBUG" /win32 380# ADD MTL /nologo /D "_DEBUG" /win32
381MTL_PROJ=/nologo /D "_DEBUG" /win32 381MTL_PROJ=/nologo /D "_DEBUG" /win32
382RSC=rc.exe 382RSC=rc.exe
383# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" 383# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
384# ADD RSC /l 0x409 /d "_DEBUG" 384# ADD RSC /l 0x409 /d "_DEBUG"
385RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "_DEBUG" 385RSC_PROJ=/l 0x409 /fo"$(INTDIR)/Install.res" /d "_DEBUG"
386BSC32=bscmake.exe 386BSC32=bscmake.exe
387# ADD BASE BSC32 /nologo 387# ADD BASE BSC32 /nologo
388# ADD BSC32 /nologo 388# ADD BSC32 /nologo
389BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc" 389BSC32_FLAGS=/nologo /o"$(OUTDIR)/Install.bsc"
390BSC32_SBRS= \ 390BSC32_SBRS= \
391 391
392LINK32=link.exe 392LINK32=link.exe
393# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 393# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386
394# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /debug /machine:I386 394# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib version.lib /nologo /subsystem:windows /debug /machine:I386
395LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ 395LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
396 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ 396 advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
397 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:yes\ 397 odbccp32.lib version.lib /nologo /subsystem:windows /incremental:yes\
398 /pdb:"$(OUTDIR)/Install.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Install.exe" 398 /pdb:"$(OUTDIR)/Install.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Install.exe"
399LINK32_OBJS= \ 399LINK32_OBJS= \
400 "$(INTDIR)\install.obj" \ 400 "$(INTDIR)\install.obj" \
401 "$(INTDIR)\Install.res" 401 "$(INTDIR)\Install.res"
402 402
403"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) 403"$(OUTDIR)\Install.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
404 $(LINK32) @<< 404 $(LINK32) @<<
405 $(LINK32_FLAGS) $(LINK32_OBJS) 405 $(LINK32_FLAGS) $(LINK32_OBJS)
406<< 406<<
407 407
408!ENDIF 408!ENDIF
409 409
410################################################################################ 410################################################################################
411# Begin Target 411# Begin Target
412 412
413# Name "KINSole - Win32 Release" 413# Name "KINSole - Win32 Release"
414# Name "KINSole - Win32 Debug" 414# Name "KINSole - Win32 Debug"
415 415
416!IF "$(CFG)" == "KINSole - Win32 Release" 416!IF "$(CFG)" == "KINSole - Win32 Release"
417 417
418!ELSEIF "$(CFG)" == "KINSole - Win32 Debug" 418!ELSEIF "$(CFG)" == "KINSole - Win32 Debug"
419 419
420!ENDIF 420!ENDIF
421 421
422################################################################################ 422################################################################################
423# Begin Source File 423# Begin Source File
424 424
425SOURCE=.\KINSole.cpp 425SOURCE=.\KINSole.cpp
426
427!IF "$(CFG)" == "KINSole - Win32 Release"
428
426DEP_CPP_KINSO=\ 429DEP_CPP_KINSO=\
427 ".\NAWS.cpp"\ 430 ".\NAWS.cpp"\
428 ".\NEW-ENVIRON.cpp"\ 431 ".\NEW-ENVIRON.cpp"\
429 ".\options.cpp"\ 432 ".\options.cpp"\
430 ".\status.cpp"\ 433 ".\status.cpp"\
431 ".\terminal.cpp"\ 434 ".\terminal.cpp"\
432 ".\TIMING-MARK.cpp"\ 435 ".\TIMING-MARK.cpp"\
433 ".\TTY.cpp"\ 436 ".\TTY.cpp"\
434 ".\VT100.cpp"\ 437 ".\VT100.cpp"\
435 438
436 439
437"$(INTDIR)\KINSole.obj" : $(SOURCE) $(DEP_CPP_KINSO) "$(INTDIR)" 440"$(INTDIR)\KINSole.obj" : $(SOURCE) $(DEP_CPP_KINSO) "$(INTDIR)"
438 441
439 442
443!ELSEIF "$(CFG)" == "KINSole - Win32 Debug"
444
445DEP_CPP_KINSO=\
446 ".\NAWS.cpp"\
447 ".\NEW-ENVIRON.cpp"\
448 ".\options.cpp"\
449 ".\status.cpp"\
450 ".\terminal.cpp"\
451 ".\TIMING-MARK.cpp"\
452 ".\TTY.cpp"\
453 ".\VT100.cpp"\
454
455
456"$(INTDIR)\KINSole.obj" : $(SOURCE) $(DEP_CPP_KINSO) "$(INTDIR)"
457
458
459!ENDIF
460
440# End Source File 461# End Source File
441################################################################################ 462################################################################################
442# Begin Source File 463# Begin Source File
443 464
444SOURCE=.\kinsole.rc 465SOURCE=.\kinsole.rc
466
467!IF "$(CFG)" == "KINSole - Win32 Release"
468
445DEP_RSC_KINSOL=\ 469DEP_RSC_KINSOL=\
446 ".\res\kinsole.ico"\ 470 ".\res\kinsole.ico"\
447 471
448 472
449"$(INTDIR)\KINSole.res" : $(SOURCE) $(DEP_RSC_KINSOL) "$(INTDIR)" 473"$(INTDIR)\kinsole.res" : $(SOURCE) $(DEP_RSC_KINSOL) "$(INTDIR)"
450 $(RSC) $(RSC_PROJ) $(SOURCE) 474 $(RSC) $(RSC_PROJ) $(SOURCE)
451 475
452 476
477!ELSEIF "$(CFG)" == "KINSole - Win32 Debug"
478
479DEP_RSC_KINSOL=\
480 ".\res\kinsole.ico"\
481
482
483"$(INTDIR)\kinsole.res" : $(SOURCE) $(DEP_RSC_KINSOL) "$(INTDIR)"
484 $(RSC) $(RSC_PROJ) $(SOURCE)
485
486
487!ENDIF
488
453# End Source File 489# End Source File
454################################################################################ 490################################################################################
455# Begin Source File 491# Begin Source File
456 492
457SOURCE=.\VT100.cpp 493SOURCE=.\VT100.cpp
458# PROP Exclude_From_Build 1 494# PROP Exclude_From_Build 1
459# End Source File 495# End Source File
460################################################################################ 496################################################################################
461# Begin Source File 497# Begin Source File
462 498
463SOURCE=".\NEW-ENVIRON.cpp" 499SOURCE=".\NEW-ENVIRON.cpp"
464# PROP Exclude_From_Build 1 500# PROP Exclude_From_Build 1
465# End Source File 501# End Source File
466################################################################################ 502################################################################################
467# Begin Source File 503# Begin Source File
468 504
469SOURCE=.\help\kinsole.hpj 505SOURCE=.\help\kinsole.hpj
470 506
471!IF "$(CFG)" == "KINSole - Win32 Release" 507!IF "$(CFG)" == "KINSole - Win32 Release"
472 508
473# Begin Custom Build - Building Help 509# Begin Custom Build - Building Help
474OutDir=.\Release 510OutDir=.\Release
475TargetName=kinsole 511TargetName=kinsole
476InputPath=.\help\kinsole.hpj 512InputPath=.\help\kinsole.hpj
477 513
478BuildCmds= \ 514BuildCmds= \
479 makehelp \ 515 makehelp \
480 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ 516 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \
481 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ 517 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \
482 518
483 519
484"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 520"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
485 $(BuildCmds) 521 $(BuildCmds)
486 522
487"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 523"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
488 $(BuildCmds) 524 $(BuildCmds)
489 525
490"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 526"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
491 $(BuildCmds) 527 $(BuildCmds)
492 528
493"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 529"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
494 $(BuildCmds) 530 $(BuildCmds)
495# End Custom Build 531# End Custom Build
496 532
497!ELSEIF "$(CFG)" == "KINSole - Win32 Debug" 533!ELSEIF "$(CFG)" == "KINSole - Win32 Debug"
498 534
499# Begin Custom Build - Building Help 535# Begin Custom Build - Building Help
500OutDir=.\Debug 536OutDir=.\Debug
501TargetName=kinsole 537TargetName=kinsole
502InputPath=.\help\kinsole.hpj 538InputPath=.\help\kinsole.hpj
503 539
504BuildCmds= \ 540BuildCmds= \
505 makehelp \ 541 makehelp \
506 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \ 542 compress $(OutDir)\$(TargetName).hlp $(OutDir)\$(TargetName).hl_ \
507 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \ 543 compress $(OutDir)\$(TargetName).cnt $(OutDir)\$(TargetName).cn_ \
508 544
509 545
510"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 546"$(OutDir)\$(TargetName).hlp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
511 $(BuildCmds) 547 $(BuildCmds)
512 548
513"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 549"$(OutDir)\$(TargetName).cnt" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
514 $(BuildCmds) 550 $(BuildCmds)
515 551
516"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 552"$(OutDir)\$(TargetName).hl_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
517 $(BuildCmds) 553 $(BuildCmds)
518 554
519"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 555"$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
520 $(BuildCmds) 556 $(BuildCmds)
521# End Custom Build 557# End Custom Build
522 558
523!ENDIF 559!ENDIF
524 560
525# End Source File 561# End Source File
526# End Target 562# End Target
527################################################################################ 563################################################################################
528# Begin Target 564# Begin Target
529 565
530# Name "Install - Win32 Release" 566# Name "Install - Win32 Release"
531# Name "Install - Win32 Debug" 567# Name "Install - Win32 Debug"
532 568
533!IF "$(CFG)" == "Install - Win32 Release" 569!IF "$(CFG)" == "Install - Win32 Release"
534 570
535!ELSEIF "$(CFG)" == "Install - Win32 Debug" 571!ELSEIF "$(CFG)" == "Install - Win32 Debug"
536 572
537!ENDIF 573!ENDIF
538 574
539################################################################################ 575################################################################################
540# Begin Source File 576# Begin Source File
541 577
542SOURCE=.\Install\Install.rc 578SOURCE=.\Install\Install.rc
543DEP_RSC_INSTA=\ 579DEP_RSC_INSTA=\
544 ".\Install\Custom.rch"\ 580 ".\Install\Custom.rch"\
545 ".\shared-data\install-icon.ico"\ 581 ".\shared-data\install-icon.ico"\
546 582
547 583
548!IF "$(CFG)" == "Install - Win32 Release" 584!IF "$(CFG)" == "Install - Win32 Release"
549 585
550 586
551"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" 587"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)"
552 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG"\ 588 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "NDEBUG"\
553 $(SOURCE) 589 $(SOURCE)
554 590
555 591
556!ELSEIF "$(CFG)" == "Install - Win32 Debug" 592!ELSEIF "$(CFG)" == "Install - Win32 Debug"
557 593
558 594
559"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)" 595"$(INTDIR)\Install.res" : $(SOURCE) $(DEP_RSC_INSTA) "$(INTDIR)"
560 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "_DEBUG"\ 596 $(RSC) /l 0x409 /fo"$(INTDIR)/Install.res" /i "Install" /d "_DEBUG"\
561 $(SOURCE) 597 $(SOURCE)
562 598
563 599
564!ENDIF 600!ENDIF
565 601
566# End Source File 602# End Source File
567################################################################################ 603################################################################################
568# Begin Source File 604# Begin Source File
569 605
570SOURCE=.\Install\install.cpp 606SOURCE=.\Install\install.cpp
571DEP_CPP_INSTAL=\ 607DEP_CPP_INSTAL=\
572 ".\shared-code\install.h"\ 608 ".\shared-code\install.h"\
573 609
574 610
575"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)" 611"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTAL) "$(INTDIR)"
576 $(CPP) $(CPP_PROJ) $(SOURCE) 612 $(CPP) $(CPP_PROJ) $(SOURCE)
577 613
578 614
579# End Source File 615# End Source File
580################################################################################ 616################################################################################
581# Begin Project Dependency 617# Begin Project Dependency
582 618
583# Project_Dep_Name "KINSole" 619# Project_Dep_Name "KINSole"
584 620
585!IF "$(CFG)" == "Install - Win32 Release" 621!IF "$(CFG)" == "Install - Win32 Release"
586 622
587"KINSole - Win32 Release" : 623"KINSole - Win32 Release" :
588 $(MAKE) /$(MAKEFLAGS) /F ".\kinsole.mak" CFG="KINSole - Win32 Release" 624 $(MAKE) /$(MAKEFLAGS) /F ".\kinsole.mak" CFG="KINSole - Win32 Release"
589 625
590!ELSEIF "$(CFG)" == "Install - Win32 Debug" 626!ELSEIF "$(CFG)" == "Install - Win32 Debug"
591 627
592"KINSole - Win32 Debug" : 628"KINSole - Win32 Debug" :
593 $(MAKE) /$(MAKEFLAGS) /F ".\kinsole.mak" CFG="KINSole - Win32 Debug" 629 $(MAKE) /$(MAKEFLAGS) /F ".\kinsole.mak" CFG="KINSole - Win32 Debug"
594 630
595!ENDIF 631!ENDIF
596 632
597# End Project Dependency 633# End Project Dependency
598################################################################################ 634################################################################################
599# Begin Source File 635# Begin Source File
600 636
601SOURCE=.\help\kinsole.hpj 637SOURCE=.\help\kinsole.hpj
602 638
603!IF "$(CFG)" == "Install - Win32 Release" 639!IF "$(CFG)" == "Install - Win32 Release"
604 640
605!ELSEIF "$(CFG)" == "Install - Win32 Debug" 641!ELSEIF "$(CFG)" == "Install - Win32 Debug"
606 642
607!ENDIF 643!ENDIF
608 644
609# End Source File 645# End Source File
610# End Target 646# End Target
611# End Project 647# End Project
612################################################################################ 648################################################################################
diff --git a/kinsole.rc b/kinsole.rc
index b789f37..6e45d44 100644
--- a/kinsole.rc
+++ b/kinsole.rc
@@ -1,115 +1,115 @@
1//Microsoft Developer Studio generated resource script. 1//Microsoft Developer Studio generated resource script.
2// 2//
3#include "resource.h" 3#include "resource.h"
4 4
5#define APSTUDIO_READONLY_SYMBOLS 5#define APSTUDIO_READONLY_SYMBOLS
6///////////////////////////////////////////////////////////////////////////// 6/////////////////////////////////////////////////////////////////////////////
7// 7//
8// Generated from the TEXTINCLUDE 2 resource. 8// Generated from the TEXTINCLUDE 2 resource.
9// 9//
10#include "afxres.h" 10#include "afxres.h"
11 11
12///////////////////////////////////////////////////////////////////////////// 12/////////////////////////////////////////////////////////////////////////////
13#undef APSTUDIO_READONLY_SYMBOLS 13#undef APSTUDIO_READONLY_SYMBOLS
14 14
15///////////////////////////////////////////////////////////////////////////// 15/////////////////////////////////////////////////////////////////////////////
16// English (U.S.) resources 16// English (U.S.) resources
17 17
18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
19#ifdef _WIN32 19#ifdef _WIN32
20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
21#pragma code_page(1252) 21#pragma code_page(1252)
22#endif //_WIN32 22#endif //_WIN32
23 23
24///////////////////////////////////////////////////////////////////////////// 24/////////////////////////////////////////////////////////////////////////////
25// 25//
26// Icon 26// Icon
27// 27//
28 28
29// Icon with lowest ID value placed first to ensure application icon 29// Icon with lowest ID value placed first to ensure application icon
30// remains consistent on all systems. 30// remains consistent on all systems.
31IDI_IKON ICON DISCARDABLE "res/kinsole.ico" 31IDI_IKON ICON DISCARDABLE "res/kinsole.ico"
32 32
33#ifdef APSTUDIO_INVOKED 33#ifdef APSTUDIO_INVOKED
34///////////////////////////////////////////////////////////////////////////// 34/////////////////////////////////////////////////////////////////////////////
35// 35//
36// TEXTINCLUDE 36// TEXTINCLUDE
37// 37//
38 38
391 TEXTINCLUDE DISCARDABLE 391 TEXTINCLUDE DISCARDABLE
40BEGIN 40BEGIN
41 "resource.h\0" 41 "resource.h\0"
42END 42END
43 43
442 TEXTINCLUDE DISCARDABLE 442 TEXTINCLUDE DISCARDABLE
45BEGIN 45BEGIN
46 "#include ""afxres.h""\r\n" 46 "#include ""afxres.h""\r\n"
47 "\0" 47 "\0"
48END 48END
49 49
503 TEXTINCLUDE DISCARDABLE 503 TEXTINCLUDE DISCARDABLE
51BEGIN 51BEGIN
52 "\r\n" 52 "\r\n"
53 "\0" 53 "\0"
54END 54END
55 55
56#endif // APSTUDIO_INVOKED 56#endif // APSTUDIO_INVOKED
57 57
58 58
59#ifndef _MAC 59#ifndef _MAC
60///////////////////////////////////////////////////////////////////////////// 60/////////////////////////////////////////////////////////////////////////////
61// 61//
62// Version 62// Version
63// 63//
64 64
65VS_VERSION_INFO VERSIONINFO 65VS_VERSION_INFO VERSIONINFO
66 FILEVERSION 1,0,0,3 66 FILEVERSION 1,1,0,0
67 PRODUCTVERSION 1,0,0,3 67 PRODUCTVERSION 1,1,0,0
68 FILEFLAGSMASK 0x3fL 68 FILEFLAGSMASK 0x3fL
69#ifdef _DEBUG 69#ifdef _DEBUG
70 FILEFLAGS 0x29L 70 FILEFLAGS 0x29L
71#else 71#else
72 FILEFLAGS 0x28L 72 FILEFLAGS 0x28L
73#endif 73#endif
74 FILEOS 0x4L 74 FILEOS 0x4L
75 FILETYPE 0x1L 75 FILETYPE 0x1L
76 FILESUBTYPE 0x3L 76 FILESUBTYPE 0x3L
77BEGIN 77BEGIN
78 BLOCK "StringFileInfo" 78 BLOCK "StringFileInfo"
79 BEGIN 79 BEGIN
80 BLOCK "040904b0" 80 BLOCK "040904b0"
81 BEGIN 81 BEGIN
82 VALUE "CompanyName", "Klever Group (http://www.klever.net)\0" 82 VALUE "CompanyName", "Klever Group (http://www.klever.net)\0"
83 VALUE "FileDescription", "KINSole, telnet client\0" 83 VALUE "FileDescription", "KINSole, telnet client\0"
84 VALUE "FileVersion", "1, 0, 0, 3\0" 84 VALUE "FileVersion", "1, 1, 0, 0\0"
85 VALUE "InternalName", "KINSOLE\0" 85 VALUE "InternalName", "KINSOLE\0"
86 VALUE "LegalCopyright", "Copyright © 1998, 2002 Klever Group (http://www.klever.net/)\0" 86 VALUE "LegalCopyright", "Copyright © 1998-2004 Klever Group (http://www.klever.net/)\0"
87 VALUE "LegalTrademarks", "Klever Group (http://www.klevernet/)\0" 87 VALUE "LegalTrademarks", "Klever Group (http://www.klevernet/)\0"
88 VALUE "OriginalFilename", "KINSOLE.EXE\0" 88 VALUE "OriginalFilename", "KINSOLE.EXE\0"
89 VALUE "ProductName", "KINSole\0" 89 VALUE "ProductName", "KINSole\0"
90 VALUE "ProductVersion", "1, 0, 0, 3\0" 90 VALUE "ProductVersion", "1, 1, 0, 0\0"
91 END 91 END
92 END 92 END
93 BLOCK "VarFileInfo" 93 BLOCK "VarFileInfo"
94 BEGIN 94 BEGIN
95 VALUE "Translation", 0x409, 1200 95 VALUE "Translation", 0x409, 1200
96 END 96 END
97END 97END
98 98
99#endif // !_MAC 99#endif // !_MAC
100 100
101#endif // English (U.S.) resources 101#endif // English (U.S.) resources
102///////////////////////////////////////////////////////////////////////////// 102/////////////////////////////////////////////////////////////////////////////
103 103
104 104
105 105
106#ifndef APSTUDIO_INVOKED 106#ifndef APSTUDIO_INVOKED
107///////////////////////////////////////////////////////////////////////////// 107/////////////////////////////////////////////////////////////////////////////
108// 108//
109// Generated from the TEXTINCLUDE 3 resource. 109// Generated from the TEXTINCLUDE 3 resource.
110// 110//
111 111
112 112
113///////////////////////////////////////////////////////////////////////////// 113/////////////////////////////////////////////////////////////////////////////
114#endif // not APSTUDIO_INVOKED 114#endif // not APSTUDIO_INVOKED
115 115