Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configuration rework #6243

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
a8c023e
common: allow optional fields in json_scan().
rustyrussell Jun 1, 2023
01bf660
lightningd: remove deprecated `null` for missing plugin options.
rustyrussell Jun 1, 2023
6fc4559
pyln-client: don't try to convert objects to Millisatoshi.
rustyrussell Jun 1, 2023
7d6dde5
bcli: fix type of rpcport.
rustyrussell Jun 1, 2023
91d9148
ccan: update to latest ccan/opt
rustyrussell Jun 1, 2023
30074d7
lightningd: simplify listconfigs loop.
rustyrussell Jun 1, 2023
e298287
lightningd: implement more show commands to reduce listconfigs specia…
rustyrussell Jun 1, 2023
dc5d38e
common/configvar: routines to manage config settings.
rustyrussell Jun 1, 2023
1c95880
lightningd: explicitly note what parameters can be specified multiple…
rustyrussell Jun 1, 2023
4b1f35a
dev-allowdustreserve: make this a DEVELOPER option.
rustyrussell Jun 1, 2023
b841f17
lightningd: explicitly mark developer-only options with OPT_DEV.
rustyrussell Jun 1, 2023
2997fcc
lightningd: switch parsing to common/configvar
rustyrussell Jun 2, 2023
a20644a
lightningd: allow --regtest.
rustyrussell Jun 2, 2023
abb94b7
lightningd: make `--clear-plugins` override prior plugin configvars.
rustyrussell Jun 2, 2023
727b3d8
lightningd: use OPT_EXITS for options which exit.
rustyrussell Jun 2, 2023
bd8ca09
lightningd: annotate configuration settings which contain JSON literals.
rustyrussell Jun 2, 2023
b8497fe
lightningd: fix `listconfigs` `rpc-file-mode`
rustyrussell Jun 2, 2023
516ac13
lightningd: listconfigs update, using configvars code.
rustyrussell Jun 2, 2023
3bd75d6
lightningd: don't simply ignore defaults on flags, deprecate.
rustyrussell Jun 2, 2023
a9c4874
config: replace accept-htlc-tlv-types with accept-htlc-tlv-type
rustyrussell Jun 2, 2023
956b4b6
listconfigs: show plugin options in 'configs' with normal options.
rustyrussell Jun 2, 2023
d6b36c7
pytest: use modern listconfigs.
rustyrussell Jun 2, 2023
6d9d75b
reckless: use modern listconfigs.
rustyrussell Jun 2, 2023
ced7347
lightningd: deprecate listconfigs direct fields.
rustyrussell Jun 2, 2023
23a5199
listconfigs: add `plugin` field if config is for a plugin.
rustyrussell Jun 2, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ccan/README
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
CCAN imported from http://ccodearchive.net.

CCAN version: init-2565-g3942778b
CCAN version: init-2573-g882a1ac0
145 changes: 84 additions & 61 deletions ccan/ccan/opt/helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,11 @@ char *opt_set_floatval(const char *arg, float *f)
return NULL;
}

void opt_show_floatval(char buf[OPT_SHOW_LEN], const float *f)
bool opt_show_floatval(char *buf, size_t len, const float *f)
{
double d = *f;
opt_show_doubleval(buf, &d);
opt_show_doubleval(buf, len, &d);
return true;
}

char *opt_set_doubleval(const char *arg, double *d)
Expand All @@ -160,9 +161,10 @@ char *opt_set_doubleval(const char *arg, double *d)
return NULL;
}

void opt_show_doubleval(char buf[OPT_SHOW_LEN], const double *d)
bool opt_show_doubleval(char *buf, size_t len, const double *d)
{
snprintf(buf, OPT_SHOW_LEN, "%f", *d);
snprintf(buf, len, "%f", *d);
return true;
}

char *opt_inc_intval(int *i)
Expand Down Expand Up @@ -196,52 +198,60 @@ char *opt_usage_and_exit(const char *extra)
exit(0);
}

void opt_show_bool(char buf[OPT_SHOW_LEN], const bool *b)
bool opt_show_bool(char *buf, size_t len, const bool *b)
{
strncpy(buf, *b ? "true" : "false", OPT_SHOW_LEN);
strncpy(buf, *b ? "true" : "false", len);
return true;
}

void opt_show_invbool(char buf[OPT_SHOW_LEN], const bool *b)
bool opt_show_invbool(char *buf, size_t len, const bool *b)
{
strncpy(buf, *b ? "false" : "true", OPT_SHOW_LEN);
strncpy(buf, *b ? "false" : "true", len);
return true;
}

void opt_show_charp(char buf[OPT_SHOW_LEN], char *const *p)
bool opt_show_charp(char *buf, size_t len, char *const *p)
{
if (*p){
size_t len = strlen(*p);
if (*p) {
size_t plen = strlen(*p);
if (len < 2)
return false;
buf[0] = '"';
if (len > OPT_SHOW_LEN - 2)
len = OPT_SHOW_LEN - 2;
strncpy(buf+1, *p, len);
buf[1+len] = '"';
if (len < OPT_SHOW_LEN - 2)
buf[2+len] = '\0';
}
else {
strncpy(buf, "(nil)", OPT_SHOW_LEN);
if (plen > len - 2)
plen = len - 2;
strncpy(buf+1, *p, plen);
buf[1+plen] = '"';
if (plen < len - 2)
buf[2+plen] = '\0';
return true;
} else {
return false;
}
}

/* Show an integer value, various forms. */
void opt_show_intval(char buf[OPT_SHOW_LEN], const int *i)
bool opt_show_intval(char *buf, size_t len, const int *i)
{
snprintf(buf, OPT_SHOW_LEN, "%i", *i);
snprintf(buf, len, "%i", *i);
return true;
}

void opt_show_uintval(char buf[OPT_SHOW_LEN], const unsigned int *ui)
bool opt_show_uintval(char *buf, size_t len, const unsigned int *ui)
{
snprintf(buf, OPT_SHOW_LEN, "%u", *ui);
snprintf(buf, len, "%u", *ui);
return true;
}

void opt_show_longval(char buf[OPT_SHOW_LEN], const long *l)
bool opt_show_longval(char *buf, size_t len, const long *l)
{
snprintf(buf, OPT_SHOW_LEN, "%li", *l);
snprintf(buf, len, "%li", *l);
return true;
}

void opt_show_ulongval(char buf[OPT_SHOW_LEN], const unsigned long *ul)
bool opt_show_ulongval(char *buf, size_t len, const unsigned long *ul)
{
snprintf(buf, OPT_SHOW_LEN, "%lu", *ul);
snprintf(buf, len, "%lu", *ul);
return true;
}

/* a helper function that multiplies out an argument's kMGTPE suffix in the
Expand Down Expand Up @@ -447,14 +457,14 @@ char * opt_set_uintval_si(const char *arg, unsigned int *u)
are separate but essentially identical functions for signed and unsigned
values, so that unsigned values greater than LLONG_MAX get suffixes.
*/
static void show_llong_with_suffix(char buf[OPT_SHOW_LEN], long long ll,
const long long base)
static void show_llong_with_suffix(char *buf, size_t len, long long ll,
const long long base)
{
const char *suffixes = "kMGTPE";
int i;
if (ll == 0){
/*zero is special because everything divides it (you'd get "0E")*/
snprintf(buf, OPT_SHOW_LEN, "0");
snprintf(buf, len, "0");
return;
}
for (i = 0; i < strlen(suffixes); i++){
Expand All @@ -464,19 +474,20 @@ static void show_llong_with_suffix(char buf[OPT_SHOW_LEN], long long ll,
ll = tmp;
}
if (i == 0)
snprintf(buf, OPT_SHOW_LEN, "%"PRId64, (int64_t)ll);
snprintf(buf, len, "%"PRId64, (int64_t)ll);
else
snprintf(buf, OPT_SHOW_LEN, "%"PRId64"%c", (int64_t)ll, suffixes[i - 1]);
snprintf(buf, len, "%"PRId64"%c", (int64_t)ll, suffixes[i - 1]);
}

static void show_ullong_with_suffix(char buf[OPT_SHOW_LEN], unsigned long long ull,
static void show_ullong_with_suffix(char *buf, size_t len,
unsigned long long ull,
const unsigned base)
{
const char *suffixes = "kMGTPE";
int i;
if (ull == 0){
/*zero is special because everything divides it (you'd get "0E")*/
snprintf(buf, OPT_SHOW_LEN, "0");
snprintf(buf, len, "0");
return;
}
for (i = 0; i < strlen(suffixes); i++){
Expand All @@ -486,72 +497,84 @@ static void show_ullong_with_suffix(char buf[OPT_SHOW_LEN], unsigned long long u
ull = tmp;
}
if (i == 0)
snprintf(buf, OPT_SHOW_LEN, "%"PRIu64, (uint64_t)ull);
snprintf(buf, len, "%"PRIu64, (uint64_t)ull);
else
snprintf(buf, OPT_SHOW_LEN, "%"PRIu64"%c", (uint64_t)ull, suffixes[i - 1]);
snprintf(buf, len, "%"PRIu64"%c", (uint64_t)ull, suffixes[i - 1]);
}

/* _bi, signed */
void opt_show_intval_bi(char buf[OPT_SHOW_LEN], const int *x)
bool opt_show_intval_bi(char *buf, size_t len, const int *x)
{
show_llong_with_suffix(buf, *x, 1024);
show_llong_with_suffix(buf, len, *x, 1024);
return true;
}

void opt_show_longval_bi(char buf[OPT_SHOW_LEN], const long *x)
bool opt_show_longval_bi(char *buf, size_t len, const long *x)
{
show_llong_with_suffix(buf, *x, 1024);
show_llong_with_suffix(buf, len, *x, 1024);
return true;
}

void opt_show_longlongval_bi(char buf[OPT_SHOW_LEN], const long long *x)
bool opt_show_longlongval_bi(char *buf, size_t len, const long long *x)
{
show_llong_with_suffix(buf, *x, 1024);
show_llong_with_suffix(buf, len, *x, 1024);
return true;
}

/* _bi, unsigned */
void opt_show_uintval_bi(char buf[OPT_SHOW_LEN], const unsigned int *x)
bool opt_show_uintval_bi(char *buf, size_t len, const unsigned int *x)
{
show_ullong_with_suffix(buf, (unsigned long long) *x, 1024);
show_ullong_with_suffix(buf, len, (unsigned long long) *x, 1024);
return true;
}

void opt_show_ulongval_bi(char buf[OPT_SHOW_LEN], const unsigned long *x)
bool opt_show_ulongval_bi(char *buf, size_t len, const unsigned long *x)
{
show_ullong_with_suffix(buf, (unsigned long long) *x, 1024);
show_ullong_with_suffix(buf, len, (unsigned long long) *x, 1024);
return true;
}

void opt_show_ulonglongval_bi(char buf[OPT_SHOW_LEN], const unsigned long long *x)
bool opt_show_ulonglongval_bi(char *buf, size_t len, const unsigned long long *x)
{
show_ullong_with_suffix(buf, (unsigned long long) *x, 1024);
show_ullong_with_suffix(buf, len, (unsigned long long) *x, 1024);
return true;
}

/* _si, signed */
void opt_show_intval_si(char buf[OPT_SHOW_LEN], const int *x)
bool opt_show_intval_si(char *buf, size_t len, const int *x)
{
show_llong_with_suffix(buf, (long long) *x, 1000);
show_llong_with_suffix(buf, len, (long long) *x, 1000);
return true;
}

void opt_show_longval_si(char buf[OPT_SHOW_LEN], const long *x)
bool opt_show_longval_si(char *buf, size_t len, const long *x)
{
show_llong_with_suffix(buf, (long long) *x, 1000);
show_llong_with_suffix(buf, len, (long long) *x, 1000);
return true;
}

void opt_show_longlongval_si(char buf[OPT_SHOW_LEN], const long long *x)
bool opt_show_longlongval_si(char *buf, size_t len, const long long *x)
{
show_llong_with_suffix(buf, *x, 1000);
show_llong_with_suffix(buf, len, *x, 1000);
return true;
}

/* _si, unsigned */
void opt_show_uintval_si(char buf[OPT_SHOW_LEN], const unsigned int *x)
bool opt_show_uintval_si(char *buf, size_t len, const unsigned int *x)
{
show_ullong_with_suffix(buf, (unsigned long long) *x, 1000);
show_ullong_with_suffix(buf, len, (unsigned long long) *x, 1000);
return true;
}

void opt_show_ulongval_si(char buf[OPT_SHOW_LEN], const unsigned long *x)
bool opt_show_ulongval_si(char *buf, size_t len, const unsigned long *x)
{
show_ullong_with_suffix(buf, (unsigned long long) *x, 1000);
show_ullong_with_suffix(buf, len, (unsigned long long) *x, 1000);
return true;
}

void opt_show_ulonglongval_si(char buf[OPT_SHOW_LEN], const unsigned long long *x)
bool opt_show_ulonglongval_si(char *buf, size_t len, const unsigned long long *x)
{
show_ullong_with_suffix(buf, (unsigned long long) *x, 1000);
show_ullong_with_suffix(buf, len, (unsigned long long) *x, 1000);
return true;
}

17 changes: 9 additions & 8 deletions ccan/ccan/opt/opt.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ static const char *next_name(const char *names, unsigned *len)
static const char *first_opt(unsigned *i, unsigned *len)
{
for (*i = 0; *i < opt_count; (*i)++) {
if (opt_table[*i].type == OPT_SUBTABLE)
if (opt_table[*i].type & OPT_SUBTABLE)
continue;
return first_name(opt_table[*i].names, len);
}
Expand All @@ -44,7 +44,7 @@ static const char *first_opt(unsigned *i, unsigned *len)
static const char *next_opt(const char *p, unsigned *i, unsigned *len)
{
for (; *i < opt_count; (*i)++) {
if (opt_table[*i].type == OPT_SUBTABLE)
if (opt_table[*i].type & OPT_SUBTABLE)
continue;
if (!p)
return first_name(opt_table[*i].names, len);
Expand Down Expand Up @@ -114,10 +114,11 @@ static void check_opt(const struct opt_table *entry)
{
const char *p;
unsigned len;
enum opt_type type = entry->type & (OPT_USER_MIN-1);

if (entry->type != OPT_HASARG && entry->type != OPT_NOARG
&& entry->type != (OPT_EARLY|OPT_HASARG)
&& entry->type != (OPT_EARLY|OPT_NOARG))
if (type != OPT_HASARG && type != OPT_NOARG
&& type != (OPT_EARLY|OPT_HASARG)
&& type != (OPT_EARLY|OPT_NOARG))
failmsg("Option %s: unknown entry type %u",
entry->names, entry->type);

Expand Down Expand Up @@ -161,7 +162,7 @@ static void add_opt(const struct opt_table *entry)
void _opt_register(const char *names, enum opt_type type,
char *(*cb)(void *arg),
char *(*cb_arg)(const char *optarg, void *arg),
void (*show)(char buf[OPT_SHOW_LEN], const void *arg),
bool (*show)(char *buf, size_t len, const void *arg),
const void *arg, const char *desc)
{
struct opt_table opt;
Expand All @@ -181,7 +182,7 @@ bool opt_unregister(const char *names)
int found = -1, i;

for (i = 0; i < opt_count; i++) {
if (opt_table[i].type == OPT_SUBTABLE)
if (opt_table[i].type & OPT_SUBTABLE)
continue;
if (strcmp(opt_table[i].names, names) == 0)
found = i;
Expand All @@ -203,7 +204,7 @@ void opt_register_table(const struct opt_table entry[], const char *desc)
add_opt(&heading);
}
for (i = 0; entry[i].type != OPT_END; i++) {
if (entry[i].type == OPT_SUBTABLE)
if (entry[i].type & OPT_SUBTABLE)
opt_register_table(subtable_of(&entry[i]),
entry[i].desc);
else {
Expand Down
Loading