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; | ... | ... |