add strfmon_l variant (still mostly incomplete)
This commit is contained in:
parent
df82f8f2dc
commit
bff650df9f
1 changed files with 27 additions and 3 deletions
|
|
@ -3,16 +3,15 @@
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <monetary.h>
|
#include <monetary.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
ssize_t strfmon(char *s, size_t n, const char *fmt, ...)
|
static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
size_t l;
|
size_t l;
|
||||||
double x;
|
double x;
|
||||||
int fill, nogrp, negpar, nosym, left, intl;
|
int fill, nogrp, negpar, nosym, left, intl;
|
||||||
int lp, rp, w, fw;
|
int lp, rp, w, fw;
|
||||||
char *s0=s;
|
char *s0=s;
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
for (; n && *fmt; ) {
|
for (; n && *fmt; ) {
|
||||||
if (*fmt != '%') {
|
if (*fmt != '%') {
|
||||||
literal:
|
literal:
|
||||||
|
|
@ -75,3 +74,28 @@ ssize_t strfmon(char *s, size_t n, const char *fmt, ...)
|
||||||
}
|
}
|
||||||
return s-s0;
|
return s-s0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t strfmon_l(char *s, size_t n, locale_t loc, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
ssize_t ret;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
ret = vstrfmon_l(s, n, loc, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ssize_t strfmon(char *s, size_t n, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
ssize_t ret;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
ret = vstrfmon_l(s, n, 0, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue