locale.h
This commit is contained in:
parent
23198d16f4
commit
95e7ec1ab5
2 changed files with 64 additions and 5 deletions
60
05/locale.h
Normal file
60
05/locale.h
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
#ifndef _LOCALE_H
|
||||||
|
#define _LOCALE_H
|
||||||
|
|
||||||
|
#include <stdc_common.h>
|
||||||
|
|
||||||
|
struct lconv {
|
||||||
|
char *decimal_point; /* "." */
|
||||||
|
char *thousands_sep; /* "" */
|
||||||
|
char *grouping; /* "" */
|
||||||
|
char *int_curr_symbol; /* "" */
|
||||||
|
char *currency_symbol; /* "" */
|
||||||
|
char *mon_decimal_point; /* "" */
|
||||||
|
char *mon_thousands_sep; /* "" */
|
||||||
|
char *mon_grouping; /* "" */
|
||||||
|
char *positive_sign; /* "" */
|
||||||
|
char *negative_sign; /* "" */
|
||||||
|
char int_frac_digits; /* CHAR_MAX */
|
||||||
|
char frac_digits; /* CHAR_MAX */
|
||||||
|
char p_cs_precedes; /* CHAR_MAX */
|
||||||
|
char p_sep_by_space; /* CHAR_MAX */
|
||||||
|
char n_cs_precedes; /* CHAR_MAX */
|
||||||
|
char n_sep_by_space; /* CHAR_MAX */
|
||||||
|
char p_sign_posn; /* CHAR_MAX */
|
||||||
|
char n_sign_posn; /* CHAR_MAX */
|
||||||
|
};
|
||||||
|
|
||||||
|
// these are GCC's constants, but it doesn't really matter which constants we use.
|
||||||
|
#define LC_ALL 6
|
||||||
|
#define LC_COLLATE 3
|
||||||
|
#define LC_CTYPE 0
|
||||||
|
#define LC_MONETARY 4
|
||||||
|
#define LC_NUMERIC 1
|
||||||
|
#define LC_TIME 2
|
||||||
|
|
||||||
|
char *setlocale(int category, char *locale) {
|
||||||
|
if (!locale) return "C";
|
||||||
|
if (*locale == 'C' && !locale[1]) {
|
||||||
|
// yep
|
||||||
|
return "C";
|
||||||
|
}
|
||||||
|
|
||||||
|
// we only support the C locale
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
struct lconv *localeconv(void) {
|
||||||
|
static struct lconv conv = {
|
||||||
|
".",
|
||||||
|
"", "", "",
|
||||||
|
"", "", "",
|
||||||
|
"", "", "",
|
||||||
|
CHAR_MAX, CHAR_MAX, CHAR_MAX,
|
||||||
|
CHAR_MAX, CHAR_MAX, CHAR_MAX,
|
||||||
|
CHAR_MAX, CHAR_MAX
|
||||||
|
};
|
||||||
|
return &conv;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // _LOCALE_H
|
|
@ -4,13 +4,12 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <locale.h>
|
||||||
typedef struct {
|
|
||||||
int x;
|
|
||||||
long y;
|
|
||||||
} S;
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
setlocale(LC_ALL, "C");
|
||||||
|
struct lconv *c = localeconv();
|
||||||
|
printf("%s\n",c->negative_sign);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue