From 81b57903fc804e5735dba8a62fcfff9e73102a2c Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sat, 26 Aug 2023 11:47:04 +0900 Subject: [PATCH] [gamecode] Support the l flag for %v and %q This makes it much easier to print double vector types (for 3 and 4 components, at least). --- libs/gamecode/pr_strings.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libs/gamecode/pr_strings.c b/libs/gamecode/pr_strings.c index 4742e3690..9de3fce2d 100644 --- a/libs/gamecode/pr_strings.c +++ b/libs/gamecode/pr_strings.c @@ -1058,7 +1058,8 @@ fmt_state_modifiers (fmt_state_t *state) // no modifiers supported if (state->c[0] == 'l' && (state->c[1] == 'i' || state->c[1] == 'd' || state->c[1] == 'x' - || state->c[1] == 'u')) { + || state->c[1] == 'u' + || state->c[1] == 'v' || state->c[1] == 'q')) { (*state->fi)->flags |= FMT_LONG; state->c++; } @@ -1183,8 +1184,13 @@ fmt_state_conversion (fmt_state_t *state) (*state->fi)->precision = precision; (*state->fi)->minFieldWidth = minWidth; (*state->fi)->type = 'g'; - (*state->fi)->data.float_var = - P_VECTOR (pr, state->fmt_count)[i]; + if (flags & FMT_LONG) { + (*state->fi)->data.double_var + = (&P_var (pr, state->fmt_count, double))[i]; + } else { + (*state->fi)->data.float_var = + P_VECTOR (pr, state->fmt_count)[i]; + } fmt_append_item (state); }