+static void conf_load_global_settings(void) {
+ JSONValue *settings = json_obj_get(uwp_config, "settings");
+ if(!settings) {
+ return;
+ }
+
+ if(settings->type != JSON_OBJECT) {
+ fprintf(stderr, "Warning: 'settings' not an object\n");
+ return;
+ }
+
+ JSONObject *s = &settings->value.object;
+
+ for(size_t i=0;i<s->size;i++) {
+ JSONObjValue *gs = &s->values[i];
+ if(gs->value->type == JSON_STRING) {
+ cxMapPut(uwp_settings, cx_hash_key_str(gs->name), strdup(gs->value->value.string.string));
+ }
+ }
+}
+
+static char* get_which_output(FILE *f, CxBuffer *buf) {
+ buf->pos = 0;
+ buf->size = 0;
+ cx_stream_copy(f, buf, (cx_read_func)fread, (cx_write_func)cxBufferWrite);
+ if(!pclose(f)) {
+ cxBufferPut(buf, 0);
+ size_t i;
+ for(i=0;i<buf->pos;i++) {
+ if(buf->space[i] == '\n') {
+ buf->space[i] = 0;
+ break;
+ }
+ }
+ return buf->space;
+ }
+ return NULL;
+}
+
+static Boolean finish_bin_search(XtPointer data) {
+ PlayerInfo *playerInfo = data;
+ cxMapPut(uwp_settings, cx_hash_key_str(UWP_PLAYER_BIN), playerInfo->bin);
+ cxMapPut(uwp_settings, cx_hash_key_str(UWP_PLAYER_TYPE), playerInfo->type);
+ free(playerInfo);
+ return 0;
+}
+