mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-07 06:53:33 +00:00
Implement setlocale() stub (#43)
This commit is contained in:
parent
08d3700c15
commit
667ab245fe
19 changed files with 56 additions and 84 deletions
|
@ -1890,21 +1890,6 @@ syscon misc ILL_ILLOPN 2 4 2 2 2 0
|
|||
syscon misc ILL_ILLTRP 4 2 4 4 4 0
|
||||
syscon misc ILL_PRVOPC 5 3 5 5 5 0
|
||||
|
||||
syscon misc LC_CTYPE 0 2 2 2 2 0 # bsd consensus
|
||||
syscon misc LC_NUMERIC 1 4 4 4 4 0 # bsd consensus
|
||||
syscon misc LC_CTYPE_MASK 1 0 2 4 4 0
|
||||
syscon misc LC_TIME 2 5 5 5 5 0 # bsd consensus
|
||||
syscon misc LC_NUMERIC_MASK 2 0 8 0x10 0x10 0
|
||||
syscon misc LC_COLLATE 3 1 1 1 1 0 # bsd consensus
|
||||
syscon misc LC_MONETARY 4 3 3 3 3 0 # bsd consensus
|
||||
syscon misc LC_TIME_MASK 4 0 0x10 0x20 0x20 0
|
||||
syscon misc LC_MESSAGES 5 6 6 6 6 0 # bsd consensus
|
||||
syscon misc LC_ALL 6 0 0 0 0 0
|
||||
syscon misc LC_COLLATE_MASK 8 0 1 2 2 0
|
||||
syscon misc LC_MONETARY_MASK 0x10 0 4 8 8 0
|
||||
syscon misc LC_MESSAGES_MASK 0x20 0 0x20 0x40 0x40 0
|
||||
syscon misc LC_ALL_MASK 0x1fbf 0 63 126 126 0
|
||||
|
||||
syscon lock LOCK_UNLOCK_CACHE 54 0 0 0 0 0 # wut
|
||||
|
||||
syscon misc ARPHRD_ETHER 1 1 1 1 1 0 # unix consensus
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_ALL,6,0,0,0,0,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_ALL_MASK,0x1fbf,0,63,126,126,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_COLLATE,3,1,1,1,1,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_COLLATE_MASK,8,0,1,2,2,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_CTYPE,0,2,2,2,2,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_CTYPE_MASK,1,0,2,4,4,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_MESSAGES,5,6,6,6,6,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_MESSAGES_MASK,0x20,0,0x20,0x40,0x40,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_MONETARY,4,3,3,3,3,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_MONETARY_MASK,0x10,0,4,8,8,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_NUMERIC,1,4,4,4,4,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_NUMERIC_MASK,2,0,8,0x10,0x10,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_TIME,2,5,5,5,5,0
|
|
@ -1,2 +0,0 @@
|
|||
#include "libc/sysv/consts/syscon.internal.h"
|
||||
.syscon misc,LC_TIME_MASK,4,0,0x10,0x20,0x20,0
|
|
@ -1,40 +0,0 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_SYSV_CONSTS_LC_H_
|
||||
#define COSMOPOLITAN_LIBC_SYSV_CONSTS_LC_H_
|
||||
#include "libc/runtime/symbolic.h"
|
||||
|
||||
#define LC_ALL SYMBOLIC(LC_ALL)
|
||||
#define LC_ALL_MASK SYMBOLIC(LC_ALL_MASK)
|
||||
#define LC_COLLATE SYMBOLIC(LC_COLLATE)
|
||||
#define LC_COLLATE_MASK SYMBOLIC(LC_COLLATE_MASK)
|
||||
#define LC_CTYPE SYMBOLIC(LC_CTYPE)
|
||||
#define LC_CTYPE_MASK SYMBOLIC(LC_CTYPE_MASK)
|
||||
#define LC_MESSAGES SYMBOLIC(LC_MESSAGES)
|
||||
#define LC_MESSAGES_MASK SYMBOLIC(LC_MESSAGES_MASK)
|
||||
#define LC_MONETARY SYMBOLIC(LC_MONETARY)
|
||||
#define LC_MONETARY_MASK SYMBOLIC(LC_MONETARY_MASK)
|
||||
#define LC_NUMERIC SYMBOLIC(LC_NUMERIC)
|
||||
#define LC_NUMERIC_MASK SYMBOLIC(LC_NUMERIC_MASK)
|
||||
#define LC_TIME SYMBOLIC(LC_TIME)
|
||||
#define LC_TIME_MASK SYMBOLIC(LC_TIME_MASK)
|
||||
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
extern const long LC_ALL;
|
||||
extern const long LC_ALL_MASK;
|
||||
extern const long LC_COLLATE;
|
||||
extern const long LC_COLLATE_MASK;
|
||||
extern const long LC_CTYPE;
|
||||
extern const long LC_CTYPE_MASK;
|
||||
extern const long LC_MESSAGES;
|
||||
extern const long LC_MESSAGES_MASK;
|
||||
extern const long LC_MONETARY;
|
||||
extern const long LC_MONETARY_MASK;
|
||||
extern const long LC_NUMERIC;
|
||||
extern const long LC_NUMERIC_MASK;
|
||||
extern const long LC_TIME;
|
||||
extern const long LC_TIME_MASK;
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_LC_H_ */
|
|
@ -16,7 +16,7 @@
|
|||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/unicode/locale.h"
|
||||
|
||||
typedef void *iconv_t;
|
||||
|
26
libc/unicode/locale.h
Normal file
26
libc/unicode/locale.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_UNICODE_LOCALE_H_
|
||||
#define COSMOPOLITAN_LIBC_UNICODE_LOCALE_H_
|
||||
|
||||
#define LC_CTYPE 0
|
||||
#define LC_NUMERIC 1
|
||||
#define LC_CTYPE_MASK 1
|
||||
#define LC_TIME 2
|
||||
#define LC_NUMERIC_MASK 2
|
||||
#define LC_COLLATE 3
|
||||
#define LC_MONETARY 4
|
||||
#define LC_TIME_MASK 4
|
||||
#define LC_MESSAGES 5
|
||||
#define LC_ALL 6
|
||||
#define LC_COLLATE_MASK 8
|
||||
#define LC_MONETARY_MASK 16
|
||||
#define LC_MESSAGES_MASK 32
|
||||
#define LC_ALL_MASK 0x1fbf
|
||||
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
char *setlocale(int, const char *);
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_LIBC_UNICODE_LOCALE_H_ */
|
29
libc/unicode/setlocale.c
Normal file
29
libc/unicode/setlocale.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2021 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/safemacros.h"
|
||||
#include "libc/unicode/locale.h"
|
||||
|
||||
/**
|
||||
* Sets program locale.
|
||||
*
|
||||
* Cosmopolitan only supports the C or POSIX locale.
|
||||
*/
|
||||
char *setlocale(int category, const char *locale) {
|
||||
return firstnonnull(locale, "C");
|
||||
}
|
Loading…
Reference in a new issue