Skip to content

Commit f4872f9

Browse files
committed
common: return location of a ".setconfig" file when we load config.
This is where we will put all the dynamic settings. Signed-off-by: Rusty Russell <[email protected]>
1 parent da2fb19 commit f4872f9

File tree

4 files changed

+27
-7
lines changed

4 files changed

+27
-7
lines changed

common/configdir.c

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ static struct configvar **gather_file_configvars(const tal_t *ctx,
5757
enum configvar_src src,
5858
const char *filename,
5959
bool must_exist,
60+
char **setconfig_file,
6061
size_t include_depth)
6162
{
6263
char *contents, **lines;
@@ -72,6 +73,13 @@ static struct configvar **gather_file_configvars(const tal_t *ctx,
7273
return cvs;
7374
}
7475

76+
/* First .setconfig file is used for setconfig command */
77+
if (setconfig_file
78+
&& *setconfig_file == NULL
79+
&& strends(filename, ".setconfig")) {
80+
*setconfig_file = tal_strdup(ctx, filename);
81+
}
82+
7583
/* Break into lines. */
7684
lines = tal_strsplit(contents, contents, "\r\n", STR_EMPTY_OK);
7785
for (size_t i = 0; i < tal_count(lines) - 1; i++) {
@@ -93,6 +101,7 @@ static struct configvar **gather_file_configvars(const tal_t *ctx,
93101
take(path_dirname(NULL, filename)),
94102
included),
95103
true,
104+
setconfig_file,
96105
include_depth + 1);
97106
cvs = configvar_join(ctx, take(cvs), take(sub));
98107
continue;
@@ -291,7 +300,7 @@ void minimal_config_opts(const tal_t *ctx,
291300
config_filename,
292301
basedir,
293302
config_netdir,
294-
rpc_filename);
303+
rpc_filename, NULL);
295304
tal_steal(ctx, *config_filename);
296305
tal_steal(ctx, *basedir);
297306
tal_steal(ctx, *config_netdir);
@@ -304,7 +313,8 @@ struct configvar **initial_config_opts(const tal_t *ctx,
304313
char **config_filename,
305314
char **config_basedir,
306315
char **config_netdir,
307-
char **rpc_filename)
316+
char **rpc_filename,
317+
char **setconfig_file)
308318
{
309319
struct configvar **cmdline_cvs, **config_cvs, **cvs;
310320

@@ -360,19 +370,24 @@ struct configvar **initial_config_opts(const tal_t *ctx,
360370
cmdline_cvs = gather_cmdline_args(tmpctx, argc, argv, remove_args);
361371
parse_configvars(cmdline_cvs, true, false, false);
362372

373+
if (setconfig_file)
374+
*setconfig_file = NULL;
375+
363376
/* Base default or direct config can set network */
364377
if (*config_filename) {
365378
config_cvs = gather_file_configvars(NULL,
366379
CONFIGVAR_EXPLICIT_CONF,
367-
*config_filename, true, 0);
380+
*config_filename, true,
381+
setconfig_file, 0);
368382
} else {
369383
struct configvar **base_cvs, **net_cvs;
370384
char *dir = path_join(tmpctx, take(path_cwd(NULL)), *config_basedir);
371385
/* Optional: .lightning/config */
372386
base_cvs = gather_file_configvars(tmpctx,
373387
CONFIGVAR_BASE_CONF,
374388
path_join(tmpctx, dir, "config"),
375-
false, 0);
389+
false,
390+
setconfig_file, 0);
376391
/* This might set network! */
377392
parse_configvars(configvar_join(tmpctx, base_cvs, cmdline_cvs),
378393
true, false, false);
@@ -382,7 +397,7 @@ struct configvar **initial_config_opts(const tal_t *ctx,
382397
net_cvs = gather_file_configvars(tmpctx,
383398
CONFIGVAR_NETWORK_CONF,
384399
path_join(tmpctx, dir, "config"),
385-
false, 0);
400+
false, setconfig_file, 0);
386401
config_cvs = configvar_join(NULL, take(base_cvs), take(net_cvs));
387402
}
388403
cvs = configvar_join(ctx, take(config_cvs), cmdline_cvs);

common/configdir.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ struct configvar **initial_config_opts(const tal_t *ctx,
2727
char **config_filename,
2828
char **config_basedir,
2929
char **config_netdir,
30-
char **rpc_filename);
30+
char **rpc_filename,
31+
char **setconfig_file);
3132

3233
/* This is called before we know all the options. */
3334
void parse_configvars_early(struct configvar **cvs, bool developer);

lightningd/lightningd.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ struct lightningd {
117117
/* Our config basedir, network directory, and rpc file */
118118
char *config_basedir, *config_netdir;
119119

120+
/* Where setconfig() should write to (or NULL if not set up yet) */
121+
char *setconfig_file;
122+
120123
/* Location of the RPC socket. */
121124
char *rpc_filename;
122125
/* Mode of the RPC filename. */

lightningd/options.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1861,7 +1861,8 @@ void handle_early_opts(struct lightningd *ld, int argc, char *argv[])
18611861
&ld->config_filename,
18621862
&ld->config_basedir,
18631863
&ld->config_netdir,
1864-
&ld->rpc_filename);
1864+
&ld->rpc_filename,
1865+
&ld->setconfig_file);
18651866

18661867
if (argc != 1)
18671868
errx(1, "no arguments accepted");

0 commit comments

Comments
 (0)