duplocale(3) Library Functions Manual duplocale(3)

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

Biblioteca C standard (libc, -lc)

#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

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).

Î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.

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

POSIX.1-2008.

glibc 2.3.

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).

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

#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);
}

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

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.

31 octombrie 2023 Pagini de manual de Linux 6.06