FWriteFmtLn
Description
Write formatted output to a file stream followed by a newline character. Formats the rendered string via the in-tree formatted-write backend and emits the result to the stream, then appends a newline.
Parameters
| Name | Direction | Description |
|---|---|---|
stream |
in | Pointer to the File to write to. |
fmtstr |
in | Format string with {} placeholders. |
Success
Placeholders in fmtstr are replaced by the passed arguments, and the resulting formatted string followed by a newline is written to the stream.
Failure
Failure might occur during memory allocation for the temporary string or during the write operation to the stream; the backend may also log an error message.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
ArgParse.c:318:
if (self->about) {
FWriteFmtLn(&err, "{} -- {}", self->name, self->about);
FWriteFmtLn(&err, "");
} else {- In
ArgParse.c:319:
if (self->about) {
FWriteFmtLn(&err, "{} -- {}", self->name, self->about);
FWriteFmtLn(&err, "");
} else {
FWriteFmtLn(&err, "{}", self->name);- In
ArgParse.c:321:
FWriteFmtLn(&err, "");
} else {
FWriteFmtLn(&err, "{}", self->name);
FWriteFmtLn(&err, "");
}- In
ArgParse.c:322:
} else {
FWriteFmtLn(&err, "{}", self->name);
FWriteFmtLn(&err, "");
}- In
ArgParse.c:360:
}
FWriteFmtLn(&err, "{}", usage);
StrDeinit(&usage);
FWriteFmtLn(&err, "");- In
ArgParse.c:362:
FWriteFmtLn(&err, "{}", usage);
StrDeinit(&usage);
FWriteFmtLn(&err, "");
// Two-pass: compute max left-column width, then re-emit with
- In
ArgParse.c:388:
continue;
if (!printed_positional_header) {
FWriteFmtLn(&err, "positional arguments:");
printed_positional_header = true;
}- In
ArgParse.c:394:
for (u64 pad = left_w[i]; pad < max_w + 2; ++pad)
FWriteFmt(&err, " ");
FWriteFmtLn(&err, "{}", sp->help ? sp->help : "");
}
if (printed_positional_header)- In
ArgParse.c:397:
}
if (printed_positional_header)
FWriteFmtLn(&err, "");
for (u64 i = 0; i < n_specs; ++i) {- In
ArgParse.c:404:
continue;
if (!printed_options_header) {
FWriteFmtLn(&err, "options:");
printed_options_header = true;
}- In
ArgParse.c:410:
for (u64 pad = left_w[i]; pad < max_w + 2; ++pad)
FWriteFmt(&err, " ");
FWriteFmtLn(&err, "{}", sp->help ? sp->help : "");
}- In
ArgParse.c:497:
u64 n = (u64)(eq - tok);
if (n >= 128) {
FWriteFmtLn(err, "{}: flag name too long: {}", self->name, tok);
break;
}- In
ArgParse.c:509:
ArgSpec *sp = is_long ? find_long(self, flag) : find_short(self, flag);
if (!sp) {
FWriteFmtLn(err, "{}: unknown option: {}", self->name, flag);
FWriteFmtLn(err, "run with --help for usage");
break;- In
ArgParse.c:510:
if (!sp) {
FWriteFmtLn(err, "{}: unknown option: {}", self->name, flag);
FWriteFmtLn(err, "run with --help for usage");
break;
}- In
ArgParse.c:525:
case ARG_ROLE_FLAG : {
if (inline_v) {
FWriteFmtLn(err, "{}: flag {} does not take a value", self->name, flag);
break;
}- In
ArgParse.c:535:
case ARG_ROLE_COUNT : {
if (inline_v) {
FWriteFmtLn(err, "{}: counter {} does not take a value", self->name, flag);
break;
}- In
ArgParse.c:548:
if (!val) {
if (*i_io + 1 >= argc) {
FWriteFmtLn(err, "{}: option {} requires a value", self->name, flag);
break;
}- In
ArgParse.c:555:
}
if (!store_value(sp->kind, sp->target, val)) {
FWriteFmtLn(
err,
"{}: invalid value '{}' for {}: expected {}",- In
ArgParse.c:571:
case ARG_ROLE_POSITIONAL :
default :
FWriteFmtLn(err, "{}: internal error: positional matched as option", self->name);
break;
}- In
ArgParse.c:595:
ArgSpec *sp = find_short(self, (Zstr)data);
if (!sp) {
FWriteFmtLn(err, "{}: unknown option: {}", self->name, (Zstr)data);
break;
}- In
ArgParse.c:605:
sp->seen = true;
} else {
FWriteFmtLn(err, "{}: option {} requires a value, can't bundle", self->name, (Zstr)data);
break;
}- In
ArgParse.c:694:
decision = BUNDLE_TRY;
} else {
FWriteFmtLn(
&err,
"{}: short value option '{}' cannot be bundled; use form '{} VAL' or '{}=VAL'",- In
ArgParse.c:721:
// Positional (either consumed naturally or forced by "--").
if (next_positional >= n_positionals) {
FWriteFmtLn(&err, "{}: unexpected positional argument: {}", self->name, tok);
return ARG_RUN_ERROR;
}- In
ArgParse.c:737:
}
if (!pos) {
FWriteFmtLn(&err, "{}: internal error: positional slot {} missing", self->name, (u64)next_positional);
return ARG_RUN_ERROR;
}- In
ArgParse.c:741:
}
if (!store_value(pos->kind, pos->target, tok)) {
FWriteFmtLn(
&err,
"{}: invalid value '{}' for <{}>: expected {}",- In
ArgParse.c:759:
if ((sp->role == ARG_ROLE_REQUIRED || sp->role == ARG_ROLE_POSITIONAL) && !sp->seen) {
if (sp->role == ARG_ROLE_POSITIONAL) {
FWriteFmtLn(&err, "{}: missing required positional argument <{}>", self->name, sp->long_name);
} else {
FWriteFmtLn(- In
ArgParse.c:761:
FWriteFmtLn(&err, "{}: missing required positional argument <{}>", self->name, sp->long_name);
} else {
FWriteFmtLn(
&err,
"{}: missing required option {}",- In
ArgParse.c:768:
);
}
FWriteFmtLn(&err, "run with --help for usage");
return ARG_RUN_ERROR;
}- In
Io.h:705:
do { \
File UNPL(out) = FileStdout(); \
FWriteFmtLn(&UNPL(out), __VA_ARGS__); \
} while (0)
Last updated on