1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
putty-source/unix
Simon Tatham 75b6e12f84 Add two new string types to the Conf system.
This begins the process of making PuTTY more able to handle Unicode
strings as a first-class type in its configuration. One of the new
types, CONF_TYPE_UTF8, looks physically just like CONF_TYPE_STR but
the semantics are that it's definitely encoded in UTF-8, instead of
'shrug, whatever the system locale's encoding is'.

Unfortunately, we can't yet switch over any Conf items to having that
type, because our data representations in saved configuration (both on
Unix and Windows) store char strings in the system encoding. So we'll
have to change that representation at the same time, which risks
breaking backwards compatibility with old PuTTYs reading the same
configuration.

So the other new type, CONF_TYPE_STR_AMBI, is intended as a
transitional form, recording a configuration setting that _might_ be
explicitly UTF-8 or might have the legacy 'shrug, whatever' semantics,
depending on where we got it from.

My general migration plan is that first I _enable_ Unicode support in
a Conf item, by turning it into STR_AMBI; the Unicode version of the
string (if any) is saved in a new location, and a best-effort
local-charset version is saved where it's always been. That way new
PuTTY can read the Unicode version, and old PuTTY reading that
configuration will behave no worse than it would have done already.

It would be nice to think that in the far future we've migrated
everything to STR_AMBI and can move them all to mandatory UTF-8,
obsoleting the old configuration. I think it's more likely we'll never
get there. But at least _new_ Conf items, with no backwards
compatibility requirement in the first place, can be CONF_TYPE_UTF8
where appropriate.

(In conf_get_str_ambi(), I considered making it mandatory via assert()
to pass the 'utf8' output pointer as non-NULL, to defend against lazy
adaptation of existing code by just changing the function call. But in
fact I think there's a legitimate use case for not caring if the
output is UTF-8 or not, because some of the existing SSH code
currently just shoves strings like usernames directly on to the wire
whether they're in the right encoding or not; so if you want to do the
correct UTF-8 thing where possible and preserve legacy behaviour if
not, then treating both classes of string the same _is_ the right
thing to do.)

This also requires linking the Unicode support into many Unix
applications that hadn't previously needed it.
2024-09-26 11:30:07 +01:00
..
stubs Add lots more stub versions of standard code modules. 2023-05-29 15:54:34 +01:00
utils Add platform-independent fontspec_new_default() function. 2023-02-18 14:10:21 +00:00
agent-client.c Formatting: realign labels and case/default statements. 2022-08-03 20:48:46 +01:00
agent-socket.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
askpass.c Rewrite some manual char-buffer-handling code. 2022-09-14 16:10:29 +01:00
cliloop.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
CMakeLists.txt Add two new string types to the Conf system. 2024-09-26 11:30:07 +01:00
columns.c GTK: fix y computation in align_next_to. 2022-09-06 11:39:01 +01:00
columns.h Improve the align_next_to mechanism. 2022-05-05 19:04:34 +01:00
config-gtk.c Replace integer context2 encoding in conf_editbox_handler. 2022-09-01 20:43:23 +01:00
config-unix.c Restructure dlgcontrol as a struct with an anon union. 2022-05-01 10:00:32 +01:00
console.c Merge tag '0.80'. 2023-12-18 14:47:48 +00:00
dialog.c Merge tag '0.80'. 2023-12-18 14:47:48 +00:00
fd-socket.c Centralise stub plug/socket functions. 2024-06-29 12:19:35 +01:00
gss.c Unix static GSSAPI: fix an uninitialised structure field. 2022-09-17 07:55:05 +01:00
gtk-common.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
gtkcompat.h Fix build failure on Debian bullseye from last commit. 2024-09-08 19:05:45 +01:00
gtkmisc.h Convert a lot of 'int' variables to 'bool'. 2018-11-03 13:45:00 +00:00
keygen-noise.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
local-proxy.c New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
main-gtk-application.c Fix build failure on Debian bullseye from last commit. 2024-09-08 19:05:45 +01:00
main-gtk-simple.c Formatting: normalise to put a space after condition keywords. 2022-12-28 15:32:24 +00:00
network.c Pass the calling Socket to plug_log. 2024-06-29 12:00:12 +01:00
no-gtk.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
noaskpass.c Better header comment for noaskpass.c. 2022-05-20 19:35:59 +01:00
noise.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
osxlaunch.c osxlaunch: stop setting DYLD_LIBRARY_PATH. 2017-12-20 10:04:02 +00:00
pageant.c pageant --foreground: close stdout after printing env setup. 2024-09-23 09:33:00 +01:00
peerinfo.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
platform.h Merge tag '0.80'. 2023-12-18 14:47:48 +00:00
plink.c Add platform-independent fontspec_new_default() function. 2023-02-18 14:10:21 +00:00
printing.c Rename 'ret' variables passed from allocation to return. 2022-09-14 16:10:29 +01:00
procnet.c Generalise strbuf_catf() into put_fmt(). 2021-11-19 11:32:47 +00:00
psocks.c Remove a couple of double-typedefs. 2023-08-27 10:45:54 +01:00
psusan.c Pass the calling Socket to plug_log. 2024-06-29 12:00:12 +01:00
pterm-config-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
pterm-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
pterm.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
pterm.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
pterm.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pty.c Rewrite some manual char-buffer-handling code. 2022-09-14 16:10:29 +01:00
putty-config-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
putty-xpm.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
putty.bundle OS X makefile: stop depending on JHBUILD_PREFIX. 2017-11-26 11:45:48 +00:00
putty.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
putty.plist Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
serial.c Add memsets after allocation of all Backend implementors. 2021-10-30 17:28:28 +01:00
sftp.c Add platform-independent fontspec_new_default() function. 2023-02-18 14:10:21 +00:00
sftpserver.c Fix build failure on systems without fstatat. 2023-01-18 18:06:45 +00:00
sharing.c Pass an Interactor to new_connection(). 2021-10-30 18:19:56 +01:00
storage.c Rewrite some manual char-buffer-handling code. 2022-09-14 16:10:29 +01:00
unicode.c Rework Unicode conversion APIs to use a BinarySink. 2024-09-26 11:30:07 +01:00
unifont.c Rework Unicode conversion APIs to use a BinarySink. 2024-09-26 11:30:07 +01:00
unifont.h Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
uppity.c Pass the calling Socket to plug_log. 2024-06-29 12:00:12 +01:00
uxsel.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
window.c Rework Unicode conversion APIs to use a BinarySink. 2024-09-26 11:30:07 +01:00
x11.c Make x11_get_auth_from_authfile take a Filename. 2023-05-29 15:41:50 +01:00
x11misc.h Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00