1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-16 18:47:32 -05:00

Change type of CONF_username to the new CONF_TYPE_STR_AMBI.

This is the pathfinding change that proves it's possible for _one_
Conf setting to become Unicode-capable.

That seems like quite a small reward for all the refactoring in the
previous patches this week! But changing over one configuration
setting is enough to get started with: once all the bugs are out of
this one, we can try switching over some more.

Changing the type to CONF_TYPE_STR_AMBI is enough by itself to make
the configuration dialog box write it into Conf as UTF-8, because
conf_editbox_handler automatically checks whether that possibility is
available. However, setting the same Conf entry from the command line
isn't automatic: I had to add code in the handler for the -l
command-line option in cmdline.c.

This commit also doesn't yet handle the _other_ way to specify a
username on the command line: including it as part of the hostname
argument via "putty user@host" or similar. That's more difficult,
because it also requires deciding what to do about UTF-8 in the actual
hostname.

(That looks as if it ought to be possible: Windows should be able to
handle looking up Unicode hostnames if you use GetAddrInfoW() in place
of getaddrinfo(). But plumbing it through everything in between
cmdline.c and windows/network.c is a bigger job than I'm prepared to
do in this proof-of-concept commit.)
This commit is contained in:
Simon Tatham
2024-09-23 16:59:11 +01:00
parent 841bf321d4
commit b57fb48b27
6 changed files with 12 additions and 6 deletions

View File

@ -112,7 +112,9 @@ const struct BackendVtable *backend_vt_from_proto(int proto)
char *get_remote_username(Conf *conf)
{
char *username = conf_get_str(conf, CONF_username);
/* We don't worry about whether the username is stored as UTF-8,
* because SSH wants it as UTF-8 */
char *username = conf_get_str_ambi(conf, CONF_username, NULL);
if (*username) {
return dupstr(username);
} else if (conf_get_bool(conf, CONF_username_from_env)) {