New upstream version 2.3.4
This commit is contained in:
parent
e7bdd1c6c6
commit
de72f6f588
556 changed files with 90432 additions and 53391 deletions
82
gl/setlocale_null.h
Normal file
82
gl/setlocale_null.h
Normal file
|
@ -0,0 +1,82 @@
|
|||
/* Query the name of the current global locale.
|
||||
Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This file is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>, 2019. */
|
||||
|
||||
#ifndef _SETLOCALE_NULL_H
|
||||
#define _SETLOCALE_NULL_H
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "arg-nonnull.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/* Recommended size of a buffer for a locale name for a single category.
|
||||
On glibc systems, you can have locale names that are relative file names;
|
||||
assume a maximum length 256.
|
||||
In native Windows, in 2018 the longest locale name was of length 58
|
||||
("FYRO Macedonian_Former Yugoslav Republic of Macedonia.1251"). */
|
||||
#define SETLOCALE_NULL_MAX (256+1)
|
||||
|
||||
/* Recommended size of a buffer for a locale name with all categories.
|
||||
On glibc systems, you can have locale names that are relative file names;
|
||||
assume maximum length 256 for each. There are 12 categories; so, the
|
||||
maximum total length is 148+12*256.
|
||||
In native Windows, there are 5 categories, and the maximum total length is
|
||||
55+5*58. */
|
||||
#define SETLOCALE_NULL_ALL_MAX (148+12*256+1)
|
||||
|
||||
/* setlocale_null_r (CATEGORY, BUF, BUFSIZE) is like setlocale (CATEGORY, NULL),
|
||||
except that
|
||||
- it is guaranteed to be multithread-safe,
|
||||
- it returns the resulting locale category name or locale name in the
|
||||
user-supplied buffer BUF, which must be BUFSIZE bytes long.
|
||||
The recommended minimum buffer size is
|
||||
- SETLOCALE_NULL_MAX for CATEGORY != LC_ALL, and
|
||||
- SETLOCALE_NULL_ALL_MAX for CATEGORY == LC_ALL.
|
||||
The return value is an error code: 0 if the call is successful, EINVAL if
|
||||
CATEGORY is invalid, or ERANGE if BUFSIZE is smaller than the length needed
|
||||
size (including the trailing NUL byte). In the latter case, a truncated
|
||||
result is returned in BUF, but still NUL-terminated if BUFSIZE > 0.
|
||||
For this call to be multithread-safe, *all* calls to
|
||||
setlocale (CATEGORY, NULL) in all other threads must have been converted
|
||||
to use setlocale_null_r or setlocale_null as well, and the other threads
|
||||
must not make other setlocale invocations (since changing the global locale
|
||||
has side effects on all threads). */
|
||||
extern int setlocale_null_r (int category, char *buf, size_t bufsize)
|
||||
_GL_ARG_NONNULL ((2));
|
||||
|
||||
/* setlocale_null (CATEGORY) is like setlocale (CATEGORY, NULL), except that
|
||||
it is guaranteed to be multithread-safe.
|
||||
The return value is NULL if CATEGORY is invalid.
|
||||
For this call to be multithread-safe, *all* calls to
|
||||
setlocale (CATEGORY, NULL) in all other threads must have been converted
|
||||
to use setlocale_null_r or setlocale_null as well, and the other threads
|
||||
must not make other setlocale invocations (since changing the global locale
|
||||
has side effects on all threads). */
|
||||
extern const char *setlocale_null (int category);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SETLOCALE_NULL_H */
|
Loading…
Add table
Add a link
Reference in a new issue