mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-05-28 15:24:49 -05:00
Better error reporting when failing to save a session.
[originally from svn r9937]
This commit is contained in:
parent
13bac5ed69
commit
407fd7b9ab
@ -166,25 +166,31 @@ void *open_settings_w(const char *sessionname, char **errmsg)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Start by making sure the .putty directory and its sessions
|
* Start by making sure the .putty directory and its sessions
|
||||||
* subdir actually exist. Ignore error returns from mkdir since
|
* subdir actually exist.
|
||||||
* they're perfectly likely to be `already exists', and any
|
|
||||||
* other error will trip us up later on so there's no real need
|
|
||||||
* to catch it now.
|
|
||||||
*/
|
*/
|
||||||
|
filename = make_filename(INDEX_DIR, NULL);
|
||||||
|
if (mkdir(filename, 0700) < 0 && errno != EEXIST) {
|
||||||
|
*errmsg = dupprintf("Unable to save session: mkdir(\"%s\") "
|
||||||
|
"returned '%s'", filename, strerror(errno));
|
||||||
|
sfree(filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
sfree(filename);
|
||||||
|
|
||||||
filename = make_filename(INDEX_SESSIONDIR, NULL);
|
filename = make_filename(INDEX_SESSIONDIR, NULL);
|
||||||
if (mkdir(filename, 0700) != 0) {
|
if (mkdir(filename, 0700) < 0 && errno != EEXIST) {
|
||||||
char *filename2 = make_filename(INDEX_DIR, NULL);
|
*errmsg = dupprintf("Unable to save session: mkdir(\"%s\") "
|
||||||
mkdir(filename2, 0700);
|
"returned '%s'", filename, strerror(errno));
|
||||||
sfree(filename2);
|
sfree(filename);
|
||||||
mkdir(filename, 0700);
|
return NULL;
|
||||||
}
|
}
|
||||||
sfree(filename);
|
sfree(filename);
|
||||||
|
|
||||||
filename = make_filename(INDEX_SESSION, sessionname);
|
filename = make_filename(INDEX_SESSION, sessionname);
|
||||||
fp = fopen(filename, "w");
|
fp = fopen(filename, "w");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
*errmsg = dupprintf("Unable to create %s: %s",
|
*errmsg = dupprintf("Unable to save session: open(\"%s\") "
|
||||||
filename, strerror(errno));
|
"returned '%s'", filename, strerror(errno));
|
||||||
sfree(filename);
|
sfree(filename);
|
||||||
return NULL; /* can't open */
|
return NULL; /* can't open */
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user