projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update to use -title rather than -T
[u/mdw/putty]
/
winstore.c
diff --git
a/winstore.c
b/winstore.c
index
a69d58d
..
b6f98f5
100644
(file)
--- a/
winstore.c
+++ b/
winstore.c
@@
-61,25
+61,35
@@
static void unmungestr(const char *in, char *out, int outlen)
return;
}
return;
}
-void *open_settings_w(const char *sessionname)
+void *open_settings_w(const char *sessionname
, char **errmsg
)
{
HKEY subkey1, sesskey;
int ret;
char *p;
{
HKEY subkey1, sesskey;
int ret;
char *p;
- p = smalloc(3 * strlen(sessionname) + 1);
+ *errmsg = NULL;
+
+ if (!sessionname || !*sessionname)
+ sessionname = "Default Settings";
+
+ p = snewn(3 * strlen(sessionname) + 1, char);
mungestr(sessionname, p);
ret = RegCreateKey(HKEY_CURRENT_USER, puttystr, &subkey1);
if (ret != ERROR_SUCCESS) {
sfree(p);
mungestr(sessionname, p);
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);
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 NULL;
+ }
return (void *) sesskey;
}
return (void *) sesskey;
}
@@
-107,7
+117,10
@@
void *open_settings_r(const char *sessionname)
HKEY subkey1, sesskey;
char *p;
HKEY subkey1, sesskey;
char *p;
- p = smalloc(3 * strlen(sessionname) + 1);
+ if (!sessionname || !*sessionname)
+ sessionname = "Default Settings";
+
+ p = snewn(3 * strlen(sessionname) + 1, char);
mungestr(sessionname, p);
if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &subkey1) != ERROR_SUCCESS) {
mungestr(sessionname, p);
if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &subkey1) != ERROR_SUCCESS) {
@@
-225,7
+238,7
@@
void del_settings(const char *sessionname)
if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &subkey1) != ERROR_SUCCESS)
return;
if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &subkey1) != ERROR_SUCCESS)
return;
- p = s
malloc(3 * strlen(sessionname) + 1
);
+ p = s
newn(3 * strlen(sessionname) + 1, char
);
mungestr(sessionname, p);
RegDeleteKey(subkey1, p);
sfree(p);
mungestr(sessionname, p);
RegDeleteKey(subkey1, p);
sfree(p);
@@
-246,7
+259,7
@@
void *enum_settings_start(void)
if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &key) != ERROR_SUCCESS)
return NULL;
if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &key) != ERROR_SUCCESS)
return NULL;
- ret = s
malloc(sizeof(*ret)
);
+ ret = s
new(struct enumsettings
);
if (ret) {
ret->key = key;
ret->i = 0;
if (ret) {
ret->key = key;
ret->i = 0;
@@
-259,7
+272,7
@@
char *enum_settings_next(void *handle, char *buffer, int buflen)
{
struct enumsettings *e = (struct enumsettings *) handle;
char *otherbuf;
{
struct enumsettings *e = (struct enumsettings *) handle;
char *otherbuf;
- otherbuf = s
malloc(3 * buflen
);
+ otherbuf = s
newn(3 * buflen, char
);
if (RegEnumKey(e->key, e->i++, otherbuf, 3 * buflen) == ERROR_SUCCESS) {
unmungestr(otherbuf, buffer, buflen);
sfree(otherbuf);
if (RegEnumKey(e->key, e->i++, otherbuf, 3 * buflen) == ERROR_SUCCESS) {
unmungestr(otherbuf, buffer, buflen);
sfree(otherbuf);
@@
-304,8
+317,8
@@
int verify_host_key(const char *hostname, int port,
* Now read a saved key in from the registry and see what it
* says.
*/
* Now read a saved key in from the registry and see what it
* says.
*/
- otherstr = s
malloc(len
);
- regname = s
malloc(3 * (strlen(hostname) + strlen(keytype)) + 15
);
+ otherstr = s
newn(len, char
);
+ regname = s
newn(3 * (strlen(hostname) + strlen(keytype)) + 15, char
);
hostkey_regname(regname, hostname, port, keytype);
hostkey_regname(regname, hostname, port, keytype);
@@
-324,7
+337,7
@@
int verify_host_key(const char *hostname, int port,
* under just the hostname and translate that.
*/
char *justhost = regname + 1 + strcspn(regname, ":");
* under just the hostname and translate that.
*/
char *justhost = regname + 1 + strcspn(regname, ":");
- char *oldstyle = s
malloc(len + 10);
/* safety margin */
+ char *oldstyle = s
newn(len + 10, char);
/* safety margin */
readlen = len;
ret = RegQueryValueEx(rkey, justhost, NULL, &type,
oldstyle, &readlen);
readlen = len;
ret = RegQueryValueEx(rkey, justhost, NULL, &type,
oldstyle, &readlen);
@@
-400,7
+413,7
@@
void store_host_key(const char *hostname, int port,
char *regname;
HKEY rkey;
char *regname;
HKEY rkey;
- regname = s
malloc(3 * (strlen(hostname) + strlen(keytype)) + 15
);
+ regname = s
newn(3 * (strlen(hostname) + strlen(keytype)) + 15, char
);
hostkey_regname(regname, hostname, port, keytype);
hostkey_regname(regname, hostname, port, keytype);