static bool read_config_file(const char *cfg_fn) { FILE *cfg = fopen(cfg_fn, "r"); if (!cfg) return false; bool rc = false; char line[1024]; while (fgets(line, sizeof(line), cfg) != NULL) { char *key, *value; if (line[0] == '#') continue; while (line[0] && (isspace(line[strlen(line) - 1]))) line[strlen(line) - 1] = 0; if (!parse_kvstr(line, &key, &value)) continue; g_hash_table_replace(settings, key, value); } rc = ferror(cfg) == 0; fclose(cfg); return rc; }
static bool do_setting(const char *arg) { char *key, *value; if (!parse_kvstr(arg, &key, &value)) return false; bp_hashtab_put(settings, key, value); /* * trigger special setting-specific behaviors */ if (!strcmp(key, "debug")) debugging = true; else if (!strcmp(key, "config") || !strcmp(key, "c")) return read_config_file(value); return true; }
static bool do_setting(const char *arg) { char *key, *value; if (!parse_kvstr(arg, &key, &value)) return false; g_hash_table_replace(settings, key, value); /* * trigger special setting-specific behaviors */ if (!strcmp(key, "config") || !strcmp(key, "c")) return read_config_file(value); /* clear previous wallet, if new wallet file seen */ if (!strcmp(key, "wallet") || !strcmp(key, "w")) cur_wallet_free(); return true; }