Scroll to navigation

duplocale(3) Library Functions Manual duplocale(3)

NUME

duplocale - duplică un obiect de configurație regională

BIBLIOTECA

Biblioteca C standard (libc, -lc)

REZUMAT

#include <locale.h>
locale_t duplocale(locale_t locobj);

Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

duplocale():


Începând cu glibc 2.10
_XOPEN_SOURCE >= 700
Înainte de glibc 2.10:
_GNU_SOURCE

DESCRIERE

Funcția duplocale() creează un duplicat al obiectului parametrului regional la care se face referire prin locobj.

Dacă locobj este LC_GLOBAL_LOCALE, duplocale() creează un obiect de configurație regională care conține o copie a parametrului regional global determinat de setlocale(3).

VALOAREA RETURNATĂ

În caz de succes, duplocale() returnează un gestionar pentru noul obiect de configurație regională. În caz de eroare, returnează (locale_t) 0 și configurează errno pentru a indica eroarea.

ERORI-IEȘIRE

Memorie insuficientă pentru a crea obiectul de configurație regională duplicat.

STANDARDE

POSIX.1-2008.

ISTORIC

glibc 2.3.

NOTE

Duplicarea unei configurații regionale poate servi următoarelor scopuri:

Pentru a crea o copie a unui obiect configurație regională în care una sau mai multe categorii urmează să fie modificate (utilizând newlocale(3)).
Pentru a obține un gestionar pentru configurația regională curentă, care poate fi utilizat în alte funcții care utilizează un gestionar de configurație regională, cum ar fi toupper_l(3). Acest lucru se face prin aplicarea duplocale() la valoarea returnată de următorul apel:

loc = uselocale((locale_t) 0);
    

Această tehnică este necesară, deoarece apelul uselocale(3) de mai sus poate returna valoarea LC_GLOBAL_LOCALE, ceea ce duce la un comportament nedefinit dacă este transmis unor funcții precum toupper_l(3). Apelul duplocale() poate fi utilizat pentru a se asigura că valoarea LC_GLOBAL_LOCALE este convertită într-un obiect de configurație regională utilizabil. A se vedea secțiunea EXEMPLE, de mai jos.

Fiecare obiect de configurație regională creat de duplocale() trebuie să fie eliberat cu ajutorul freelocale(3).

EXEMPLE

Programul de mai jos utilizează uselocale(3) și duplocale() pentru a obține un gestionar pentru parametrul regional curent, care este apoi transmis la toupper_l(3). Programul primește un argument de linie de comandă, un șir de caractere care este convertit în majuscule și afișat la ieșirea standard. Un exemplu de utilizare a acestui program este următorul:


$ ./a.out abc
ABC

Sursa programului

#define _XOPEN_SOURCE 700
#include <ctype.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \

} while (0) int main(int argc, char *argv[]) {
locale_t loc, nloc;
if (argc != 2) {
fprintf(stderr, "Utilizare: %s șir\n", argv[0]);
exit(EXIT_FAILURE);
}
/* Această secvență este necesară, deoarece uselocale() ar putea
returna valoarea LC_GLOBAL_LOCALE, care nu poate fi transmisă
ca argument pentru toupper_l(). */*/
loc = uselocale((locale_t) 0);
if (loc == (locale_t) 0)
errExit("uselocale");
nloc = duplocale(loc);
if (nloc == (locale_t) 0)
errExit("duplocale");
for (char *p = argv[1]; *p; p++)
putchar(toupper_l(*p, nloc));
printf("\n");
freelocale(nloc);
exit(EXIT_SUCCESS); }

CONSULTAȚI ȘI

freelocale(3), newlocale(3), setlocale(3), uselocale(3), locale(5), locale(7)

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

3 mai 2023 Pagini de manual de Linux 6.05.01