History of unix/pterm.c of 3628bd7d8c721d3f

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History of file unix/pterm.c at check-in 3628bd7d8c721d3f

2014-02-16
10:40
Enable xterm mouse reporting of wheel actions in GTK. I had somehow missed this completely out of the GTK mouse-button handling and never noticed until now! Of course, like any other mouse action, if you want it to be handled locally rather than passed through then you can hold down Shift. file: [29ab283124] check-in: [7b7fe7cab5] user: simon branch: trunk, size: 116862
2013-11-30
12:04
Make GTK idle and quit function setup idempotent. I found last week that when a local proxy process terminated unexpectedly, Unix PuTTY went into a tight loop calling quit functions, because if idle_toplevel_callback_func is called from inside a subsidiary gtk_main then it will schedule a quit function and _not_ disable itself, so that that quit function keeps being rescheduled on subsequent calls. To fix, I've tried to make the whole handling of idle and quit functions more sensibly robust: we keep our own boolean flag indicating whether each of our functions has already been scheduled with GTK, and if so, we don't schedule the same one again. Also, when idle_toplevel_callback_func schedules a quit function, it should unschedule itself since it's now done everything it can until a gtk_main instance quits. file: [434723f4ed] check-in: [f92a403fe9] user: simon branch: trunk, size: 116562
2013-11-17
08:05
Fix an assortment of dupprintf() format string bugs. I've enabled gcc's format-string checking on dupprintf, by declaring it in misc.h to have the appropriate GNU-specific attribute. This pointed out a selection of warnings, which I've fixed. file: [5bef20d96d] check-in: [44f33ce7e0] user: simon branch: trunk, size: 115447
2013-09-15
09:05
Only run one toplevel callback per event loop iteration. This change attempts to reinstate as a universal property something which was sporadically true of the ad-hockery that came before toplevel callbacks: that if there's a _very long_ queue of things to be done through the callback mechanism, the doing of them will be interleaved with re-checks of other event sources, which might (e.g.) cause a flag to be set which makes the next callback decide not to do anything after all. file: [696a5438d3] check-in: [36d3c24f08] user: simon branch: trunk, size: 115484
2013-08-18
05:56
Don't run toplevel callbacks in modal dialogs. Because some of them can call gtk_main_quit(), which completely confuses the dialog box system. file: [8dc8dfcf2e] check-in: [d89571a733] user: simon branch: trunk, size: 115442
2013-08-17
11:06
Revamp net_pending_errors using toplevel callbacks. Again, I've removed the special-purpose ad-hockery from the assorted front end message loops that dealt with deferred handling of socket errors, and instead uxnet.c and winnet.c arrange that for themselves by calling the new general top-level callback mechanism. file: [d1a724108f] check-in: [441fc5a4dd] user: simon branch: trunk, size: 114844
11:06
Revamp GTK's session close handling using toplevel callbacks. Instead of having a special GTK idle function for dealing with session closing, I now use the new top-level callback mechanism which is slightly simpler for calling a one-off function. Also in this commit, I've arranged for connection_fatal to queue a call to the same session close function after displaying the message box, with the effect that now all the same processing takes place no matter whether the session closes cleanly or uncleanly - e.g. the SSH specials submenu is cleaned out, as it should be. file: [d7c5b8148a] check-in: [030eccd1a1] user: simon branch: trunk, size: 115378
11:06
Revamp the terminal paste mechanism using toplevel callbacks. I've removed the ad-hoc front-end bodgery in the Windows and GTK ports to arrange for term_paste to be called at the right moments, and instead, terminal.c itself deals with knowing when to send the next chunk of pasted data using a combination of timers and the new top-level callback mechanism. As a happy side effect, it's now all in one place so I can actually understand what it's doing! It turns out that what all that confusing code was up to is: send a line of pasted data, and delay sending the next line until either a CR or LF is returned from the server (typically indicating that the pasted text has been received and echoed) or 450ms elapse, whichever comes first. file: [3b6cc51107] check-in: [e18f3877ae] user: simon branch: trunk, size: 115514
11:06
Add a general way to request an immediate top-level callback. This is a little like schedule_timer, in that the callback you provide will be run from the top-level message loop of whatever application you're in; but unlike the timer mechanism, it will happen _immediately_. The aim is to provide a general way to avoid re-entrance of code, in cases where just _doing_ the thing you want done is liable to trigger a confusing recursive call to the function in which you came to the decision to do it; instead, you just request a top-level callback at the message loop's earliest convenience, and do it then. file: [490f8f0bbc] check-in: [0345763d47] user: simon branch: trunk, size: 115882
2013-07-20
08:15
Redo a mis-fix of a memory leak in r9919: I added sfree(data) immediately after conf_deserialise in the Duplicate Session receiver, whereas I should have put it after the subsequent loop that extracts the pty argv if any. file: [b3120833d1] check-in: [3f9156f8b5] user: simon branch: trunk, size: 115355
2013-07-19
13:10
Centralise calls to fcntl into functions that carefully check the error returns. file: [7c1e85d085] check-in: [04c7a24906] user: simon branch: trunk, size: 115354
12:44
Add some missing calls to cleanup_exit. file: [62018d2c35] check-in: [8f4562c3b3] user: simon branch: trunk, size: 115361
2013-07-14
05:46
Fix another giant batch of resource leaks. (Mostly memory, but there's one missing fclose too.) file: [a16e577bf1] check-in: [17fb711a78] user: simon branch: trunk, size: 115353
05:45
Fix an always-false if statement which was causing the window border not to be redrawn when the user reconfigured the background colour. file: [a5023687b8] check-in: [93e0d8851c] user: simon branch: trunk, size: 115247
2013-07-11
12:24
Add some missing null checks for inst->ldisc, which were causing segfaults if a PuTTY or pterm did not close on exit and then you either typed something via input_method_commit_event or changed the line editing or echo settings. file: [c364659ec9] check-in: [4d69ee0b39] user: simon branch: trunk, size: 115243
12:24
Remove another pointless null check, this time of inst->back in the function which has just dereferenced it to get the exit code. file: [b674140d83] check-in: [dea3c6f18f] user: simon branch: trunk, size: 115195
2013-07-01
12:56
A collection of small bug fixes from Chris West, apparently spotted by Coverity: assorted language-use goofs like freeing the wrong thing or forgetting to initialise a string on all code paths. file: [9b51ddc4ed] check-in: [8962699297] user: simon branch: trunk, size: 115209
2013-01-13
15:59
Reorganise setup_fonts_ucs so that in case of error it does nothing and returns its error message as a string, instead of actually printing it on standard error and exiting. Now we can preserve the previous error behaviour when we get a nonexistent font name at startup time, but no longer rudely terminate in mid-session if the user configures a bogus font name in Change Settings. file: [d874b359ff] check-in: [6389889576] user: simon branch: trunk, size: 115208
2012-09-19
12:08
Make --help and --version work consistently across all tools. Well, at least across all command-line tools on both Windows and Unix, and the GTK apps on Unix too. The Windows GUI apps fundamentally can't write to standard output and it doesn't seem sensible to use message boxes for these purposes :-) file: [9b08da33e2] check-in: [75423b66a5] user: simon branch: trunk, size: 114343
2012-09-18
16:42
Two related changes to timing code: First, make absolute times unsigned. This means that it's safe to depend on their overflow behaviour (which is undefined for signed integers). This requires a little extra care in handling comparisons, but I think I've correctly adjusted them all. Second, functions registered with schedule_timer() are guaranteed to be called with precisely the time that was returned by schedule_timer(). Thus, it's only necessary to check these values for equality rather than doing risky range checks, so do that. The timing code still does lots that's undefined, unnecessary, or just wrong, but this is a good start. file: [c44e109a25] check-in: [a2d79b9e07] user: ben branch: trunk, size: 114096
2012-07-22
14:51
Introduce a new utility function smemclr(), which memsets things to zero but does it in such a way that over-clever compilers hopefully won't helpfully optimise the call away if you do it just before freeing something or letting it go out of scope. Use this for (hopefully) every memset whose job is to destroy sensitive data that might otherwise be left lying around in the process's memory. file: [89abcac8c7] check-in: [aee68b8d31] user: simon branch: trunk, size: 113997
2012-07-05
18:45
Turns out that the compose-keys fix in r9567 did in fact break one piece of keyboard handling: if Num Lock is on, numeric keypad keys are eaten by the IM, so we must avoid passing them to the IM in the first place if we're in any non-default numeric keypad mode (application or Nethack). This is a grubby way to do it, but the more obvious approach of just moving the Nethack and app-keypad if statements up to above the IM call doesn't work because those statements depend on the generic Alt-prefix handling that happens just _below_ the IM call. So instead I just repeat the list of keystrokes and modes in an if statement conditionalising the IM call. file: [54ed79dc90] check-in: [7c3afb2e69] user: simon branch: trunk, size: 113999
2012-06-18
13:10
Add the missing code to treat data coming from the input method as keypresses for purposes of hiding the mouse pointer and resetting the scrollback. file: [9aac64d4d9] check-in: [a0c27fcd97] user: simon branch: trunk, size: 111148
2012-06-17
02:26
Support for dead keys and compose sequences on Unix, by instantiating a GtkIMMulticontext and having that filter most keypresses. I think I've got this right so that it doesn't break any previous deliberate keyboard-handling behaviour that's now _after_ the 'if (filter keypress) return' statement. file: [7dcb9fbba3] check-in: [e02da4865e] user: simon branch: trunk, size: 111083
2012-06-09
10:09
Introduce a third setting for the 'bold as colour' mode, which lets you both brighten the colour _and_ bold the font at the same time. (Fixes 'bold-font-colour' and Debian #193352.) file: [dfdfd4bec8] check-in: [8394417bea] user: simon branch: trunk, size: 109693
2012-04-22
09:22
Bug fix from Robert de Bath: if the utf8_override setting is changed in mid-session, it affects translation and hence display, so it should be listed among the settings that require a redraw. file: [c6b4ce7ada] check-in: [15c9c5b0d3] user: simon branch: trunk, size: 109682
2011-12-08
13:15
Arrange to call net_pending_errors on Unix, which we've never actually remembered to do before! Also some related fixes, such as that after we do so we should immediately stop selecting on the socket in question. file: [df45a66d82] check-in: [49322399b9] user: simon branch: trunk, size: 109582
2011-10-02
06:01
Turn 'Filename' into a dynamically allocated type with no arbitrary length limit, just as I did to FontSpec yesterday. file: [75d5a0e48d] check-in: [7756dc109c] user: simon branch: trunk, size: 109048
2011-10-01
13:00
Fix copy-and-paste error in command-line font selection in r9314. file: [2fca222a7b] check-in: [2d4a59148d] user: jacob branch: trunk, size: 109074
12:38
Change the semantics of 'FontSpec' so that it's a dynamically allocated type. The main reason for this is to stop it from taking up a fixed large amount of space in every 'struct value' subunion in conf.c, although that makes little difference so far because Filename is still doing the same thing (and is therefore next on my list). However, the removal of its arbitrary length limit is not to be sneezed at. file: [fccdbdc1fd] check-in: [78529746fb] user: simon branch: trunk, size: 109058
2011-09-16
14:18
Support font fallback even when an X11 server-side font is selected, by introducing a wrapper around an individual unifont which falls back to Pango (which already has built-in fallback) in the case where the selected font doesn't support the glyph in question. The wrapper itself is a (vestigial) subclass of unifont, to minimise disturbance at the call sites. file: [70389bc90b] check-in: [91efaca9f4] user: simon branch: trunk, size: 109162
14:18
Change the unifont API so that text is passed right down to the individual font implementation as wchar_t, rather than having to be converted by the client into the appropriate MBCS/SBCS. This also means I can remove 'real_charset' from the public-facing contents of the unifont structure. file: [d7abd592ba] check-in: [a22d103f26] user: simon branch: trunk, size: 109013
14:18
Add some missing consts in character set handling. file: [b4a570a7f4] check-in: [d7363b4954] user: simon branch: trunk, size: 109312
2011-09-13
06:44
Revamp of EOF handling in all network connections, pipes and other data channels. Should comprehensively fix 'half-closed', in principle, though it's a big and complicated change and so there's a good chance I've made at least one mistake somewhere. All connections should now be rigorous about propagating end-of-file (or end-of-data-stream, or socket shutdown, or whatever) independently in both directions, except in frontends with no mechanism for sending explicit EOF (e.g. interactive terminal windows) or backends which are basically always used for interactive sessions so it's unlikely that an application would be depending on independent EOF (telnet, rlogin). EOF should now never accidentally be sent while there's still buffered data to go out before it. (May help fix 'portfwd-corrupt', and also I noticed recently that the ssh main session channel can accidentally have MSG_EOF sent before the output bufchain is clear, leading to embarrassment when it subsequently does send the output). file: [6f4a207fdf] check-in: [0831792ea4] user: simon branch: trunk, size: 109280
2011-08-19
09:55
Fix bug with setting window title on Unix that came in with r9214. file: [fe6faad9e2] check-in: [56f8573d8f] user: jacob branch: trunk, size: 109172
2011-07-14
13:52
Post-release destabilisation! Completely remove the struct type 'Config' in putty.h, which stores all PuTTY's settings and includes an arbitrary length limit on every single one of those settings which is stored in string form. In place of it is 'Conf', an opaque data type everywhere outside the new file conf.c, which stores a list of (key, value) pairs in which every key contains an integer identifying a configuration setting, and for some of those integers the key also contains extra parts (so that, for instance, CONF_environmt is a string-to-string mapping). Everywhere that a Config was previously used, a Conf is now; everywhere there was a Config structure copy, conf_copy() is called; every lookup, adjustment, load and save operation on a Config has been rewritten; and there's a mechanism for serialising a Conf into a binary blob and back for use with Duplicate Session. User-visible effects of this change _should_ be minimal, though I don't doubt I've introduced one or two bugs here and there which will eventually be found. The _intended_ visible effects of this change are that all arbitrary limits on configuration strings and lists (e.g. limit on number of port forwardings) should now disappear; that list boxes in the configuration will now be displayed in a sorted order rather than the arbitrary order in which they were added to the list (since the underlying data structure is now a sorted tree234 rather than an ad-hoc comma-separated string); and one more specific change, which is that local and dynamic port forwardings on the same port number are now mutually exclusive in the configuration (putting 'D' in the key rather than the value was a mistake in the first place). One other reorganisation as a result of this is that I've moved all the dialog.c standard handlers (dlg_stdeditbox_handler and friends) out into config.c, because I can't really justify calling them generic any more. When they took a pointer to an arbitrary structure type and the offset of a field within that structure, they were independent of whether that structure was a Config or something completely different, but now they really do expect to talk to a Conf, which can _only_ be used for PuTTY configuration, so I've renamed them all things like conf_editbox_handler and moved them out of the nominally independent dialog-box management module into the PuTTY-specific config.c. file: [d11a08f17b] check-in: [a2c0243430] user: simon branch: trunk, size: 109172
2011-05-07
05:57
Fixes (mostly from Colin Watson, a couple redone by me) to make Unix PuTTY compile cleanly under gcc 4.6.0 without triggering any of its new warnings. file: [0e62375e23] check-in: [af856539a4] user: simon branch: trunk, size: 106496
2011-01-15
05:39
Allow setting the WM_CLASS X window property as a configuration option in saved sessions, so that a programmable window manager can distinguish different PuTTYs/pterms on startup and assign them different window management properties. file: [c285a0a1e3] check-in: [b43117417a] user: simon branch: trunk, size: 105570
2010-03-14
13:58
r8854/5 broke compilation with Gtk 1.2. Grow a hack to cope. file: [052836caa9] check-in: [97d481dae0] user: jacob branch: trunk, size: 105410
2010-03-06
09:50
Centralise generation of the control sequences for arrow keys into a function in terminal.c, and replace the cloned-and-hacked handling code in all our front ends with calls to that. This was intended for code cleanliness, but a side effect is to make the GTK arrow-key handling support disabling of application cursor key mode in the Features panel. Previously that checkbox was accidentally ignored, and nobody seems to have noticed before! file: [bc1e1ce603] check-in: [35aecab820] user: simon branch: trunk, size: 105086
2010-01-25
08:33
...and the rest of r8854. file: [a4a91e4328] check-in: [698420e57a] user: jacob branch: trunk, size: 105431
2010-01-23
06:25
Our handling of timers in Gtk was truncating times on 64-bit systems; one symptom was that the terminal window would not update until a focus-change event. Spotted and patched by Max Kellermann. file: [e3a9dbb3b3] check-in: [d38cce3d87] user: jacob branch: trunk, size: 105430
2009-09-13
18:41
In Unix PuTTY, grey out "Restart Session" when it doesn't apply (as the Windows version does), rather than hiding it completely. file: [98a0c53437] check-in: [239594768a] user: jacob branch: trunk, size: 105428
18:37
Add a couple of ellipses in Unix context menu (like r759 on Windows). file: [9a8f205715] check-in: [0a2d6244f2] user: jacob branch: trunk, size: 105381
18:29
If there are no saved sessions, put a grayed "(No sessions)" entry on the saved sessions submenu of the terminal window context menu (as Pageant does), rather than an empty menu (which often renders poorly). file: [eaabb790e0] check-in: [67bc4c7b05] user: jacob branch: trunk, size: 105375
2009-08-21
18:25
Remove outdated comment. file: [26180f20ef] check-in: [337a48e8d8] user: jacob branch: trunk, size: 105066
2009-02-28
10:52
Debian bug #517535: we were unconditionally interpreting the 'string' field in a GdkEventKey structure as ISO-8859-1, which was correct for GTK 1.2 but in 2.0 that field is encoded according to the current C library locale. Hence, we now process that field by converting it to UTF-8 via trips through both libc and libcharset, and then let lpage_send() convert from UTF-8 back to whatever it's supposed to actually go down the line in. file: [d683705790] check-in: [d5f3c90afa] user: simon branch: trunk, size: 105290
2008-12-02
18:06
gtk_selection_clear_targets() does not exist on GTK 1, so ifdef it. file: [d2e496d221] check-in: [1722b59c4b] user: simon branch: trunk, size: 104207
2008-12-01
17:03
Add missing call to gtk_selection_clear_targets(), without which the list of selection targets offered by GTK PuTTY/pterm grows an extra copy of each of the three supported text formats every time the user makes a selection! file: [be6cbd3edd] check-in: [d7ac9e085e] user: simon branch: trunk, size: 104171
2008-11-17
12:36
Avoid freeing the backend in notify_remote_exit(), since that's called from within a backend function which will expect its own backend pointer to still be valid on return. Instead, move all the real functionality of notify_remote_exit() out into a GTK idle function. file: [b2b43cee31] check-in: [d576de5599] user: simon branch: trunk, size: 104106
2008-06-10
15:18
Manfred Schwarb points out that scroll wheel support stopped working with the switch to GTK2. This turns out to be because, where GTK1 represented the scroll wheel as mouse buttons 4 and 5 and generated GdkEventButton when it was moved, GTK2 has moved wheel actions out into a new event type GdkEventScroll which we were not handling. Now we do, so scroll wheel support should be back in place. file: [a9e6aacad9] check-in: [e42aacd383] user: simon branch: trunk, size: 103846
2008-06-04
18:05
At last, merge the putty-gtk2 branch back into the trunk! file: [cbd87e5a6e] check-in: [8d6cccb962] user: simon branch: trunk, size: 102878
2008-03-09
10:32
Under OS X Leopard, we seem not to consistently get the Tab key translated for us. Be prepared to do it manually as a fallback. file: [1914843e21] check-in: [8b0a99a8f7] user: simon branch: trunk, size: 108015
2007-03-19
07:05
Fix a stupid one-character typo that was breaking 256-colour support on GTK. file: [7451d40d2a] check-in: [ee598e12ce] user: ben branch: trunk, size: 107764
2007-02-24
18:50
Since r7265, a user could not launch a PuTTY session to a specific host by simply specifying a hostname on the command line -- this would bring up the config dialog. Use a slightly more sophisticated notion of whether the user meant to launch a session. file: [e2b3ca8a90] check-in: [3be54b7561] user: jacob branch: trunk, size: 107764
07:36
Gareth pointed out yesterday that the Unix terminal front end treats BELL_DISABLED as BELL_DEFAULT. How embarrassing. file: [01d873383c] check-in: [3e3c1216c5] user: simon branch: trunk, size: 107419
2007-02-18
08:02
Ctrl-Break now sends a Break signal (previously it was equivalent to Ctrl-C). file: [bc83e7b798] check-in: [65285954f0] user: jacob branch: trunk, size: 107418
2007-02-10
11:02
Avoid launching a session from the Default Settings, even if they do represent a launchable session, unless the user can be construed to have really meant it. This means: - starting up PuTTY when the Default Settings are launchable still brings up the config box, and you have to hit Open to actually launch that session - double-clicking on Default Settings from the config box will load them but not launch them. On the other hand: - explicitly loading the Default Settings on the command line using `-load' _does_ still launch them. file: [2867e38790] check-in: [e32793db99] user: simon branch: trunk, size: 107406
2007-01-31
06:30
Colin Watson has fixed the disgusting icons on GTK1. His patch appears to merely fix the background colour (arranging for it to have transparency rather than being on some kind of default grey background), but it turns out to also fix the strange blurry behaviour I see in the GNOME Taskbar, for no very obvious reason. file: [03e1f413a5] check-in: [11d422587d] user: simon branch: trunk, size: 107380
2007-01-24
07:53
The direct link between the terminal and the back end via term_provide_resize_fn() was not being broken when the back end was destroyed on session termination, causing resizing an inactive PuTTY to be a segfault hazard. file: [7b1d9ec29a] check-in: [f75921a917] user: simon branch: trunk, size: 107346
2007-01-06
12:27
No, I tell a lie: GTK 1 _does_ support icons, at least partially. Ooh. file: [e34cc36277] check-in: [c1ecd0cf4d] user: simon branch: trunk, size: 107286
2006-12-30
17:00
Patch from Colin Watson intended to give a clean Unix compile with GCC 4. (Since we choose to compile with -Werror, this is particularly important.) I haven't yet checked that the resulting source actually compiles cleanly with GCC 4, hence not marking `gcc4-warnings' as fixed just yet. file: [168207b520] check-in: [ef14243dce] user: jacob branch: trunk, size: 106464
2006-09-03
09:31
Support for an alternative mechanism for displaying wide characters under X: instead of having two separate fixed-width fonts one of which is twice the width of the other, you can instead have a single font in which some characters are twice as wide as others. This is implemented very simply: if you specify a wide font, it will be used for wide characters, and if you don't then the normal font will be used for wide characters (so they'd better _be_ wide in that font, or there'll be trouble). I got this idea from Jed, whose latest version supports UTF-8 and requires a font of this type. If there are going to be X fonts like that kicking around, there will doubtless be people who want to use them. file: [26eb9a7d78] check-in: [8007266fdc] user: simon branch: trunk, size: 106319
2006-08-28
09:29
Serial back end for Unix. Due to hardware limitations (no Linux box I own has both an X display and a working serial port) I have been unable to give this the full testing it deserves; I've managed to demonstrate the basic functionality of Unix Plink talking to a serial port, but I haven't been able to test the GTK front end. I have no reason to think it will fail, but I'll be more comfortable once somebody has actually tested it. file: [9a9b1c960a] check-in: [d6cb32325e] user: simon branch: trunk, size: 106225
2006-03-14
16:01
Fix minor memory leak. file: [d1ad821558] check-in: [c92727f499] user: jacob branch: trunk, size: 106147
2006-03-12
16:17
Equivalent of r6583 window-border palette-change fix for Gtk. file: [09654be71d] check-in: [06ec31208c] user: jacob branch: trunk, size: 106125
2006-03-08
12:10
David Damerell tells me I should be using Ctrl-hjklyubn rather than Shift-hjklyubn for batch movement in NetHack, because they have subtly different behaviour within the game and the Ctrl-moves are more useful. Unfortunately, PuTTY's NetHack keypad mode doesn't support Ctrl-moves. Therefore, it does now :-) file: [8494a5ff99] check-in: [396c775fc5] user: simon branch: trunk, size: 105738
2006-02-19
08:59
Fix `restart-reset-terminal': terminal now restored to a sensible state when reusing a window to restart a session. file: [2c29d39f8a] check-in: [a9fe99c1ad] user: jacob branch: trunk, size: 105634
2006-02-13
16:18
Preserve more attributes of text copied as RTF. Thanks to Stephen Balousek. file: [9e39d01f8f] check-in: [e24538d25e] user: owen branch: trunk, size: 105596
2005-12-09
14:04
A few small changes to make the PuTTY source base more usable as a basis for other terminal-involving applications: a stub implementation of the printing interface, an additional function in notiming.c, and also I've renamed the front-end function beep() to do_beep() so as not to clash with beep() in lib[n]curses. file: [04e7ef669c] check-in: [bc74216dab] user: simon branch: trunk, size: 105585
2005-10-30
14:24
Revamp SSH authentication code so that user interaction is more abstracted out; replace loops structured around a single interaction per loop with less tortuous code (fixes: `ki-multiprompt-crash', `ssh1-bad-passphrase-crash'; makes `ssh2-password-expiry' and `proxy-password-prompt' easier). The new interaction abstraction has a lot of fields that are unused in the current code (things like window captions); this is groundwork for `gui-auth'. However, ssh.c still writes directly to stderr; that may want to be fixed. In the GUI apps, user interaction is moved to terminal.c. This should make it easier to fix things like UTF-8 username entry, although I haven't attempted to do so. Also, control character filtering can be tailored to be appropriate for individual front-ends; so far I don't promise anything other than not having made it any worse. I've tried to test this fairly exhaustively (although Mac stuff is untested, as usual). It all seems to basically work, but I bet there are new bugs. (One I know about is that you can no longer make the PuTTY window go away with a ^D at the password prompt; this should be fixed.) file: [a59c3a005a] check-in: [fa1347493a] user: jacob branch: trunk, size: 105582
2005-10-13
16:56
Fix 256-colours-match-xterm, based on 256colres.pl from xterm-205. Largely untested -- may not even compile on Windows. file: [23d84b03b3] check-in: [a232015fce] user: ben branch: trunk, size: 105107
2005-04-27
16:42
On monochrome displays, display the cursor in reverse video so that it's visible on reversed out text. This only applies to active block cursors for now. file: [9db3add715] check-in: [58f5d476a6] user: ben branch: trunk, size: 105079
16:22
Tiny manual CSE of previous commit. file: [87ae974812] check-in: [aa5d4730d1] user: ben branch: trunk, size: 105017
16:09
On 1bpp displays, ignore colour attributes. This makes pterm minimally useful there, though (e.g.) switching to using reverse video for the cursor would probably also help. Displays with other silly depths (e.g. 2bpp) aren't catered for, but I suspect they're rare in the X world. file: [2b72972d3f] check-in: [cda1056254] user: ben branch: trunk, size: 105023
15:30
Make palette changes use "best match" colours too. file: [187fdf980f] check-in: [462bcba811] user: ben branch: trunk, size: 104893
2005-04-25
17:46
Ask GDK to give us reasonable approximations if it can't get precisely the colours we asked it for. This means that I can run pterm on an 8-bit PseudoColor display even if I have another program running. file: [5f232610c8] check-in: [dfe65fbf2d] user: ben branch: trunk, size: 104894
2005-04-21
08:57
First crack at `terminal-modes' in SSH. PuTTY now sends ERASE by default, Unix Plink sends everything sensible it can find, and it's fully configurable from the GUI. I'm not entirely sure about the precise set of modes that Unix Plink should look at; informed tweaks are welcome. Also the Mac bits are guesses (but trivial). file: [7072a5196f] check-in: [533d29650c] user: jacob branch: trunk, size: 104895
2005-04-06
20:36
If a new session was saved from Change Settings, a side-effect on Windows was that the global `sesslist' got out of sync with the saved-sessions submenu, causing the latter to launch the wrong sessions. Also, Change Settings wasn't getting a fresh session list, so if the set of sessions had changed since session startup it wouldn't reflect that (at least until a session was saved). Fixed (on all platforms). Therefore, since the global sesslist didn't seem to be useful, I've got rid of it; config.c creates one as needed, as do the frontends. (Not tried compiling Mac changes.) Also, we now build the saved-sessions submenu on demand on Windows and Unix. (This should probably also be done on the Mac.) file: [c73eb446d9] check-in: [11a4164f51] user: jacob branch: trunk, size: 104734
2005-03-18
20:26
Try to make our PGP signing more useful: * All the PuTTY tools for Windows and Unix now contain the fingerprints of the Master Keys. The method for accessing them is crude but universal: a new "-pgpfp" command-line option. (Except Unix PuTTYgen, which takes "--pgpfp" just to be awkward.) * Move the key policy discussion from putty-website/keys.html to putty/doc/pgpkeys.but, and autogenerate the former from the latter. Also tweak the text somewhat and include the fingerprints of the Master Keys themselves. (I've merged the existing autogeneration scripts into a single new one; I've left the old scripts and keys.html around until such time as the webmonster reviews the changes and plumbs in the new script; he should remove the old files then.) file: [b3b84314bc] check-in: [d2a830c19a] user: jacob branch: trunk, size: 104346
2005-03-10
04:07
Protect against multiple Change Settings dialogues. We should probably also arrange to switch to an existing Change Settings if the user selects the menu item and we already have a Change Settings. file: [f24e691919] check-in: [79b9658c13] user: owen branch: trunk, size: 104254
2005-03-05
11:56
Make sure we do notify_remote_exit(ssh->frontend) _before_ connection_fatal(), since the latter is entitled to destroy the backend so `ssh' may no longer be valid once it returns. For the Unix port, switch exit(0) to gtk_main_quit() in notify_remote_exit(), so that we don't exit before the subsequent connection_fatal()! file: [e4305963b1] check-in: [695d639fd8] user: simon branch: trunk, size: 104111
2005-02-15
11:05
The terminal window can now indicate that PuTTY is busy in various ways, by changing its mouse pointer. Currently this is only used in the (slightly- arbitrarily-defined) "heavy" bits of SSH-2 key exchange. We override pointer hiding while PuTTY is busy, but preserve pointer-hiding state. Not yet implemented on the Mac. Also switch to frobbing window-class cursor in Windows rather than relying on SetCursor(). file: [b057fdb5b6] check-in: [14b560857a] user: jacob branch: trunk, size: 104105
2004-12-31
07:02
Renamed and modified unix/pterm.c → unix/gtkwin.c. Rename some of the more stupidly named files in the Unix back end. Notably pterm.c, which was a sensible name right at the start but became a misnomer as soon as I created Unix PuTTY. file: [90acae5250] check-in: [afc775a19a] user: simon branch: trunk, size: 103451
2004-12-29
06:32
Loose end from r5031: the Kex panel should only be displayed in mid-session if we are not using SSHv1. I've done this by introducing a generic `cfg_info' function which every back end can use to communicate an int's worth of data to setup_config_box; in SSH that's the protocol version in use, and in everything else it's currently zero. file: [01a0f97d3d] check-in: [8cec6d493a] user: simon branch: trunk, size: 103484
2004-12-19
16:37
Fix line cursor colours (fallout from `256-colours'), on both Windows and Unix. file: [2b4582de44] check-in: [fc8fba4a2e] user: jacob branch: trunk, size: 103423
2004-12-17
08:25
Jacob has pointed out why SIGCHLD was blocked, so I've updated the comment when I unblock it in pty.c to reflect reality. Also I've moved block_signal() out of pterm.c into signal.c, so I can conveniently use it for unblocking SIGCHLD rather than having to reinvent it in pty.c. file: [3e0d9ae0f2] check-in: [e6e6127715] user: simon branch: trunk, size: 103433
2004-11-29
19:07
Another default-background fix for 256-colour mode file: [cc754b8c17] check-in: [da93f608bb] user: jacob branch: trunk, size: 103657
2004-11-28
09:18
Bah, there's always one thing I miss. Correct the background-colour handling in Unix PuTTY. file: [15cfcbcbca] check-in: [b306166356] user: simon branch: trunk, size: 103655
09:13
Implement xterm 256-colour mode. file: [4b27432527] check-in: [1d10fbc8cf] user: simon branch: trunk, size: 103653
2004-11-27
13:34
Slight improvement to cursor blink timing: since the cursor doesn't blink when the window doesn't have focus, we don't schedule blink timers at that point either. Infrastructure change: term->has_focus should now not be written directly from outside terminal.c. Instead, use the function term_set_focus, which will sort out the blink timers as well. file: [dedf27cb61] check-in: [7a1f0222f8] user: simon branch: trunk, size: 103172
07:20
New timing infrastructure. There's a new function schedule_timer() which pretty much any module can call to request a call-back in the future. So terminal.c can do its own handling of blinking, visual bells and deferred screen updates, without having to rely on term_update() being called 50 times a second (fixes: pterm-timer); and ssh.c and telnet.c both invoke a new module pinger.c which takes care of sending keepalives, so they get sent uniformly in all front ends (fixes: plink-keepalives, unix-keepalives). file: [fe2424c5cf] check-in: [683ee6bed3] user: simon branch: trunk, size: 103168
2004-10-17
16:22
Support the SSH-2 mechanism for sending signals to a running session. Neither of the SSH servers I conveniently have access to (Debian stable OpenSSH -- 3.4p1 -- and lshd) seem to take a blind bit of notice, but the channel requests look fine to me in the packet log. I've included all the signals explicitly defined by draft-ietf-secsh-connect-19, but I've put the more obscure ones in a submenu of the specials menu; there's therefore been some minor upheaval to support such submenus. file: [f0dd399441] check-in: [e613d9b7a0] user: jacob branch: trunk, size: 102424
09:44
Telnet specials menu was not being reinstated after a session was restarted in the same window (Windows version only). Policy change: it's now the backend's responsibility to call update_specials_menu() at the start of a session (or whenever it feels ready), if it has any special commands. Otherwise the menu won't be displayed. file: [2283848e13] check-in: [df3849f621] user: jacob branch: trunk, size: 101653
2004-10-16
09:17
Markus Kuhn's UTF-8 page http://www.cl.cam.ac.uk/~mgk25/unicode.html#activate feels strongly that it should be easy to make _all_ your applications work in UTF-8 mode, without having to remember a switch for each one. Every application should simply note a UTF-8 locale setting and switch into UTF-8 mode automatically. Therefore, for the Unix port only, there's now a checkbox, enabled by default, which causes the drop-down Translation box to be overridden if the locale indicates UTF-8. Anyone who doesn't like this, or doesn't like MGK, is welcome to turn it straight back off. I'm not _completely_ convinced by MGK's argument myself; for xterm/pterm to do _useful_ UTF-8 you also need to specify a decently Unicode-capable font, and there's no way _that_ can be automagically done on noticing a locale setting. But it's a de facto standard (i.e. xterm does it :-) so I might as well at least be _able_ to support it. file: [f4ecd83732] check-in: [c05196ad7c] user: simon branch: trunk, size: 101607
2004-10-15
07:25
And fix _cursor_ display on double-width double-width characters (as it were). file: [08650857b8] check-in: [e281797263] user: simon branch: trunk, size: 101582
07:17
Double-height and double-width line attributes (ESC#3, ESC#4, ESC#6) were not working correctly with double-width Unicode characters (CJK). file: [332bbd21f8] check-in: [ea8e22ac07] user: simon branch: trunk, size: 101558
03:51
Fix cursor display on a combined character cell. file: [68a8899012] check-in: [5b0b76fdd5] user: simon branch: trunk, size: 101543
2004-10-14
11:42
First-stage support for Unicode combining characters. The `chars' array of each `termline' structure now contains optional additional entries after the normal number of columns, which are used to chain a linked list of combining characters off any primary termchar that needs it. This means we support arbitrarily many combining characters per cell (unlike xterm's hard limit of 2). Cut and paste works correctly (selecting a character cell containing multiple code points causes all those code points to be cut and pasted). Display works by simply overlaying all the relevant characters on top of one another; this is good enough for Unix (xterm does the same thing), and mostly seems OK for Windows except that the Windows Unicode fonts have a nasty habit of not containing most of the combining characters and thus overlaying an unknown-code-point box on your perfectly good base glyph. I had no idea how to add support in the Mac do_text(), so I've simply stuck in an assertion that will trigger the first time a combining character is displayed, and hopefully this will bite someone with the clue to fix it. file: [9a8959c24a] check-in: [873b9560c1] user: simon branch: trunk, size: 101500
2004-10-13
06:50
Re-engineering of terminal emulator, phase 1. The active terminal screen is no longer an array of `unsigned long' encoding 16-bit Unicode plus 16 attribute bits. Now it's an array of `termchar' structures, which currently have 32-bit Unicode and 32 attribute bits but which will probably expand further in future. To prevent bloat of the memory footprint, I've introduced a mostly RLE-like compression scheme for storing scrollback: each line is compressed into a compact (but hard to modify) form when it moves into the term->scrollback tree, and is temporarily decompressed when the user wants to scroll back over it. My initial tests suggest that this compression averages about 1/4 of the previous (32 bits per character cell) data size in typical output, which means this is an improvement even without counting the new ability to extend the information stored in each character cell. Another beneficial side effect is that the insane format in which Unicode was passed to front ends through do_text() has now been rendered sane. Testing is incomplete; this _may_ still have instabilities. Windows and Unix front ends both seem to work as far as I've looked, but I haven't yet looked very hard. The Mac front end I've edited (it seemed obvious how to change it) but I can't compile or test it. As an immediate functional effect, the terminal emulator now supports full 32-bit Unicode to whatever extent the host platform allows it to. For example, if you output a 4-or-more-byte UTF-8 character in Unix pterm, it will not display it properly, but it will correctly paste it back out in a UTF8_STRING selection. Windows is more restricted, sadly. file: [81bc9c8cc1] check-in: [fd15c23f41] user: simon branch: trunk, size: 101193
2004-09-28
15:42
Line (as opposed to block) cursors were being displayed when they shouldn't have been, including when they were blinked off. Fixes Debian bug #272877. file: [b223765324] check-in: [f3871b7c8f] user: jacob branch: trunk, size: 100890
2004-08-20
09:04
Patch to use enum constants for cfg.funky_type instead of numeric literals, from "Anthony" <410C2A86.2010003@mail2004.ajrh.net>. file: [312ef198af] check-in: [c811f4d966] user: jacob branch: trunk, size: 100784
2004-08-14
08:04
Implement `Restart Session', in both Unix and Windows PuTTY. Largely because Owen questioned whether it was really easy enough to be labelled `fun' in the bug database :-) file: [cad0cb698f] check-in: [3ba6f1b539] user: simon branch: trunk, size: 100717
2004-07-27
10:20
Fix double-free in X selection code. file: [cbc2ff850a] check-in: [cd12e8a582] user: simon branch: trunk, size: 99841
2004-06-20
12:07
Add a configuration option for TCP keepalives (SO_KEEPALIVE), default off. No very good reason, but I've occasionally wanted to frob it to see if it makes any difference to problems I'm having, and it was easy. Tested that it does actually cause keepalives on Windows (with tcpdump); should also work on Unix. Not implemented on Mac (does nothing), but then neither is TCP_NODELAY. Quite a big checkin, much of which is adding `keepalive' alongside `nodelay' in network function calls. file: [46b6411e90] check-in: [d6cbea6730] user: jacob branch: trunk, size: 99731
2004-05-24
06:30
Arnaud Desitter points out a silly mistake in retrieve_cutbuffer() (don't test for `int *nbytes' being <= 0, test for the integer it points to being <= 0!). file: [b6d982c49b] check-in: [fdd818ac08] user: simon branch: trunk, size: 99700
2004-05-22
09:21
Fix indentation after Richard B's patch in rev 1.137 [r3409]. file: [6c7ec313fd] check-in: [bc17c95964] user: simon branch: trunk, size: 99699
2003-08-21
13:39
Richard B's patch to enable users to explicitly request shadow bold by disabling bold-font-name guessing (if their bold fonts are ugly). I've turned the UI inside out, but the meat is pretty much the same. file: [75e52b54b5] check-in: [ff01a069c4] user: simon branch: trunk, size: 99653
13:07
Richard B's patch to support X cut buffers as well as ordinary selections, meaning that (a) a pterm can leave copied text in the cut buffer after it terminates so that applications can pick it up even though it isn't still around to deliver the selection in person, and (b) pterm can pick up things left in this way by other apps. Downside is that all of this only happens in ISO8859-1, because X is weird like that. file: [c011784a96] check-in: [620a90455a] user: simon branch: trunk, size: 99415
13:03
Richard Boulton's patch for improved correctness in selection handling (generally, selection request timestamps should be set to the timestamp on the event that caused them). file: [3ac07673b0] check-in: [ca4726e5f8] user: simon branch: trunk, size: 97284
2003-05-13
14:57
Real COMPOUND_TEXT support! I was expecting to have to read the spec and implement the required subset of ISO-2022 in libcharset, but it turns out that Xlib provides conversion functions between UTF-8 and compound text, which are just about ideal for us. So now we can paste multilingual stuff both to and from emacs21. Rock on. file: [58d0bd8c65] check-in: [f09b9e07b0] user: simon branch: trunk, size: 96896
13:43
Allow pterm to receive selections in compound text format. Doesn't actually _understand_ compound text yet - anything with non-ASCII-or-8859-1 characters will fail miserably - but it will at least successfully receive plain text if the pasting application doesn't see fit to give it out in any other format. file: [598b1ead89] check-in: [968a183c28] user: simon branch: trunk, size: 94955
13:14
Debian bug #193013 points out that the (default-)one-pixel border is not redrawn when the window background colour is reconfigured mid- session. In addition, the Official Window Background is not reset, meaning that opaque resizes etc will flicker in the old background colour. This checkin should fix both. file: [5ab9a92681] check-in: [58b0de2d23] user: simon branch: trunk, size: 94640
2003-05-10
05:15
pterm will now attempt to guess suitable names for any missing fonts from the ones given; so it'll ask for a font twice as wide as your base one if you don't specify a wide font, it'll ask for a bolded version of your base font if you don't specify a bold font, and similarly for a wide/bold font. Should solve Debian bug #187389; at least it works for me. file: [b2875663c8] check-in: [d3acdabf8d] user: simon branch: trunk, size: 94172
04:05
Stupid braino in get_window_title (thanks Colin): window and icon titles were being reported the wrong way round. Should fix half of Debian bug #191751. file: [61d1beb430] check-in: [d622d5a81e] user: simon branch: trunk, size: 91885
03:35
Fixes for Debian bug #192701 (64-bit gccs warn about casts between ptrs and ints of different size and -Werror makes this serious). The GTK bits are done by Colin's patch to use GINT_TO_POINTER (thanks); the uxnet bits are done by cleaning up the rest of the code. In particular, network.h now typedefs `OSSocket' to be a type capable of holding whatever the OS's socket data type is that underlies our socket abstraction. Individual platforms can make this typedef themselves if they define OSSOCKET_DEFINED to prevent network.h redoing it; so the Unix OSSocket is now int. Default is still void *, so other platforms should be unaffected. file: [d019c2f5a8] check-in: [e1f861acb0] user: simon branch: trunk, size: 91885
2003-05-06
14:55
Reinstate `-T title', in pterm only. file: [ae6b54e7f2] check-in: [0fed8bc460] user: simon branch: trunk, size: 91857
2003-05-04
09:18
Colin's const-fixing Patch Of Death. Seems to build fine on Windows as well as Unix, so it can go in. file: [905b14e623] check-in: [c9f1945192] user: simon branch: trunk, size: 91506
2003-04-27
06:10
Support for non-ISO-8859-1 X keysyms. So in particular, pterm in a Euro-supporting font with a Euro-enabled X key map will now actually generate a Euro character rather than shrugging and doing nothing. file: [e9147bfc40] check-in: [63945cefc6] user: simon branch: trunk, size: 91488
2003-04-26
09:22
Make the `vtmode' config option work under X. In the process I've had to move another of its values out into wincfg.c - paradoxically, this was the `font has X encoding' option! (Because the Unix font handling code expects to be able to tell for _itself_ whether it has a font with X-encoded line drawing glyphs.) file: [b10061e85a] check-in: [42587114a6] user: simon branch: trunk, size: 90532
08:55
Aha, _that's_ why the icon title didn't work properly in pterm: gtk_window_set_title() overwrote both titles at once. Icon title is now working properly under X, and since X was the reason for the whole icon/window title separation _anyway_ they default to being separate. file: [ede430a1b6] check-in: [9772d176d4] user: simon branch: trunk, size: 90469
2003-04-25
10:44
Don't block SIGPIPE until _after_ pterm forks, since otherwise the blockage will propagate to the child process. file: [896c96637f] check-in: [9546ad05f2] user: simon branch: trunk, size: 89937
2003-04-23
08:48
Unix makefile now uses -O2, which massively cuts down key exchange time. This gives rise to a whole bunch of spare warnings, one or two of which might have been actual bugs; now all resolved. file: [be359e2764] check-in: [6c10570c0b] user: simon branch: trunk, size: 89695
2003-04-12
12:37
Support for New Session, Duplicate Session and the Saved Sessions submenu in Unix PuTTY, and Duplicate Session also in pterm. You do _not_ want to know how this is done. Be warned. file: [e623015b6c] check-in: [2a16a8e814] user: simon branch: trunk, size: 89662
06:03
Further fiddlings with the size reconfiguration stuff; now everything seems to work right even when the only thing changed was the window border. file: [98c0cf8e0b] check-in: [b3bd56e4fb] user: simon branch: trunk, size: 83039
05:44
Mid-session reconfiguration of scrollback was failing (in Unix) except when width or height had _also_ been changed. Fixed. file: [befe0506d2] check-in: [8d3c66813d] user: simon branch: trunk, size: 82887
04:27
Implement the ldisc `special' mechanism in Unix, without which local line editing didn't work at all. file: [f8f558f91f] check-in: [82c66f5741] user: simon branch: trunk, size: 82486
03:27
Close On Exit and Warn On Close fixes: (a) pty_reconfig needs to remember changes in COE so it knows whether to print a message, and (b) once the session has already ended, Warn On Close should shut up. file: [3b9118d804] check-in: [ab6d1303e3] user: simon branch: trunk, size: 81974
2003-04-11
13:44
When I implemented the GTK messagebox() function and everything that needed to use it, I completely forgot about askappend(). D'oh. file: [158a28b3e4] check-in: [3e873ea700] user: simon branch: trunk, size: 81957
13:36
Rationalisation of the system of frontend handles. Most modular bits of PuTTY (terminal, backend, logctx etc) take a `void *' handle passed to them from the frontend, and used as a context for all their callbacks. Most of these point at the frontend structure itself (on platforms where this is meaningful), except that the handle passed to the backend has always pointed at the terminal because from_backend() was implemented in terminal.c. This has finally bitten Unix PuTTY, because both backend and logctx have been passing their respective and very different frontend handles to logevent(), so I've fixed it. from_backend() is now a function supplied by the _frontend_ itself, in all cases, and the frontend handle passed to backends must be the same as that passed to everything else. What was from_backend() in terminal.c is now called term_data(), and the typical implementation of from_backend() in a GUI frontend will just extract the terminal handle from the frontend structure and delegate to that. This appears to work on Unix and Windows, but has most likely broken the Mac build. file: [ec587a3909] check-in: [70ba0246e2] user: simon branch: trunk, size: 82309
13:15
Implement Warn On Close. file: [b7e6e58c47] check-in: [2ae43e06b7] user: simon branch: trunk, size: 82514
13:10
`Copy All' ought to de-highlight any existing selection, in line with any other operation that shifts the X selection to stuff other than the highlighted text. file: [1648e338e1] check-in: [6541124864] user: simon branch: trunk, size: 82462
12:59
`Copy All' context-menu item, for what it's worth. file: [9a64f447f2] check-in: [b75870b6d0] user: simon branch: trunk, size: 82410
12:40
Cutting and pasting from the Unix Event Log. file: [cd1674c99f] check-in: [26feaa9728] user: simon branch: trunk, size: 82221
2003-04-10
13:00
Implemented Change Settings under Unix. We are gradually getting there. file: [4898fad1b0] check-in: [bc0d66460b] user: simon branch: trunk, size: 82214
06:57
All the stderr messages in this file now use appname rather than guessing wrongly. file: [9059e683c1] check-in: [bad4bd5783] user: simon branch: trunk, size: 77404
03:53
Minor improvements to subsidiary window placement; with any luck the Event Log should go off the side of the screen rather less often now. file: [47264a11b8] check-in: [6843a0d490] user: simon branch: trunk, size: 77233
2003-04-09
13:46
Event Log for Unix PuTTY. Doesn't yet allow X selection of its contents, and doesn't automatically maintain scroll position at the bottom when new entries are added while the list is open, but it's a start. file: [383901712a] check-in: [e121761c3c] user: simon branch: trunk, size: 77227
2003-04-08
09:02
Rename pterm's -T option to -title, to avoid clashing with PuTTY's -T (don't allocate a pty) option. file: [5899897fed] check-in: [be7fc2e743] user: simon branch: trunk, size: 76882
08:49
While writing gtkdlg.c I learned how to specify a window's initial position in GTK, so I can now implement the other half of -geometry which I'd previously believed to be impossible in GTK. It's still not perfect, because GTK apparently provides no way for us to get hold of the X reparent event in order to support negative geometries in a manner which takes account of the WM borders; but for positive position it's at least an improvement on the previous version! file: [eb84fd721a] check-in: [026dce549a] user: simon branch: trunk, size: 76878
2003-04-05
10:05
Ctrl+rightclick now pops up a context menu in Unix PuTTY and pterm. This menu is not yet fully populated, but it has an About box (yet another licence location :-/ ) and supports the new configurable specials menu (thus making Unix PuTTY do one tiny thing which OpenSSH-in-a-pterm can't :-). file: [472e820148] check-in: [b7304dcb60] user: simon branch: trunk, size: 76391
2003-04-04
14:21
Turned the old `Telnet Command' System-submenu into a more general `Special Command' menu, in which any backend can place its own list of magical things the user might want to ask the backend to do. In particular I've implemented the recently proposed "break" extension in SSH2 using this mechanism. NB this checkin slightly breaks the Mac build, since it needs to provide at least a stub form of update_specials_menu(). file: [688f332fb8] check-in: [53746610b8] user: simon branch: trunk, size: 73534
2003-04-01
12:10
Various error-handling fixes, mostly in Unix PuTTY but one (failure to save a session) crosses over into the platform-independent side. file: [4aab01d69b] check-in: [98cf799b26] user: simon branch: trunk, size: 73369
2003-03-31
06:10
Support for PuTTY-style command-line arguments in Unix PuTTY. I think it's now actually usable as a day-to-day SSH client, even if things like the Event Log are still missing. So I call that a decent lunch hour's work :-) file: [093a3e2dc0] check-in: [a52454784c] user: simon branch: trunk, size: 72375
05:42
And everyone's favourite cosmetic change: Unix PuTTY now doesn't claim to be pterm in the window title :-) file: [303293e50d] check-in: [3fdcb83acc] user: simon branch: trunk, size: 71594
05:21
Checkin of last night's work on GTK message boxes. Unix PuTTY now has proper GUI prompts for host keys etc, so it should now be usable without a controlling tty. file: [f80916e9ac] check-in: [8222ee8773] user: simon branch: trunk, size: 71508
2003-03-29
13:52
Having created and used uxsel, it actually turns out to be practically trivial to put all the pieces together and create a working prototype of Unix PuTTY! It's missing a lot of things - notably GUI request boxes for host keys and logfiles and so forth, the Event Log, mid-session reconfiguration, session loading and saving, sensible population of the character sets drop-down list and probably other fiddly little things too - but it will put up a config box and then create a GUI window containing an SSH connection to the host you specified, so it's _basically_ there. Woo! file: [170db08253] check-in: [c069c8a0c8] user: simon branch: trunk, size: 71246
12:30
pterm now uses the new uxsel module, so it's one step closer to being able to be a PuTTY as well as a pterm. In the process I've also moved icky things like actually reading from the pty fd and printing the `terminated on signal' messages into pty.c where they obviously should have been in the first place. Also there's been one interesting repercussion in the terminal code: terminal.c's from_backend now calls term_out() directly rather than expecting the front end to call it afterwards. This has had the entertaining side effect of fixing a Windows-specific bug whereby activity in a port forwarding through a PuTTY with a blinking cursor caused the cursor to blink to ON (!!!!). So, a surprisingly far-reaching checkin as it turns out... file: [57f3950d21] check-in: [b384cf23f7] user: simon branch: trunk, size: 70992
10:14
Introduced wrapper macros snew(), snewn() and sresize() for the malloc functions, which automatically cast to the same type they're allocating the size of. Should prevent any future errors involving mallocing the size of the wrong structure type, and will also make life easier if we ever need to turn the PuTTY core code from real C into C++-friendly C. I haven't touched the Mac frontend in this checkin because I couldn't compile or test it. file: [fef17ee883] check-in: [48c3c19745] user: simon branch: trunk, size: 72736
2003-03-06
06:57
Richard B's patch to add WINDOWID support to pterm. file: [59aebc5cd1] check-in: [5bae12ff10] user: simon branch: trunk, size: 72787
2003-02-01
06:54
Created new data types `Filename' and `FontSpec', intended to be opaque to all platform-independent modules and only handled within per-platform code. `Filename' is there because the Mac has a magic way to store filenames (though currently this checkin doesn't support it!); `FontSpec' is there so that all the auxiliary stuff such as font height and charset and so on which is needed under Windows but not Unix can be kept where it belongs, and so that I can have a hope in hell of dealing with a font chooser in the forthcoming cross-platform config box code, and best of all it gets the horrid font height wart out of settings.c and into the Windows code where it should be. The Mac part of this checkin is a bunch of random guesses which will probably not quite compile, but which look roughly right to me. Sorry if I screwed it up, Ben :-) file: [f005c2f843] check-in: [497dc397e7] user: simon branch: trunk, size: 72583
2003-01-28
06:06
And another bit missing from the settings changes: pterm's platform default for CloseOnExit was encoded wrongly. Hopefully this should be everything now; I'm really starting to get sick of picking up the pieces after my two checkins yesterday. Perhaps I should have waited until I had a brain before doing them in the first place. file: [c97bc6b747] check-in: [d0361ae286] user: simon branch: trunk, size: 72098
2003-01-27
17:03
xterm apparently supports ESC[90m through ESC[97m to set bright foreground colours, and ESC[100m through ESC[107m to set bright background colours. Hence, so do we. Bright-foreground is distinguishable from bold, and bright-background distinguishable from blink, when it leaves terminal.c; the front end may then choose to display them in the same way if it's configured to do so. This change makes the xterm backend for Turbo Vision (!!!) work properly. Untested on Mac. file: [ce1336794e] check-in: [a7834c6a71] user: simon branch: trunk, size: 72091
12:02
Remove all `enum'-typed variables from the Config structure. Everything in there which is integral is now an actual int, which means my forthcoming revamp of the config box will be able to work with `int *' pointers without fear of doom. file: [439db8a8d6] check-in: [b7a1f42e84] user: simon branch: trunk, size: 71993
2003-01-25
10:23
Fix Unix breakage from term_mouse() revamp too. file: [12c83d336b] check-in: [e2ba46c004] user: simon branch: trunk, size: 72057
10:16
Change the term_mouse interface a little so that it gets passed both the raw and the cooked mouse button, with the mapping being done in advance by the front-end. This is useful because it allows the front-end to use information other than the raw button (e.g. the modifier state) to decide which cooked button to generate. . Front ends other than the Mac one are untested, but they just call translate_button() themselves and pass the result to term_mouse(). file: [0b0244948d] check-in: [b60ae0056c] user: ben branch: trunk, size: 72073
2003-01-14
12:43
Miscellaneous fixes to finish up `remove-statics'. rlogin.c had a holdout static I hadn't noticed; unicode.c had one too; and a large number of statics that were perfectly OK due to being constants have been made `const', with assorted `const' repercussions all over the place. I now declare `remove-statics' to be fixed. file: [8d65a790f7] check-in: [47dac3d92b] user: simon branch: trunk, size: 71998
12:28
Deglobalise the Unicode module. Despite all my grand plans, I've just done this the very simple way - bundle all the globals into a data structure and pass pointers around. One particularly ugly wart is that wc_to_mb now takes a pointer to this structure as an argument (optional, may be NULL, and unused in any Unicode layer that's even marginally less of a mess than the Windows one). I do need to do this properly at some point, but for now this should just about be adequate. As usual, the Mac port has not been updated. file: [01e0de26a7] check-in: [483cb38b72] user: simon branch: trunk, size: 71980
05:24
Ctrl-PgUp and Ctrl-PgDn now scroll by one line on Unix and Windows file: [7567d777cd] check-in: [62e9596ee2] user: owen branch: trunk, size: 71856
2003-01-12
09:45
Ahem. Doing loads of stuff to inst->cfg would probably be best done _after_ allocating inst. Oops. file: [be21e1c44e] check-in: [c1d670c1f5] user: simon branch: trunk, size: 71590
09:36
Ahem. Global replace of `cfg' with `inst->cfg' is all very well, but let's try to make sure it doesn't happen inside any strings! The -cfg option for cursor foreground colour nearly had a nasty accident there. file: [c84d06e6ef] check-in: [3522aa05fd] user: simon branch: trunk, size: 71590
09:32
Having laid all the groundwork, we can now remove the global `cfg' completely from putty.h. It's now static in each of the command-line front ends, shared only between window.c and windlg.c in PuTTY proper (I've tested this by doing #define cfg cfgsillyname in those two files only, and it still links so nobody else is using that symbol!), and part of the `inst' structure in pterm. I think that only leaves the Unicode module as the last stubborn holdout in the anti-global-variables campaign. file: [3aca7effcf] check-in: [c3e7c65a17] user: simon branch: trunk, size: 71602
09:10
The logging module now contains a local copy of cfg too. file: [c0d8fc86cd] check-in: [425e784a06] user: simon branch: trunk, size: 70725
08:59
The Unicode module no longer depends on `cfg', since it gets the relevant bits of it passed in to init_ucs(). (Actually I pass in all of it in the Windows version, since it's a bit hairy in there.) file: [4fee469b05] check-in: [c14614baa6] user: simon branch: trunk, size: 70719
08:48
The back ends now contain their own copies of the Config structure, and have a function to pass in a new one. (Well, actually several back ends don't actually bother to do this because they need nothing out of Config after the initial setup phase, but they could if they wanted to.) file: [97e0e2bf32] check-in: [f4d72755c1] user: simon branch: trunk, size: 70700
2003-01-09
12:06
I'm sick of all those #ifdefs in settings.c, and in any case plink and pterm need at least one default setting to be _different_ (pterm needs the default term type to be `xterm', while plink needs it to be taken from $TERM). So here's a completely new alternative mechanism for platform- and app-specific default settings. Ben will probably want to check the integrity of the Mac port, since I've fiddled with it without testing that it still compiles. file: [0748b46336] check-in: [22de118cfc] user: simon branch: trunk, size: 70687
2003-01-03
11:52
Work around a weird bug in gdk_draw_text_wc(). file: [d0a52927f4] check-in: [f98d345130] user: simon branch: trunk, size: 70306
2003-01-02
10:17
Fixes to direct-to-font mode: I'd inadvertently enabled it for any font whose encoding comes up as CS_NONE - but this is also true for iso10646-1 fonts, since libcharset doesn't support wide-character encodings! Hence UTF-8 cut and paste was enabled in ordinary modes, but disabled in UTF-8 mode, which was a bit embarrassing. Now we have a dedicated flag variable indicating direct-to-font mode. file: [6833f40618] check-in: [fb856615d4] user: simon branch: trunk, size: 69568
2003-01-01
16:25
Proper support for using the font's own character encoding. If we know what that encoding actually is, we can do our best to support additional charsets (VT100 linedrawing, SCO ACS, UTF-8 mode) using the available characters; if we don't, we fall back to a mode where we disable all Unicode cut-and-paste and assume any Unicode character is undisplayable. file: [6a406f9d41] check-in: [82f2469b77] user: simon branch: trunk, size: 69189
15:53
Support for double-width (CJK) characters, using the xterm-like options -fw and -fwb to specify wide and wide-bold fonts. file: [466c04fd1a] check-in: [21b2cdb2c9] user: simon branch: trunk, size: 68465
2002-12-31
06:20
First draft of Unicode support in pterm. It's pretty complete: it does UTF-8 copy and paste (falling back to normal strings if necessary), it understands X font encodings and translates things accordingly so that if you have a Unicode font you can ask for virtually any single-byte encoding and get it (Mac-Roman pterm, anyone?), and so on. There's work left to be done (wide fonts for CJK spring to mind), but I reckon this is a pretty good start. file: [a12ebdd4b1] check-in: [94580ef671] user: simon branch: trunk, size: 66930
2002-12-04
06:40
#include <signal.h>. Compiled fine without it on Debian 3.0, but not on 2.2. Wonder what changed. file: [3cdc2c8f33] check-in: [861d27cdcc] user: simon branch: trunk, size: 61099
2002-11-23
14:02
Add a Config * argument to ldisc_create(), and use it in place of the global cfg throughout ldisc.c. Not tested other than on Mac, but all other ports just pass &cfg as this argument for now. file: [a0f0403a07] check-in: [94b6511b43] user: ben branch: trunk, size: 61079
13:01
Add a "Config *" argument to term_init(), and use that instead of the global cfg throughout the terminal emulator. Not tested in PuTTY and pterm, but they just pass in &cfg. file: [f75c79d9f3] check-in: [40ee80fefa] user: ben branch: trunk, size: 61072
2002-11-09
15:46
Rename CharWidth() to char_width(). The former name clashes with an API function in Mac OS. file: [201fcf7854] check-in: [b80c92ed92] user: ben branch: trunk, size: 61066
2002-11-05
07:20
Fix command-line error handling in pterm. (Hint: wrapping a multi- statement macro in `do ... while (0)' and putting a `continue' within it don't go well together. Oops.) file: [94340f21e8] check-in: [e60a008b47] user: simon branch: trunk, size: 61065
2002-11-02
10:16
Improve shadow bold mode: set the default shadow bold offset to +1 not -1 (it turns out _most_ X fonts prefer the former, though irritatingly my favourite real X font used to prefer the latter which was why I made the X version of my Font Of Choice do so too), and also clip to the boundaries of the rectangle we should be drawing text in. This still doesn't completely prevent display corruption in the case where text drawn in one sweep is partially overwritten in a future one, but gnome-terminal has this problem too, and now we've got the right default SB offset _and_ offer the opportunity to reconfigure it I think this is pretty good for now. file: [821e500cf3] check-in: [3114a70d88] user: simon branch: trunk, size: 60786
08:35
RJK's general signal-handling robustness patch. Should fix the weird spin behaviour occasionally seen after pterm's child process dies. file: [9d50725456] check-in: [e1fb5ab154] user: simon branch: trunk, size: 60521
2002-10-31
13:49
First attempt at a Unix port of Plink. Seems to basically work; doesn't yet use the SSH agent, no way to specify arbitrary config options, no manpage yet, couple of other fiddly things need doing, but it makes SSH connections and doesn't fall over horribly so I say it's a good start. Now to run it under valgrind... file: [0987cdabb5] check-in: [b651a46968] user: simon branch: trunk, size: 60068
2002-10-30
12:22
RJK's `pterm --help' patch. I _must_ find a better alternative to this init sequence - it surely can't be right that `pterm --help' with no DISPLAY complains at the lack of DISPLAY rather than giving a help message! file: [62dbe3e394] check-in: [8cab4c281e] user: simon branch: trunk, size: 59949
2002-10-28
15:58
terminal.c should call the frontend beep() routine even with mode==BELL_VISUAL, otherwise taskbar flashing won't happen on visual bells. It's up to the frontend routine to spot BELL_VISUAL and avoid making any noise. file: [a36ea0a591] check-in: [29d816b14b] user: simon branch: trunk, size: 58606
11:34
Fix Alt+numberpad in pterm. For a start, there was a bug whereby if a pterm came up while Alt was down, then releasing it would cause a ^@ to be generated. Also, though, I've decided that Alt plus a single numberpad key should not generate a low-numbered control code, because that's too easy to do by mistake and the codes are too powerful. Anyone who really _wants_ to create a ^C or ^D from the numberpad can do Alt-03 or Alt-04 easily enough; two-digit codes and more such as Alt-65 are unaffected. file: [4f7a087ac8] check-in: [d50e64724d] user: simon branch: trunk, size: 58335
03:38
First bug discovered as a result of global-removal: pasting into pterm caused a crash because I had the wrong prototype for the selection_received event handler. Should be fixed. file: [d909f537eb] check-in: [2b272e1f86] user: simon branch: trunk, size: 57849
2002-10-26
07:58
Yet more global-removal. The static variables in logging.c are now absent, and also (I think) all the frontend request functions (such as request_resize) take a context pointer, so that multiple windows can be handled sensibly. I wouldn't swear to this, but I _think_ that only leaves the Unicode stuff as the last stubborn holdout. file: [29b3ce572b] check-in: [8fba443d8c] user: simon branch: trunk, size: 57837
06:08
Reorganised the Unicode layer somewhat: moved luni_send and lpage_send out into the line discipline, making them _clients_ of the Unicode layer rather than part of it. This means they can access ldisc->term, which in turn means I've been able to remove the temporary global variable `term'. We're slowly getting there. file: [de05b0f4f6] check-in: [457ce6905a] user: simon branch: trunk, size: 55074
05:33
Port forwarding module now passes backend handles around properly. As a result I've now been able to turn the global variables `back' and `backhandle' into module-level statics in the individual front ends. Now _that's_ progress! file: [f375dc0bf0] check-in: [06cff2eb6c] user: simon branch: trunk, size: 54772
05:16
Line discipline module now uses dynamically allocated data. Also fixed one or two other minor problems. file: [3625fcf32d] check-in: [d16199ae68] user: simon branch: trunk, size: 54653
2002-10-25
17:00
Oops; remembering to call term_provide_resize_fn in the Unix front end would probably help. Thanks Colin. file: [2b77136258] check-in: [40732d161f] user: simon branch: trunk, size: 54475
06:58
Fix the nasty flashing-light-grey-on-resize problem, after MCV helpfully alerted me to the existence of gdk_window_set_background(). file: [4f1282d052] check-in: [5fa48e3449] user: simon branch: trunk, size: 54416
06:50
pty backend now supports the changed function interface, so pterm now compiles and runs again after the major destabilisation. Unfortunately it wasn't feasible to actually encapsulate all of the pty backend's data, since the utmp helper and the need to fork and drop privileges before doing anything else at all rather confuses matters. So the data handle passed around to the pty backend is a null pointer, and the pty backend is just as global-ridden as it always has been. Shame, but such is life. file: [2204e7becd] check-in: [feb8faf680] user: simon branch: trunk, size: 53939
2002-10-23
09:21
Implement handling of all Close On Exit modes. Default is to close only on clean exit, which is a departure from most xterm-alikes but Ian reckons people will love me for it. If this turns out to be wrong, we can always change the default for Unix. file: [7594e783c2] check-in: [e33f2e8338] user: simon branch: trunk, size: 53896
2002-10-22
11:11
Major destabilisation, phase 1. In this phase I've moved (I think) all the global and function-static variables out of terminal.c into a dynamically allocated data structure. Note that this does not yet confer the ability to run more than one of them in the same process, because other things (the line discipline, the back end) are still global, and also in particular the address of the dynamically allocated terminal-data structure is held in a global variable `term'. But what I've got here represents a reasonable stopping point at which to check things in. In _theory_ this should all still work happily, on both Unix and Windows. In practice, who knows? file: [dfed1790b1] check-in: [c56a5fa8ee] user: simon branch: trunk, size: 52273
08:27
Make -ut work the right way round! :-) file: [8af4c47ba2] check-in: [b42bbd8274] user: simon branch: trunk, size: 51940
2002-10-20
08:23
Implement Richard's really clever idea about bell overload mode: it's automatically deactivated by any keypress, so that command-line beeps from (e.g.) filename completion don't suddenly stop occurring, but it still provides a rapid response to an accidental spewing of a binary to your terminal. file: [0e5c8b6e44] check-in: [89a7cd7830] user: simon branch: trunk, size: 51940
07:44
ScrollOnKey wasn't working because I failed to set seen_key_event in pterm.c. file: [0ce3da22e3] check-in: [ba3068e889] user: simon branch: trunk, size: 51937
2002-10-18
10:26
Reject unrecognised command-line options; thanks rjk. file: [6b1a5314ef] check-in: [6b1f39e18f] user: simon branch: trunk, size: 51916
2002-10-17
11:58
Oops - that fix wasn't _quite_ right, since it killed all non-function keys completely :-/ file: [de59dc4017] check-in: [13faee9f62] user: simon branch: trunk, size: 51830
11:51
Make the shadow bold offset configurable, after discovering that 7x13 goes the other way to all other X fonts I've ever seen. (Arrgh.) file: [17dced76d1] check-in: [4245aa8933] user: simon branch: trunk, size: 51810
11:45
This should fix the bug causing Alt-Shift to generate Escape. file: [c27adbbcfd] check-in: [2163edba1a] user: simon branch: trunk, size: 52094
2002-10-16
17:54
Add the -xrm command-line option, to allow specification of an arbitrary X resource which doesn't have a dedicated command-line option. file: [5fde656eb9] check-in: [a258b8a88b] user: simon branch: trunk, size: 52082
11:00
A few more command-line options. file: [8aa322120a] check-in: [c544ce865f] user: simon branch: trunk, size: 51998
09:32
Implement reading of X resources, and -name to change the name under which to look them up. file: [a799fe028a] check-in: [dc7f9c04de] user: simon branch: trunk, size: 50308
07:17
Fix utmp and pty handling so that GTK never complains about running set[ug]id. All privs-requiring pty operations are done at the very start of the run, then privs are dropped before initialising GTK. Utmp is handled by forking a still-privileged subprocess at this point, and later asking it (through a pipe) to stamp utmp. The subprocess cleans up utmp on exit, which has the additional advantage that if the main pterm process suffers some sort of unexpected termination (up to and including SIGKILL) the subprocess can still mop up utmp. file: [321d6db447] check-in: [7f9a81d03e] user: simon branch: trunk, size: 49603
04:40
Bug `shift-backspace': whichever of ^H and ^? is configured for Backspace, Shift-Backspace should do the _other_ one. Thanks to Justin Bradford. file: [bd0263c058] check-in: [74ba290d86] user: simon branch: trunk, size: 49519
2002-10-15
13:42
Support bold-as-font, by means of a separate bold font (if one was supplied) or shadow bolding (if not). As usual, can't yet be turned on without a recompile. file: [13030e5d7c] check-in: [b2569827d3] user: simon branch: trunk, size: 49305
13:18
Support underline and vertical-line cursors as well as block. file: [709faa9722] check-in: [3931a8354d] user: simon branch: trunk, size: 48250
12:41
If we can't load the specified font, give an error message rather than segfaulting. file: [6d7860c7bd] check-in: [d6f20644bd] user: simon branch: trunk, size: 46347
12:24
Scrollbar can now be configured to go on the left (although the current configuration mechanism doesn't support it). file: [2c4aec9326] check-in: [94f7e9d448] user: simon branch: trunk, size: 46237
12:18
Support ALT + numeric keypad for typing in strange character codes. file: [c7d56efe8b] check-in: [5a7aebaff7] user: simon branch: trunk, size: 46127
11:50
Support scrolling with the mouse wheel (X servers apparently usually send a button 4 press for an upward wheel movement and a button 5 press for a downward one). Untested since my own trackball's button 4 does nothing obvious. Someone with a mouse wheel should give this a workout. file: [d7c1b8e194] check-in: [622fd3d843] user: simon branch: trunk, size: 43624
11:38
Support for blinking text and blinking cursor. Won't actually be accessible until there's a way to configure it on, but it worked in tests. file: [857721da1b] check-in: [a0a5506f59] user: simon branch: trunk, size: 43411
11:24
Use the appalling gnome-terminal hack for server-controlled resizes rather than the gtk_window_set_policy approach; the GNOME people say that the former is the Right Thing in spite of the latter looking obviously plausible. file: [c9a6032e34] check-in: [6cb6d56d5f] user: simon branch: trunk, size: 43373
10:44
Remove some rogue diagnostics. file: [b919b39b52] check-in: [842a63a48e] user: simon branch: trunk, size: 41368
10:16
Don't forget to initialise the pixel size parameters of the window as passed to the pty... file: [794018a75d] check-in: [f47218505b] user: simon branch: trunk, size: 41488
09:55
Richard's patch to make the scrollbar configurably absent. (Still want a new option to configure it to be on the LHS though. And some lunatic is bound to ask for an xterm-style scrollbar too... :-) file: [d7acb44fa3] check-in: [c816ac1e38] user: simon branch: trunk, size: 41337
09:31
Support for all the server-side window configuration requests, including server-controlled resizing. Irritatingly I've had to use a deprecated option to gtk_window_set_policy() to make this work, resulting in me raising GNOME bug #95818 to ask for it to be un- deprecated again... file: [af2b956e86] check-in: [ef25478d2b] user: simon branch: trunk, size: 41138
08:07
Introduce the ability to control whether the shell run in pterm is a login shell or not. Also moved these new pieces of configuration into the Config structure, though they won't stay there forever since they will need to be moved out into platform-dependent config. file: [c23c3f5696] check-in: [889a957cfd] user: simon branch: trunk, size: 39293
07:42
Finish up utmp processing: add the -ut- command-line option to suppress stamping it at all. (I suppose this ought to be part of the cfg structure really.) file: [bf5de22489] check-in: [48d2913a94] user: simon branch: trunk, size: 39299
07:29
Support for utmp, wtmp and lastlog. Probably not terribly portable as yet, but seems to work plausibly on Linux. file: [8efd663abc] check-in: [04380af359] user: simon branch: trunk, size: 39182
04:30
Trim wide text properly at the RH edge of the screen. file: [512e25db62] check-in: [1d7a84f45a] user: simon branch: trunk, size: 39120
2002-10-14
19:22
Support for line attributes: ESC #3, #4 and #6 for double-width and double-height text. file: [ea580d11a9] check-in: [3a57c840d6] user: simon branch: trunk, size: 39047
18:39
Don't cause the mouse pointer to reappear just because it's changed shape. file: [a5eb4cdff5] check-in: [b5dce740cb] user: simon branch: trunk, size: 37782
18:32
Only engage a GTK idle function when absolutely necessary, otherwise the whole app spins on it and takes up CPU all the time. file: [3fda32b15f] check-in: [7a5991bb3f] user: simon branch: trunk, size: 37700
17:14
Set up the palette _before_ trying to paint the window black. file: [7f58d96f5b] check-in: [65d1404fa3] user: simon branch: trunk, size: 37468
05:33
Add the -log option, which activates full session logging. Should be handy next time I need to debug any weird terminal problems... file: [7b267c25bf] check-in: [c3440c092b] user: simon branch: trunk, size: 37468
05:21
Support server requests for colour palette changes. file: [078456417c] check-in: [12a36f9ab5] user: simon branch: trunk, size: 37052
05:14
Don't forget to call term_paste() when we get the chance, or big pastes won't go through. (Not sure whether I should remove this weird behaviour completely for pterm. It's a bit bizarre.) file: [e0321f65cb] check-in: [03a780c15b] user: simon branch: trunk, size: 36320
05:06
Support NetHack keypad mode. :-) file: [077d1a8744] check-in: [e8759a8b36] user: simon branch: trunk, size: 36156
04:58
Support for hiding the mouse pointer on keypresses. Currently activated by `-hide' on the command line. file: [06ef5d36de] check-in: [26a987d390] user: simon branch: trunk, size: 35274
04:18
xterm-class programs should exit when their primary child process dies, rather than waiting around until the last open handle on the pty closes. file: [f8f9e93f81] check-in: [fe669158ac] user: simon branch: trunk, size: 34562
2002-10-13
19:05
Window title configurability: -T to set it from the command line, support for the xterm escape sequences to set it, and support for the xterm escape sequence to query it. file: [7a59006567] check-in: [bcb2aa106a] user: simon branch: trunk, size: 34138
18:48
gnome-terminal insists on receiving the selection as COMPOUND_TEXT rather than STRING, so we can now supply that too. Pasting both ways between pterm and gnome-terminal now works. file: [ccfac1f0a1] check-in: [525fd6d0f4] user: simon branch: trunk, size: 33627
07:54
Added two simple command-line arguments: -fn (so I can have my Font Of Choice back :-) and -e to run a command other than $SHELL. file: [c3823f104c] check-in: [7a2269ba51] user: simon branch: trunk, size: 33426
07:44
Resizing of pterm now works, and the size information is correctly sent on to the pty. file: [7869b9a948] check-in: [2fb4abdb44] user: simon branch: trunk, size: 32750
07:17
Deal with the appalling mouse pointer colours. (Why doesn't GTK let us select our own mouse pointer fg and bg for standard pointers? It's ludicrous that we can only do it for pixmap-derived ones. :-( ) file: [d740d1df6a] check-in: [c8de8d4871] user: simon branch: trunk, size: 32243
06:27
Shift-Ins pastes. file: [4d72d9c2ea] check-in: [4b2f26182c] user: simon branch: trunk, size: 29753
06:24
Selection now supported in pterm. Required small modifications outside the unix subdir, owing to more things needing to become platform-dependent. file: [405ec8eed1] check-in: [e4d89ad7c0] user: simon branch: trunk, size: 29662
04:57
Fix underline, which I cleverly broke while adding support for the window border. Oops. file: [2d179aa3d4] check-in: [ebd5e8cfd3] user: simon branch: trunk, size: 25400
04:54
Scrollbar now exists and functions; so do Shift-PgUp / Shift-PgDn. file: [b63d6bd39b] check-in: [3bcb27e451] user: simon branch: trunk, size: 25352
2002-10-10
09:42
Stop hard-coding a nonstandard font. We now default to `fixed', and pick up the font's real width and height. This means I now _can't_ use my font of choice until I implement some command-line options; I wonder what feature will appear next :-) file: [1dd2ecb1bc] check-in: [3628bd7d8c] user: simon branch: trunk, size: 22593
07:40
And that's it! pty.c is now a real pty backend rather than a loopback interface; pterm now runs $SHELL and gives every impression of being not a bad terminal emulator. I'm quite pleased with that. :-) file: [fc6b234790] check-in: [df838b2e56] user: simon branch: trunk, size: 21792
07:14
Half-decent keyboard handling for pterm. Not very well done - it would have been better to abstract the general key-handling rules away from the platform-specific keysyms rather than doing clone- and-hack as I've done - but it'll serve for now. Now all I need is a real pty back end and pterm should be a just-about-usable prototype. file: [d54b8eb3a9] check-in: [85cfc8acc0] user: simon branch: trunk, size: 21017
05:40
A sensible minimum of do_text() and do_cursor() is now implemented. This means pterm actually _looks_ like the PuTTY terminal emulator engine, instead of merely giving evidence to the expert eye that said engine is hidden in there somewhere :-) file: [26b488fd96] check-in: [3d9a36b500] user: simon branch: trunk, size: 11584
2002-10-09
13:09
First phase of porting. pterm now compiles and runs under Linux+gtk. The current pty.c backend is temporarily a loopback device for terminal emulator testing, the display handling is only just enough to show that terminal.c is functioning, the keyboard handling is laughable, and most features are absent. Next step: bring output and input up to a plausibly working state, and put a real pty on the back to create a vaguely usable prototype. Oh, and a scrollbar would be nice too. In _theory_ the Windows builds should still work fine after this... file: [92513883b7] check-in: [2d8039929a] user: simon branch: trunk, size: 10245
2002-10-07
11:45
Added: Begin destabilisation in the wake of 0.53! This checkin contains the beginning of a Unix port. It's nowhere near done, and currently it won't even compile on Unix. But this represents the start of the process of separating out platform-specific code, and also contains the mkfiles.pl changes required to support a Unix makefile and a non-flat source tree. file: [acb347e7ef] check-in: [1baf2504b1] user: simon branch: trunk, size: 4894