use strlen for literals

This commit is contained in:
Lukas Wurzinger 2024-08-08 01:59:19 +02:00
parent 8d92ad3993
commit 762a5c602c

View file

@ -94,14 +94,13 @@ size_t readarg_select_lower(struct readarg_bounds bounds);
#undef NDEBUG #undef NDEBUG
#endif #endif
#define READARG_HELPGEN_TRY(writer, buf, len) \ #define READARG_HELPGEN_TRY_BUF(writer, buf, len) \
do { \ do { \
int readarg_helpgen_rv = (writer)->write((writer)->ctx, (buf), (len)); \ int readarg_helpgen_rv = (writer)->write((writer)->ctx, (buf), (len)); \
if (!readarg_helpgen_rv) \ if (!readarg_helpgen_rv) \
return readarg_helpgen_rv; \ return readarg_helpgen_rv; \
} while (0) } while (0)
#define READARG_HELPGEN_TRY_LIT(writer, s) READARG_HELPGEN_TRY((writer), (s), (sizeof(s) - 1)) #define READARG_HELPGEN_TRY_STR(writer, s) READARG_HELPGEN_TRY_BUF((writer), (s), (strlen((s))))
#define READARG_HELPGEN_TRY_STR(writer, s) READARG_HELPGEN_TRY((writer), (s), (strlen((s))))
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
@ -167,10 +166,10 @@ void readarg_parser_init(struct readarg_parser *rp, struct readarg_opt *opts, si
int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_writer *writer, const char *progname, const char *usage) { int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_writer *writer, const char *progname, const char *usage) {
READARG_HELPGEN_TRY_STR(writer, usage); READARG_HELPGEN_TRY_STR(writer, usage);
READARG_HELPGEN_TRY_LIT(writer, ":\n"); READARG_HELPGEN_TRY_STR(writer, ":\n");
READARG_HELPGEN_TRY_STR(writer, progname); READARG_HELPGEN_TRY_STR(writer, progname);
READARG_HELPGEN_TRY_LIT(writer, "\n"); READARG_HELPGEN_TRY_STR(writer, "\n");
int optwritten = 0, operwritten = 0; int optwritten = 0, operwritten = 0;
int next; int next;
@ -181,7 +180,7 @@ int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_
optwritten = 1; optwritten = 1;
if (i == 0) if (i == 0)
READARG_HELPGEN_TRY_LIT(writer, " "); READARG_HELPGEN_TRY_STR(writer, " ");
next = i + 1 < rp->nopts; next = i + 1 < rp->nopts;
size_t lower = readarg_select_lower(opts[i].arg.bounds); size_t lower = readarg_select_lower(opts[i].arg.bounds);
@ -191,7 +190,7 @@ int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_
for (size_t j = 0; j < (upper ? upper : !!inf); j++) { for (size_t j = 0; j < (upper ? upper : !!inf); j++) {
if (j >= lower) if (j >= lower)
READARG_HELPGEN_TRY_LIT(writer, "["); READARG_HELPGEN_TRY_STR(writer, "[");
for (size_t k = 0; k < nforms; k++) { for (size_t k = 0; k < nforms; k++) {
int grp = 0; int grp = 0;
@ -199,11 +198,11 @@ int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_
for (size_t l = 0; opts[i].names[k][l]; l++) { for (size_t l = 0; opts[i].names[k][l]; l++) {
if (!grp) { if (!grp) {
if (k == READARG_FORM_SHORT) { if (k == READARG_FORM_SHORT) {
READARG_HELPGEN_TRY_LIT(writer, "-"); READARG_HELPGEN_TRY_STR(writer, "-");
} }
if (k == READARG_FORM_LONG) { if (k == READARG_FORM_LONG) {
READARG_HELPGEN_TRY_LIT(writer, "--"); READARG_HELPGEN_TRY_STR(writer, "--");
} }
} }
@ -212,31 +211,31 @@ int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_
if (k == READARG_FORM_SHORT) { if (k == READARG_FORM_SHORT) {
grp = 1; grp = 1;
if (!opts[i].names[k][l + 1]) if (!opts[i].names[k][l + 1])
READARG_HELPGEN_TRY_LIT(writer, ", "); READARG_HELPGEN_TRY_STR(writer, ", ");
continue; continue;
} else if (k + 1 < nforms || opts[i].names[k][l + 1]) { } else if (k + 1 < nforms || opts[i].names[k][l + 1]) {
READARG_HELPGEN_TRY_LIT(writer, ", "); READARG_HELPGEN_TRY_STR(writer, ", ");
} else if (opts[i].arg.name) { } else if (opts[i].arg.name) {
READARG_HELPGEN_TRY_LIT(writer, " "); READARG_HELPGEN_TRY_STR(writer, " ");
READARG_HELPGEN_TRY_STR(writer, opts[i].arg.name); READARG_HELPGEN_TRY_STR(writer, opts[i].arg.name);
if (inf) if (inf)
READARG_HELPGEN_TRY_LIT(writer, "..."); READARG_HELPGEN_TRY_STR(writer, "...");
} }
} }
} }
} }
if (j >= lower) if (j >= lower)
READARG_HELPGEN_TRY_LIT(writer, "]"); READARG_HELPGEN_TRY_STR(writer, "]");
if (next) if (next)
READARG_HELPGEN_TRY_LIT(writer, "\n "); READARG_HELPGEN_TRY_STR(writer, "\n ");
} }
} }
if (optwritten) if (optwritten)
READARG_HELPGEN_TRY_LIT(writer, "\n"); READARG_HELPGEN_TRY_STR(writer, "\n");
struct readarg_arg *opers = rp->opers; struct readarg_arg *opers = rp->opers;
next = !!rp->nopers; next = !!rp->nopers;
@ -244,7 +243,7 @@ int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_
operwritten = 1; operwritten = 1;
if (i == 0) if (i == 0)
READARG_HELPGEN_TRY_LIT(writer, " "); READARG_HELPGEN_TRY_STR(writer, " ");
next = i + 1 < rp->nopers; next = i + 1 < rp->nopers;
size_t lower = readarg_select_lower(opers[i].bounds); size_t lower = readarg_select_lower(opers[i].bounds);
@ -255,30 +254,30 @@ int readarg_helpgen_put_usage(struct readarg_parser *rp, struct readarg_helpgen_
READARG_HELPGEN_TRY_STR(writer, opers[i].name); READARG_HELPGEN_TRY_STR(writer, opers[i].name);
if (inf && j + 1 == lower) if (inf && j + 1 == lower)
READARG_HELPGEN_TRY_LIT(writer, "..."); READARG_HELPGEN_TRY_STR(writer, "...");
if (next) if (next)
READARG_HELPGEN_TRY_LIT(writer, "\n "); READARG_HELPGEN_TRY_STR(writer, "\n ");
} }
size_t amt = upper ? upper : inf ? lower + 1 : 0; size_t amt = upper ? upper : inf ? lower + 1 : 0;
for (size_t j = lower; j < amt; j++) { for (size_t j = lower; j < amt; j++) {
READARG_HELPGEN_TRY_LIT(writer, "["); READARG_HELPGEN_TRY_STR(writer, "[");
READARG_HELPGEN_TRY_STR(writer, opers[i].name); READARG_HELPGEN_TRY_STR(writer, opers[i].name);
if (inf && j + 1 == amt) if (inf && j + 1 == amt)
READARG_HELPGEN_TRY_LIT(writer, "..."); READARG_HELPGEN_TRY_STR(writer, "...");
READARG_HELPGEN_TRY_LIT(writer, "]"); READARG_HELPGEN_TRY_STR(writer, "]");
if (next) if (next)
READARG_HELPGEN_TRY_LIT(writer, "\n "); READARG_HELPGEN_TRY_STR(writer, "\n ");
} }
} }
if (operwritten) if (operwritten)
READARG_HELPGEN_TRY_LIT(writer, "\n"); READARG_HELPGEN_TRY_STR(writer, "\n");
return 1; return 1;
} }