1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
putty-source/windows
Simon Tatham 8bd75b85ed Some support for wide-character filenames in Windows.
The Windows version of the Filename structure now contains three
versions of the pathname, in UTF-16, UTF-8 and the system code page.
Callers can use whichever is most convenient.

All uses of filenames for actually opening files now use the UTF-16
version, which means they can tolerate 'exotic' filenames, by which I
mean those including Unicode characters outside the host system's
CP_ACP default code page.

Other uses of Filename structures inside the 'windows' subdirectory do
something appropriate, e.g. when printing a filename inside a message
box or a console message, we use the UTF-8 version of the filename
with the UTF-8 version of the appropriate API.

There are three remaining pieces to full Unicode filename support:

One is that the cross-platform code has many calls to
filename_to_str(), embodying the assumption that a file name can be
reliably converted into the unspecified current character set; those
will all need changing in some way.

Another is that write_setting_filename(), in windows/storage.c, still
saves filenames to the Registry as an ordinary REG_SZ in the system
code page. So even if an exotic filename were stored in a Conf, that
Conf couldn't round-trip via the Registry and back without corrupting
that filename by coercing it back to a string that fits in CP_ACP and
therefore doesn't represent the same file. This can't be fixed without
a compatibility break in the storage format, and I don't want to make
a minimal change in that area: if we're going to break compatibility,
then we should break it good and hard (the Nanny Ogg principle), and
devise a completely fresh storage representation that fixes as many
other legacy problems as possible at the same time. So that's my plan,
not yet started.

The final point, much more obviously, is that we're still short of
methods to _construct_ any Filename structures using a Unicode input
string! It should now work to enter one in the GUI configurer (either
by manual text input or via the file selector), but it won't
round-trip through a save and load (as discussed above), and there's
still no way to specify one on the command line (the groundwork is
laid by commit 10e1ac7752 but not yet linked up).

But this is a start.
2023-05-29 15:41:50 +01:00
..
test Start a windows/test subdirectory. 2023-03-15 19:40:23 +00:00
utils Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
agent-client.c Formatting: standardise on "func(\n", not "func\n(". 2022-08-03 20:48:46 +01:00
cliloop.c Reorganise Windows HANDLE management. 2021-05-24 15:27:38 +01:00
CMakeLists.txt Add a Unicode version of split_into_argv(). 2023-03-16 17:33:49 +00:00
config.c Macro wrapper on ctrl_radiobuttons to fill in the NULL. 2022-06-01 11:14:21 +01:00
conpty.c pterm.exe: load the ConPTY API at run time. 2022-05-21 09:53:03 +01:00
console.c Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
controls.c Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
cryptoapi.h Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
dialog.c Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
gss.c Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
handle-io.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
handle-socket.c New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
handle-wait.c Fix an unused variable. 2021-05-27 09:48:32 +01:00
help.c Fix potential corruption when writing help file. 2023-04-19 14:28:36 +01:00
help.h Work around key algorithm naming change in OpenSSH <= 7.7. 2023-05-05 00:05:28 +01:00
help.rc2 Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
installer.wxs Windows installer: restore InstallScope setting. 2023-04-19 14:28:36 +01:00
jump-list.c Formatting: miscellaneous. 2022-08-03 20:48:46 +01:00
local-proxy.c New facility, platform_start_subprocess. 2022-09-01 20:43:23 +01:00
make_install_images.sh Remove white dialog background in MSI user interface. 2020-06-21 16:39:47 +01:00
msifixup.py Remove white dialog background in MSI user interface. 2020-06-21 16:39:47 +01:00
named-pipe-client.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
named-pipe-server.c Rename 'ret' variables passed from allocation to return. 2022-09-14 16:10:29 +01:00
network.c Formatting: normalise to { on same line. 2022-12-28 15:37:57 +00:00
no-jump-list.c Add some missing #includes. 2022-09-03 11:59:12 +01:00
nohelp.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
noise.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
pageant-rc.h winpgnt: say 'click to focus' in async passphrase prompt. 2021-04-22 20:00:46 +01:00
pageant.c Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
pageant.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
pageant.mft Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
pageant.rc Certificate-aware handling of key fingerprints. 2022-08-05 18:08:59 +01:00
pageants.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
platform.h Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
plink.c Handle the -batch option centrally in cmdline.c. 2022-11-26 10:31:18 +00:00
plink.rc `win-versioninfo': all builds of all Windows binaries now contain 2005-10-04 14:13:28 +00:00
printing.c Rename 'ret' variables passed from allocation to return. 2022-09-14 16:10:29 +01:00
pscp.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
pscp.rc `win-versioninfo': all builds of all Windows binaries now contain 2005-10-04 14:13:28 +00:00
psftp.rc `win-versioninfo': all builds of all Windows binaries now contain 2005-10-04 14:13:28 +00:00
psocks.c Rename most of the platform source files. 2021-04-26 18:00:01 +01:00
pterm.c split_into_argv: add special case for program name. 2022-11-26 10:32:36 +00:00
pterm.ico Make Windows versions of the pterm icons. 2021-05-08 17:33:25 +01:00
pterm.rc New application: a Windows version of 'pterm'! 2021-05-08 17:51:27 +01:00
ptermcfg.ico Make Windows versions of the pterm icons. 2021-05-08 17:33:25 +01:00
putty-common.rc2 Windows host-key warning: reinstate shortcut. 2022-10-21 20:41:36 +01:00
putty-rc.h Centralise most details of host-key prompting. 2022-07-07 18:05:32 +01:00
putty.c Add UTF-8 flag to the Windows message_box() wrapper. 2023-05-29 15:08:48 +01:00
putty.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
putty.mft Windows 10: add per monitor DPI awareness support. 2021-04-02 19:04:19 +01:00
putty.rc Move icon declarations out of putty-common.rc2. 2021-05-08 17:33:25 +01:00
puttycfg.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
puttygen-rc.h PuTTYgen: option to control Argon2 flavour. 2021-02-23 18:26:50 +00:00
puttygen.c Add UTF-8 flag to the Windows message_box() wrapper. 2023-05-29 15:08:48 +01:00
puttygen.ico Tweak the icon script, and the generated icons, to more closely 2007-01-07 10:17:12 +00:00
puttygen.mft Whitespace rationalisation of entire code base. 2019-09-08 20:29:21 +01:00
puttygen.rc Windows PuTTYgen: also display certificate info. 2022-07-30 17:16:55 +01:00
puttyins.ico `installer.ico' doesn't fit into 8.3, so gets truncated to INSTALLE.ICO in 2007-02-06 22:39:15 +00:00
puttytel.mft Windows 10: add per monitor DPI awareness support. 2021-04-02 19:04:19 +01:00
puttytel.rc Move icon declarations out of putty-common.rc2. 2021-05-08 17:33:25 +01:00
rcstuff.h Replace mkfiles.pl with a CMake build system. 2021-04-17 13:53:02 +01:00
README-msi.txt Remove note about .CHM on network drives. 2019-03-18 21:53:45 +00:00
security-api.h Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
select-cli.c Update source file names in comments and docs. 2022-01-22 15:51:31 +00:00
select-gui.c Handle WM_NETEVENT in Windows Pageant. 2022-02-04 19:32:47 +00:00
serial.c Add memsets after allocation of all Backend implementors. 2021-10-30 17:28:28 +01:00
sftp.c Formatting: normalise to put a space after condition keywords. 2022-12-28 15:32:24 +00:00
sharing.c Windows: factor out mutex lock/unlock from sharing.c. 2022-01-03 12:12:05 +00:00
sizetip.c Formatting change to braces around one case of a switch. 2020-02-16 11:26:21 +00:00
storage.c Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
unicode.c Add some missing casts in ctype functions. 2023-04-19 14:28:36 +01:00
version.rc2 FIXME about Windows resource CHMfulness hint. 2019-03-18 22:02:13 +00:00
website.url Switch chiark URLs to https. 2017-05-07 16:29:01 +01:00
win-gui-seat.h windows/window.c: move more variables into WinGuiSeat. 2023-05-27 17:45:15 +01:00
window.c Some support for wide-character filenames in Windows. 2023-05-29 15:41:50 +01:00
x11.c Make x11_get_auth_from_authfile take a Filename. 2023-05-29 15:41:50 +01:00