Commit 635047f1fbd502b1baedc13f8c609e1d55d92f0d
1 parent
6e919b3e
Exists in
master
and in
2 other branches
Fix loading of default settings.
Showing
1 changed file
with
22 additions
and
27 deletions
Show diff stats
src/objects/window/keyfile.c
| ... | ... | @@ -90,6 +90,7 @@ |
| 90 | 90 | |
| 91 | 91 | strcpy(new_session->filename,filename); |
| 92 | 92 | new_session->key_file = g_key_file_new(); |
| 93 | + g_object_set_data_full(G_OBJECT(terminal),"session-descriptor",new_session,(GDestroyNotify) close_keyfile); | |
| 93 | 94 | |
| 94 | 95 | // Load file |
| 95 | 96 | if(g_file_test(new_session->filename,G_FILE_TEST_IS_REGULAR)) { |
| ... | ... | @@ -120,46 +121,40 @@ |
| 120 | 121 | #endif // DEBUG |
| 121 | 122 | } |
| 122 | 123 | |
| 123 | - new_session->changed = TRUE; | |
| 124 | - | |
| 125 | 124 | } |
| 126 | 125 | |
| 127 | - g_object_set_data_full(G_OBJECT(terminal),"session-descriptor",new_session,(GDestroyNotify) close_keyfile); | |
| 128 | - if(new_session->changed) { | |
| 129 | - v3270_key_file_save(terminal,error); | |
| 126 | + if(*error) { | |
| 127 | + g_warning("Error '%s' loading keyfile", (*error)->message); | |
| 128 | + return new_session; | |
| 130 | 129 | } |
| 131 | 130 | |
| 132 | - if(!*error) { | |
| 131 | + // Got key file, load it. | |
| 132 | + v3270_load_key_file(terminal,new_session->key_file,NULL); | |
| 133 | + v3270_accelerator_map_load_key_file(terminal,new_session->key_file,NULL); | |
| 133 | 134 | |
| 134 | - // Got key file, load it. | |
| 135 | - v3270_load_key_file(terminal,new_session->key_file,NULL); | |
| 136 | - v3270_accelerator_map_load_key_file(terminal,new_session->key_file,NULL); | |
| 135 | + if(g_key_file_has_group(new_session->key_file,"environment")) { | |
| 137 | 136 | |
| 138 | - if(g_key_file_has_group(new_session->key_file,"environment")) { | |
| 137 | + // Has environment group, set values. | |
| 138 | + gchar **keys = g_key_file_get_keys(new_session->key_file,"environment",NULL,NULL); | |
| 139 | 139 | |
| 140 | - // Has environment group, set values. | |
| 141 | - gchar **keys = g_key_file_get_keys(new_session->key_file,"environment",NULL,NULL); | |
| 142 | - | |
| 143 | - if(keys) { | |
| 144 | - size_t ix; | |
| 145 | - for(ix=0;keys[ix];ix++) { | |
| 146 | - g_autofree gchar * value = g_key_file_get_string(new_session->key_file,"environment",keys[ix],NULL); | |
| 147 | - if(value) { | |
| 140 | + if(keys) { | |
| 141 | + size_t ix; | |
| 142 | + for(ix=0;keys[ix];ix++) { | |
| 143 | + g_autofree gchar * value = g_key_file_get_string(new_session->key_file,"environment",keys[ix],NULL); | |
| 144 | + if(value) { | |
| 148 | 145 | #ifdef _WIN32 |
| 149 | - g_autofree gchar * env = g_strconcat(keys[ix],"=",value,NULL); | |
| 150 | - putenv(env); | |
| 146 | + g_autofree gchar * env = g_strconcat(keys[ix],"=",value,NULL); | |
| 147 | + putenv(env); | |
| 151 | 148 | #else |
| 152 | - if(setenv(keys[ix],value,1)) { | |
| 153 | - g_warning("Can't set \"%s\" to \"%s\"",keys[ix],value); | |
| 154 | - } | |
| 155 | -#endif // _WIN32 | |
| 149 | + if(setenv(keys[ix],value,1)) { | |
| 150 | + g_warning("Can't set \"%s\" to \"%s\"",keys[ix],value); | |
| 156 | 151 | } |
| 152 | +#endif // _WIN32 | |
| 157 | 153 | } |
| 158 | - | |
| 159 | - g_strfreev(keys); | |
| 160 | 154 | } |
| 161 | - } | |
| 162 | 155 | |
| 156 | + g_strfreev(keys); | |
| 157 | + } | |
| 163 | 158 | } |
| 164 | 159 | |
| 165 | 160 | return new_session; | ... | ... |