]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
strfmon: Fix an edge case when sep_by_space is 2
authorJose Luis Duran <jlduran@gmail.com>
Tue, 18 Oct 2022 02:24:03 +0000 (23:24 -0300)
committerKonstantin Belousov <kib@FreeBSD.org>
Tue, 25 Oct 2022 21:40:17 +0000 (00:40 +0300)
commit750fe3e6a4619e040c7b0951775698b61290102e
treec7f09b1dee55b1eb3f8d9bec810d657b4bde4089
parent947efadc3d6e778a824618d82f53f061bec69b77
strfmon: Fix an edge case when sep_by_space is 2

Fix an edge case by printing the required space when, the currency
symbol succeeds the value, a space separates the sign from the value and
the sign position precedes the quantity and the currency symbol.

In other words:

    n_cs_precedes = 0
    n_sep_by_space = 2
    n_sign_posn = 1

From The Open Group's localeconv[1]:

> When {p,n,int_p,int_n}_sep_by_space is 2:
> If the currency symbol and sign string are adjacent, a space separates
> them; otherwise, a space separates the sign string from the value.

    Format    Before        After
    [%n]      [-123.45¤]    [- 123.45¤]

[1]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/localeconv.html

Obtained from: Darwin
Reviewed by: kib
PR: 267282
Github PR: #619
MFC after: 1 week
lib/libc/stdlib/strfmon.c
lib/libc/tests/stdlib/strfmon_test.c