use strlen for literals
This commit is contained in:
parent
8d92ad3993
commit
762a5c602c
47
readarg.h
47
readarg.h
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue