Commit 635047f1fbd502b1baedc13f8c609e1d55d92f0d

Authored by Perry Werneck
1 parent 6e919b3e

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