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,6 +90,7 @@
90 90
91 strcpy(new_session->filename,filename); 91 strcpy(new_session->filename,filename);
92 new_session->key_file = g_key_file_new(); 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 // Load file 95 // Load file
95 if(g_file_test(new_session->filename,G_FILE_TEST_IS_REGULAR)) { 96 if(g_file_test(new_session->filename,G_FILE_TEST_IS_REGULAR)) {
@@ -120,46 +121,40 @@ @@ -120,46 +121,40 @@
120 #endif // DEBUG 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 #ifdef _WIN32 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 #else 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 return new_session; 160 return new_session;