X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/3d88e64dfcf5dc0fd361ce0c504c67a9196ce44c..7440fd4419acfc9c784f142fb9dee3e64c9a18c2:/winstore.c diff --git a/winstore.c b/winstore.c index 90d262fe..553f474e 100644 --- a/winstore.c +++ b/winstore.c @@ -3,7 +3,6 @@ * defined in storage.h. */ -#include #include #include #include @@ -61,12 +60,14 @@ static void unmungestr(const char *in, char *out, int outlen) return; } -void *open_settings_w(const char *sessionname) +void *open_settings_w(const char *sessionname, char **errmsg) { HKEY subkey1, sesskey; int ret; char *p; + *errmsg = NULL; + if (!sessionname || !*sessionname) sessionname = "Default Settings"; @@ -76,13 +77,18 @@ void *open_settings_w(const char *sessionname) ret = RegCreateKey(HKEY_CURRENT_USER, puttystr, &subkey1); if (ret != ERROR_SUCCESS) { sfree(p); + *errmsg = dupprintf("Unable to create registry key\n" + "HKEY_CURRENT_USER%s", puttystr); return NULL; } ret = RegCreateKey(subkey1, p, &sesskey); sfree(p); RegCloseKey(subkey1); - if (ret != ERROR_SUCCESS) + if (ret != ERROR_SUCCESS) { + *errmsg = dupprintf("Unable to create registry key\n" + "HKEY_CURRENT_USER%s\\%s", puttystr, p); return NULL; + } return (void *) sesskey; }