tzset

title: tzset(3)

summary: инициализирует информацию о

text:
# tzset(3)

## ИМЯ
tzset, tzname, timezone, daylight - инициализирует информацию о преобразованиях времени

## ОБЗОР

```
#include <time.h>
```

```
void tzset (void);
```

```
extern char *tzname[2];
extern long timezone;
extern int daylight;
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

tzset(): _POSIX_C_SOURCE

tzname: _POSIX_C_SOURCE

timezone, daylight: _XOPEN_SOURCE

|| /* начиная с glibc 2.19: */ _DEFAULT_SOURCE

|| /* в версиях glibc <= 2.19: */ _SVID_SOURCE

## ОПИСАНИЕ
Функция tzset() инициализирует переменную tzname из значения переменной окружения TZ. Данная функция автоматически вызывается другими функциями преобразования времени, которые зависят от часового пояса. В системах, совместимых с System V, она также устанавливает переменные timezone (секунд западнее UTC) и daylight (0, если в часовом поясе не используется переход на летнее время, в противном случае ненулевое значение, если есть времена в прошлом, настоящем или будущем, когда применялись правила перехода).

Если переменной TZ в окружении не существует, то используется системный часовой пояс. Системный часовой пояс настраивается копированием или созданием ссылки на файл в формате tzfile(5) в /etc/localtime. База данных часовых поясов с такими файлами может находиться в системном каталоге часовых поясов (смотрите далее раздел ФАЙЛЫ).

Если переменная TZ в окружении существует, но имеет пустое значение или её величина не может быть представлена ни в одном из перечисленных ниже форматов, то используется UTC (Coordinated Universal Time, всемирное координированное время).

Значение TZ может быть представлено в одном из двух форматов. Первый формат — строка символов, которые явно описывают используемый часовой пояс:

```
std offset[dst[offset][,start[/time],end[/time]]]
```

В спецификации нет пробелов. Строка std определяет аббревиатуру часового пояса и должна содержать три или более символа алфавита. Если она заключена между знаками "меньше" (<) и "больше" (>), набор символов расширяется за счет добавления знаков "плюс" (+), "минус" (-) и цифр. Строка offset, следующая непосредственно за std, обозначает время, которое необходимо добавить к локальному, чтобы получить Всемирное координированное время (UTC). Значение offset положительно, если локальный часовой пояс находится западнее Гринвичского меридиана, и отрицательна, если восточнее. Количество часов колеблется от 0 до 24, а минут и секунд — от 00 до 59:

```
[+|-]чч[:мм[:сс]]
```

Пробелов быть не должно. Строки dst и offset задают название и смещение соответствующего часового пояса по летнему времени. Если offset не указано, то по умолчанию используется значение на час больше поясного времени.

Полем start определяется начало периода летнего времени, а полем end определяется момент перехода обратно на поясное время. Эти поля могут быть представлены в следующих форматах:

Jn

Номер n — это день по Юлианскому календарю (от 1 до 365). Високосный день не учитывается. В этом формате 29 февраля не может быть представлено; 28 февраля — это 59 день, а 1 марта всегда 60 день.

n

Номер n — это день по Юлианскому календарю (от 1 до 365). 29 февраля в високосном году учитывается.

Mm.w.d

Номер d — это день (0 <= d <= 6) в неделе w (1 <= w <= 5) и месяце m (1 <= m <= 12). Неделя номер 1 — это первая неделя, в которой есть день d, а неделя номер 5 — это последняя неделя, в которой есть день d. День номер 0 — это воскресенье.

В поле time задаётся, когда по действующему времени наступает переход на другое время. Если не указано, то по умолчанию равно 02:00:00.

Вот пример для Новой Зеландии, где поясное (standard) время (NZST) на 12 часов опережает UTC, а летнее (daylight saving) время (NZDT) на 13 часов опережает UTC, которое действует с первого воскресенья октября по третье воскресенье марта, и меняется обратно в 02:00:00 (как значение по умолчанию):

```
TZ="NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0"
```

Второй формат используется, если информация о часовом поясе должна быть получена из файла:

```
:[filespec]
```

Если указание файла filespec опущено или его значение не может быть понято, то используется всемирное координированное время (UTC). Если значение filespec не пусто, то оно определяет другой файл формата tzfile(5), из которого будет получена информация о часовых поясах. Если значение filespec не начинается с символа «/», то этот файл находится в системном каталоге часовых поясов. Если отсутствует двоеточие, то будет опробован каждый из представленных выше форматов TZ.

Вот ещё один пример для Новой Зеландии:

```
TZ=":Pacific/Auckland"
```

## ОКРУЖЕНИЕ
TZ

Если эта переменная установлена, то её значение имеет приоритет над настроенным системным часовым поясом.

TZDIR

Если эта переменная установлена, то её значение имеет приоритет над путём базы данных системных часовых поясов.

## ФАЙЛЫ
/etc/localtime

Файл системного часового пояса.

/usr/share/zoneinfo/

Системный каталог базы данных часовых поясов.

/usr/share/zoneinfo/posixrules

Когда строка TZ содержит часовой пояс dst и больше ничего, то из этого файла берутся начальные/конечные правила. Его формат совпадает с tzfile(5). По умолчанию Makefile из zoneinfo создаёт его как жёсткую ссылку на tz-файл America/New_York.

Показанные файлы выше — текущие стандартные расположения файлов, но они могут быть изменены при компиляции glibc.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

tzset()

Безвредность в нитях

MT-Safe env locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

## ЗАМЕЧАНИЯ
В 4.3BSD имелась функция char *timezone(zone, dst), которая возвращала имя часового пояса, соответствующее первому аргументу (минуты западнее UTC). Если второй аргумент равнялся 0, то использовалось поясное имя, иначе использовалась версия для летнего времени.

## СМОТРИТЕ ТАКЖЕ
date(1), gettimeofday(2), time(2), ctime(3), getenv(3), tzfile(5)


ualarm

package: man-pages-ru

title: ualarm(3)

text:
# ualarm(3)

## ИМЯ
ualarm - планирует отправку сигнала через заданное число микросекунд

## ОБЗОР

```
#include <unistd.h>
```

```
useconds_t ualarm(useconds_t usecs, useconds_t interval);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

ualarm():

Начиная с glibc 2.12:

```
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)

    || /* начиная с glibc 2.19: */ _DEFAULT_SOURCE

    || /* в версиях glibc <= 2.19: */ _BSD_SOURCE
```

До glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500

## ОПИСАНИЕ
Функция ualarm() планирует отправку сигнала SIGALRM вызывающему процессу (не менее чем) через usecs микросекунд. Задержка может быть слегка больше при большой загруженности системы, из-за, собственно, времени обработки этого вызова или из-за неточности хода системных часов.

Если сигнал не будет пойман или проигнорирован, то SIGALRM уничтожит процесс.

Если аргумент interval не равен нулю, то сигналы SIGALRM будут отправляться повторно каждые interval микросекунд после первого.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Эта функция возвращает число микросекунд, оставшихся от любого ранее установленного сигнала, или 0, если сигналов не запланировано.

## ОШИБКИ
EINTR

Прервано сигналом; см. signal(7).

EINVAL

Значение usec или interval больше 1000000 (в тех системах, где это считается ошибкой).

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

ualarm()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
4.3BSD, POSIX.1-2001. В POSIX.1-2001 функция ualarm() помечена как устаревшая. В POSIX.1-2008 описание ualarm() было удалено. В 4.3BSD, SUSv2 и POSIX нет описания ошибок.

## ЗАМЕЧАНИЯ
В POSIX.1-2001 не указано, что случится, если значение usecs равно 0. В Linux (и, вероятно, в большинстве систем) произойдёт отмена любого взведённого будильника.

Тип useconds_t является беззнаковым целым типом, способным хранить целые числа в диапазоне [0,1000000]. В первоначальной реализации BSD и glibc до версии 2.1, аргументы ualarm() имели тип unsigned int. Программы будут более переносимы, если они никогда не будут явно упоминать тип useconds_t.

Взаимодействие этой функции с другими функциями таймера, такими как alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(2), timer_delete(2), timer_getoverrun(2), timer_gettime(2), timer_settime(2), usleep(3) не определено.

Эта функция устарела. Используйте вместо неё setitimer(2) или интервальные таймеры POSIX (timer_create(2) и т.д.).

## СМОТРИТЕ ТАКЖЕ
alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), usleep(3), time(7)


ulimit

title: ulimit(3)

text:
# ulimit(3)

## ИМЯ
ulimit - установка или получение пользовательских ограничений

## ОБЗОР
\#include <ulimit.h>

long ulimit(int cmd, long newlimit);

## ОПИСАНИЕ
Предупреждение: эта функция устарела. Вместо неё используйте getrlimit(2), setrlimit(2) и sysconf(3). Справку по вызову ulimit из командной строки смотрите в bash(1).

Вызов ulimit позволяет получить или установить ограничения вызывающего процесса. Аргумент cmd может принимать следующие значения:

UL_GETFSIZE

Возвращается ограничение на размер файла (в блоках по 512 байтов).

UL_SETFSIZE

Устанавливается ограничение размера файла.

3

Возвращается максимально возможный адрес сегмента данных (не реализовано в Linux).

4

Возвращается максимальное количество файлов, которое может открыть вызывающий процесс (реализовано, но нет символической константы).

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении ulimit возвращает неотрицательное число. В случае ошибки возвращается -1, а значение errno устанавливается соответствующим образом.

## ОШИБКИ
EPERM

Непривилегированный процесс пытается увеличить лимит.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

ulimit()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, POSIX.1-2001. В POSIX.1-2008 функция ulimit() помечена как устаревшая.

## СМОТРИТЕ ТАКЖЕ
bash(1), getrlimit(2), setrlimit(2), sysconf(3)


undocumented

title: undocumented(3)

text:
# undocumented(3)

## ИМЯ
undocumented - недокументированные библиотечные функции

## ОБЗОР
Недокументированные библиотечные функции

## ОПИСАНИЕ
В этой справочной странице перечислены библиотечные функции, реализованные в стандартных библиотеках, но для которых пока нет справочных страниц.

### Содействие
Если вы располагаете информацией об этих функциях, посмотрите исходный код, напишите справочную страницу (в том же стиле, что и остальные документы Linux в справочном разделе 3) и отправьте её на адрес mtk.manpages@gmail.com для того, чтобы она вошла в следующий выпуск страниц.

### Список
authdes_create(3), authdes_getucred(3), authdes_pk_create(3), clntunix_create(3), creat64(3), dn_skipname(3), fcrypt(3), fp_nquery(3), fp_query(3), fp_resstat(3), freading(3), freopen64(3), fseeko64(3), ftello64(3), ftw64(3), fwscanf(3), get_avphys_pages(3), getdirentries64(3), getmsg(3), getnetname(3), get_phys_pages(3), getpublickey(3), getsecretkey(3), h_errlist(3), host2netname(3), hostalias(3), inet_nsap_addr(3), inet_nsap_ntoa(3), init_des(3), libc_nls_init(3), mstats(3), netname2host(3), netname2user(3), nlist(3), obstack_free(3), parse_printf_format(3), p_cdname(3), p_cdnname(3), p_class(3), p_fqname(3), p_option(3), p_query(3), printf_size(3), printf_size_info(3), p_rr(3), p_time(3), p_type(3), putlong(3), putshort(3), re_compile_fastmap(3), re_compile_pattern(3), register_printf_function(3), re_match(3), re_match_2(3), re_rx_search(3), re_search(3), re_search_2(3), re_set_registers(3), re_set_syntax(3), res_send_setqhook(3), res_send_setrhook(3), ruserpass(3), setfileno(3), sethostfile(3), svc_exit(3), svcudp_enablecache(3), tell(3), tr_break(3), tzsetwall(3), ufc_dofinalperm(3), ufc_doit(3), user2netname(3), wcschrnul(3), wcsftime(3), wscanf(3), xdr_authdes_cred(3), xdr_authdes_verf(3), xdr_cryptkeyarg(3), xdr_cryptkeyres(3), xdr_datum(3), xdr_des_block(3), xdr_domainname(3), xdr_getcredres(3), xdr_keybuf(3), xdr_keystatus(3), xdr_mapname(3), xdr_netnamestr(3), xdr_netobj(3), xdr_passwd(3), xdr_peername(3), xdr_rmtcall_args(3), xdr_rmtcallres(3), xdr_unixcred(3), xdr_yp_buf(3), xdr_yp_inaddr(3), xdr_ypbind_binding(3), xdr_ypbind_resp(3), xdr_ypbind_resptype(3), xdr_ypbind_setdom(3), xdr_ypdelete_args(3), xdr_ypmaplist(3), xdr_ypmaplist_str(3), xdr_yppasswd(3), xdr_ypreq_key(3), xdr_ypreq_nokey(3), xdr_ypresp_all(3), xdr_ypresp_all_seq(3), xdr_ypresp_key_val(3), xdr_ypresp_maplist(3), xdr_ypresp_master(3), xdr_ypresp_order(3), xdr_ypresp_val(3), xdr_ypstat(3), xdr_ypupdate_args(3), yp_all(3), yp_bind(3), yperr_string(3), yp_first(3), yp_get_default_domain(3), yp_maplist(3), yp_master(3), yp_match(3), yp_next(3), yp_order(3), ypprot_err(3), yp_unbind(3), yp_update(3)


ungetwc

title: ungetwc(3)

text:
# ungetwc(3)

## ИМЯ
ungetwc - отправка широкого символа обратно в поток FILE

## ОБЗОР

```
#include <wchar.h>
```

```
wint_t ungetwc(wint_t wc, FILE *stream);
```

## ОПИСАНИЕ
Функция ungetwc() — это эквивалент функции ungetc(3) для широких символов. Она отправляет широкий символ обратно в поток stream и возвращает его.

Если wc равно WEOF, то возвращается WEOF. Если wc — это некорректный широкий символ, то значение errno устанавливается в EILSEQ и возвращается WEOF.

Если wc — это корректный широкий символ, то он отправляется обратно в поток и, таким образом, становится доступным для последующих операций чтения широких символов. Индикатор позиции в файле уменьшается на единицу или более. Индикатор конца файла очищается. Непосредственный носитель файла при этой операции не задействуется.

Замечание: wc не должен быть последним широким символом в потоке; он может быть любым другим корректным широким символом.

Если реализация поддерживает несколько последовательных операций возвращения подряд, то возвращённые широкие символы будут прочитаны в обратном порядке; однако гарантированно работает только однократный возврат.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении функция ungetwc возвращает wc или WEOF в случае ошибки.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

ungetwc()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение ungetwc() зависит от категории LC_CTYPE текущей локали.

## СМОТРИТЕ ТАКЖЕ
fgetwc(3)


title: unlocked_stdio(3)

text:
# unlocked_stdio(3)

## ИМЯ
getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked - неблокирующие функции стандартного ввода-вывода

## ОБЗОР

```
#include <stdio.h>
```

```
int getc_unlocked(FILE *stream);
int getchar_unlocked(void);
int putc_unlocked(int c, FILE *stream);
int putchar_unlocked(int c);
```

```
void clearerr_unlocked(FILE *stream);
int feof_unlocked(FILE *stream);
int ferror_unlocked(FILE *stream);
int fileno_unlocked(FILE *stream);
int fflush_unlocked(FILE *stream);
int fgetc_unlocked(FILE *stream);
int fputc_unlocked(int c, FILE *stream);
size_t fread_unlocked(void *ptr, size_t size, size_t n,
                      FILE *stream);
size_t fwrite_unlocked(const void *ptr, size_t size, size_t n,
                      FILE *stream);
```

```
char *fgets_unlocked(char *s, int n, FILE *stream);
int fputs_unlocked(const char *s, FILE *stream);
#include <wchar.h>
```

```
wint_t getwc_unlocked(FILE *stream);
wint_t getwchar_unlocked(void);
wint_t fgetwc_unlocked(FILE *stream);
wint_t fputwc_unlocked(wchar_t wc, FILE *stream);
wint_t putwc_unlocked(wchar_t wc, FILE *stream);
wint_t putwchar_unlocked(wchar_t wc);
wchar_t *fgetws_unlocked(wchar_t *ws, int n, FILE *stream);
int fputws_unlocked(const wchar_t *ws, FILE *stream);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

getc_unlocked(), getchar_unlocked(), putc_unlocked(), putchar_unlocked():

/* начиная с glibc 2.24: */ _POSIX_C_SOURCE >= 199309L

|| /* Glibc versions <= 2.23: */ _POSIX_C_SOURCE

|| /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

clearerr_unlocked(), feof_unlocked(), ferror_unlocked(), fileno_unlocked(), fflush_unlocked(), fgetc_unlocked(), fputc_unlocked(), fread_unlocked(), fwrite_unlocked():

/* начиная с glibc 2.19: */ _DEFAULT_SOURCE

|| /* в версиях glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

fgets_unlocked(), fputs_unlocked(), getwc_unlocked(), getwchar_unlocked(), fgetwc_unlocked(), fputwc_unlocked(), putwchar_unlocked(), fgetws_unlocked(), fputws_unlocked():

_GNU_SOURCE

## ОПИСАНИЕ
Все эти функции ведут себя так же, как и их аналоги без суффикса «_unlocked», за исключением того, что они не используют блокировку (они не устанавливают блокировки самостоятельно и не проверяют наличие других блокировок) и, таким образом, не являются нитебезопасными. Смотрите flockfile(3).

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

getc_unlocked(), putc_unlocked(), clearerr_unlocked(), fflush_unlocked(), fgetc_unlocked(), fputc_unlocked(), fread_unlocked(), fwrite_unlocked(), fgets_unlocked(), fputs_unlocked(), getwc_unlocked(), fgetwc_unlocked(), fputwc_unlocked(), putwc_unlocked(), fgetws_unlocked(), fputws_unlocked()

Безвредность в нитях

MT-Safe race:stream

getchar_unlocked(), getwchar_unlocked()

Безвредность в нитях

MT-Unsafe race:stdin

putchar_unlocked(), putwchar_unlocked()

Безвредность в нитях

MT-Unsafe race:stdout

feof_unlocked(), ferror_unlocked(), fileno_unlocked()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
Четыре функции getc_unlocked(), getchar_unlocked(), putc_unlocked() и putchar_unlocked() являются частью стандартов POSIX.1-2001 и POSIX.1-2008.

В некоторых систем UNIX и последних версиях glibc встречаются нестандартные варианты функций *_unlocked(). Вероятно, не стоит их использовать.

## СМОТРИТЕ ТАКЖЕ
flockfile(3), stdio(3)


unlockpt

title: unlockpt(3)

summary: разблокирует пару основной/подчинённый псевдо\-терминал

text:
# unlockpt(3)

## ИМЯ
unlockpt - разблокирует пару основной/подчинённый псевдо-терминал

## ОБЗОР
\#define _XOPEN_SOURCE

\#include <stdlib.h>

int unlockpt(int fd);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

unlockpt():

начиная с glibc 2.24:

_XOPEN_SOURCE >= 500 ||

(_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)

glibc 2.23 и старее:

_XOPEN_SOURCE

## ОПИСАНИЕ
Функция unlockpt() разблокирует устройство подчиненного псевдо-терминала соответствующего основному псевдо-терминалу, на который ссылается fd.

Функция unlockpt() должна вызываться перед открытием подчинённой стороны псевдо-терминала.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении unlockpt() возвращает 0. Иначе возвращается -1 и переменная errno устанавливается соответствующим образом.

## ОШИБКИ
EBADF

Значение fd не является правильным файловым дескриптором, открытым для записи.

EINVAL

Значение fd не связано с основным псевдо-терминалом.

## ВЕРСИИ
Функция unlockpt() появилась в glibc начиная с версии 2.1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

unlockpt()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008.

## СМОТРИТЕ ТАКЖЕ
grantpt(3), posix_openpt(3), ptsname(3), pts(4), pty(7)


updwtmp

title: updwtmp(3)

summary: добавляет запись в файл wtmp

text:
# updwtmp(3)

## ИМЯ
updwtmp, logwtmp - добавляет запись в файл wtmp

## ОБЗОР

```
#include <utmp.h>
```

```
void updwtmp(const char *wtmp_file, const struct utmp *ut);
void logwtmp(const char *line, const char *name, const char *host);
```

Для logwtmp(): компонуется при указании параметра -lutil.

## ОПИСАНИЕ
Функция updwtmp() добавляет структуру utmp ut в файл wtmp.

Функция logwtmp() создаёт структуру utmp из line, name, host, текущего времени и текущего идентификатора процесса. После этого вызывается updwtmp() для добавления структуры в файл wtmp.

## ФАЙЛЫ
/var/log/wtmp

база данных предыдущих пользовательских входов в систему

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

updwtmp(), logwtmp()

Безвредность в нитях

MT-Unsafe sig:ALRM timer

## СООТВЕТСТВИЕ СТАНДАРТАМ
Отсутствует в POSIX.1. Имеется в Solaris, NetBSD и, возможно, в других системах.

## ЗАМЕЧАНИЯ
Для схожести с другими функциями «utmpx» (смотрите getutxent(3)), в glibc (начиная с версии 2.1) имеется:

```
#include <utmpx.h>
void updwtmpx (const char *wtmpx_file, const struct utmpx *utx);
```

Эта функция выполняет ту же задачу что и updwtmp(); отличие в том, что типом последнего аргумента является структура utmpx.

## СМОТРИТЕ ТАКЖЕ
getutxent(3), wtmp(5)


uselocale

title: uselocale(3)

text:
# uselocale(3)

## ИМЯ
uselocale - задаёт/получает локаль для вызывающей нити

## ОБЗОР

```
#include <locale.h>
```

```
locale_t uselocale(locale_t newloc);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

uselocale():

Начиная с glibc 2.10:

_XOPEN_SOURCE >= 700

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция uselocale() задаёт текущую локаль в вызвавшей нити и возвращает использовавшуюся локаль в этой нити ранее. После успешного выполнения uselocale() любые выполняемые нитью вызовы функций, зависящие от локали, будут работать с учётом установленной локали newloc.

В аргументе newloc можно указать одно из следующих значений:

Обработчик, полученный от вызовов newlocale(3) или duplocale(3)

Текущая локаль вызвавшей нити будет равна указанной локали.

Специальный обработчик объекта локали LC_GLOBAL_LOCALE

Текущая локаль вызвавшей нити будет равна глобальной локали, установленной setlocale(3).

(locale_t) 0

Текущая локаль вызвавшей нити останется неизменной (и текущая локаль возвращается как результат работы функции).

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении uselocale() возвращает обработчик локали, который был установлен предыдущим вызовом uselocale() в этой нити или LC_GLOBAL_LOCALE, если это первый вызов. При ошибке возвращается (locale_t) 0, а errno присваивается код ошибки.

## ОШИБКИ
EINVAL

Значение newloc не указывает на допустимый объект локали.

## ВЕРСИИ
Функция uselocale() впервые появилась в версии 2.3 библиотеки GNU C.

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008.

## ЗАМЕЧАНИЯ
В отличие от setlocale(3), uselocale() не позволяет выборочно указывать отдельные категории локали. Для задания локали, которая отличается только отдельными категориями от текущей локали, используйте вызов duplocale(3) и newlocale(3) для получения эквивалента объекта локали для текущей локали и измените желаемые категории в этом объекте.

## ПРИМЕР
Смотрите newlocale(3) и duplocale(3).

## СМОТРИТЕ ТАКЖЕ
locale(1), duplocale(3), freelocale(3), newlocale(3), setlocale(3), locale(5), locale(7)


usleep

title: usleep(3)

text:
# usleep(3)

## ИМЯ
usleep - задерживает выполнение на определенное количество микросекунд

## ОБЗОР

```
#include <unistd.h>
```

```
int usleep(useconds_t usec);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

usleep():

Начиная с glibc 2.12:

```
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)

    || /* начиная с glibc 2.19: */ _DEFAULT_SOURCE

    || /* в версиях glibc <= 2.19: */ _BSD_SOURCE
```

До glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500

## ОПИСАНИЕ
Функция usleep() приостанавливает выполнение вызвавшей нити на (не менее) usec микросекунд. Остановка может продлиться слегка больше при большой загруженности системы, из-за, собственно, времени обработки этого вызова или из-за неточности хода системных часов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении usleep() возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

## ОШИБКИ
EINTR

Прервано сигналом; см. signal(7).

EINVAL

Значение usec больше или равно 1000000 (в тех системах, где это считается ошибкой).

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

usleep()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
4.3BSD, POSIX.1-2001. В POSIX.1-2001 эта функция объявлена устаревшей; вместо неё используйте nanosleep(2). Из POSIX.1-2008 описание usleep() было удалено.

В первоначальной реализации BSD и в glibc до версии 2.2.2 типом возвращаемого значение функции был void. В версии POSIX возвращается int, и этот прототип также используется в glibc начиная с версии 2.2.2.

Возвращаемая ошибка EINVAL определена только в SUSv2 и POSIX.1-2001.

## ЗАМЕЧАНИЯ
Тип useconds_t является беззнаковым целым типом, способным хранить целые числа в диапазоне [0,1000000]. Программы будут иметь более высокий уровень переносимости на другие ОС, если они никогда не будут явно упоминать этот тип. Используйте

```
#include <unistd.h>
...

    unsigned int usecs;
...

    usleep(usecs);
```

Взаимодействие этой функции с сигналом SIGALRM и другими функциями таймера, такими как alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(2), timer_delete(2), timer_getoverrun(2), timer_gettime(2), timer_settime(2), ualarm(3), не определено.

## СМОТРИТЕ ТАКЖЕ
alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), sleep(3), ualarm(3), time(7)


vlimit

title: vlimit(3)

text:
# vlimit(3)

See the file man2/getrlimit.2.


vtimes

title: vtimes(3)

text:
# vtimes(3)

See the file man2/getrusage.2.


wcpcpy

title: wcpcpy(3)

text:
# wcpcpy(3)

## ИМЯ
wcpcpy - копирует широкосимвольную строку и возвращает указатель на её конец

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcpcpy(wchar_t *dest, const wchar_t *src);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wcpcpy():

Начиная с glibc 2.10:

_POSIX_C_SOURCE >= 200809L

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция wcpcpy() является широкосимвольным аналогом функции stpcpy(3). Она копирует широкосимвольную строку по указателю src, включая завершающий широкий символ null (L'\0'), в массив, указанный в dest.

Строки не должны пересекаться.

Программист должен проверить, что в dest есть место по крайней мере для wcslen(src)+1 широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcpcpy() возвращает указатель на конец широкосимвольной строки dest, то есть на завершающий широкий символ null.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcpcpy()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008.

## СМОТРИТЕ ТАКЖЕ
strcpy(3), wcscpy(3)


wcpncpy

title: wcpncpy(3)

text:
# wcpncpy(3)

## ИМЯ
wcpncpy - копирует широкосимвольную строку фиксированной длины и возвращает указатель на её конец

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcpncpy(wchar_t *dest, const wchar_t *src, size_t n);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wcpncpy():

Начиная с glibc 2.10:

_POSIX_C_SOURCE >= 200809L

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция wcpncpy() является эквивалентом stpncpy(3) для широких символов. Она копирует, как минимум, n широких символов из широкосимвольной строки, на которую указывает src (включая конечный символ (L'\0')), в массив, на который указывает dest. В dest записывается ровно n символов. Если длина wcslen(src) меньше n, то оставшиеся широкие символы в массиве, на который указывает dest, заполняются символами L'\0'. Если длина wcslen(src) больше или равна n, то строка, на которую указывает dest, не будет оканчиваться L'\0'.

Строки не должны пересекаться.

Программист должен проверить, что в dest есть место по крайней мере для n широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcpncpy() возвращает указатель на последний записанный широкий символ, то есть на dest+n-1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcpncpy()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008.

## СМОТРИТЕ ТАКЖЕ
stpncpy(3), wcsncpy(3)


wcrtomb

title: wcrtomb(3)

text:
# wcrtomb(3)

## ИМЯ
wcrtomb - преобразование широкого символа в многобайтовую последовательность

## ОБЗОР

```
#include <wchar.h>
```

```
size_t wcrtomb(char *s, wchar_t wc, mbstate_t *ps);
```

## ОПИСАНИЕ
В основном, функция предназначена для работы, когда s не равно NULL и wc не равно широкому символу null (L'\0'). В этом случае функция wcrtomb() преобразует широкий символ wc в его многобайтовое представление и заносит его в начало массива символов, на который указывает s. Функция обновляет состояние сдвига *ps и возвращает длину получившегося многобайтового представления, то есть количество байтов, записанных в s.

Также есть вариант, когда s не равно NULL, но wc равно широкому символу null (L'\0'). В этом случае функция wcrtomb() заносит в массив символов, на который указывает s, последовательность сдвига, оканчивающуюся байтом '\0', необходимую для возврата *ps в начальное положение. Состояние сдвига *ps обновляется (переходит в исходное) и возвращается длина последовательности сдвига плюс один, то есть количество байт, записанных в s.

Третий случай — это когда s равно NULL. Тогда wc игнорируется, а функция возвращает

wcrtomb(buf, L'\0', ps)

где buf — внутренний анонимный буфер.

Во всех вышеперечисленных случаях, если ps равно NULL, то используется статическое анонимное состояние, известное только функции wcrtomb().

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcrtomb() возвращает количество байтов, которые уже записаны или должны быть записаны в массив, на который указывает s. Если значение wc не может быть представлено как многобайтовая последовательность (в соответствии с текущей локалью), то возвращается (size_t) -1, а errno присваивается значение EILSEQ.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcrtomb()

Безвредность в нитях

MT-Unsafe race:wcrtomb/!ps

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wcrtomb() зависит от категории LC_CTYPE текущей локали.

Передавать NULL в качестве ps небезопасно при работе с нитями.

## СМОТРИТЕ ТАКЖЕ
mbsinit(3), wcsrtombs(3)


wcscasecmp

title: wcscasecmp(3)

text:
# wcscasecmp(3)

## ИМЯ
wcscasecmp - сравнивает две строки широких символов, игнорируя их регистр

## ОБЗОР

```
#include <wchar.h>
```

```
int wcscasecmp(const wchar_t *s1, const wchar_t *s2);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wcscasecmp():

Начиная с glibc 2.10:

_POSIX_C_SOURCE >= 200809L

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция wcscasecmp() является широкосимвольным аналогом функции strcasecmp(3). Она сравнивает широкосимвольную строку по указателю s1 с широкосимвольной строкой по указателю s2, не учитывая разницы в регистрах символов (towupper(3), towlower(3)).

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcscasecmp() возвращает ноль, если строки широких символов s1 и s2 равны, за исключением различий в регистрах. Функция возвращает положительное число, если s1 больше s2, без учета регистра. Функция возвращает отрицательное число, если s1 меньше s2, без учета регистра.

## ВЕРСИИ
Функция wcscasecmp() определена в glibc начиная с версии 2.1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcscasecmp()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008. Эта функция не определена в POSIX.1-2001 и широко не распространена среди других систем.

## ЗАМЕЧАНИЯ
Поведение wcscasecmp() зависит от категории LC_CTYPE текущей локали.

## СМОТРИТЕ ТАКЖЕ
strcasecmp(3), wcscmp(3)


wcscat

title: wcscat(3)

summary: объединяет две широкосимвольные строки

text:
# wcscat(3)

## ИМЯ
wcscat - объединяет две широкосимвольные строки

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcscat(wchar_t *dest, const wchar_t *src);
```

## ОПИСАНИЕ
Функция wcscat() является широкосимвольным аналогом функции strcat(3). Она копирует широкосимвольную строку по указателю src, включая завершающий широкий символ null (L'\0'), в конец широкосимвольной строки, указанной в dest.

Строки не должны пересекаться.

Программист должен проверить, что в dest есть место по крайней мере для wcslen(dest)+wcslen(src)+1 широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcscat() возвращает dest.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcscat()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strcat(3), wcpcpy(3), wcscpy(3), wcsncat(3)


wcschr

title: wcschr(3)

text:
# wcschr(3)

## ИМЯ
wcschr - ищет широкий символ в широкосимвольной строке

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcschr(const wchar_t *wcs, wchar_t wc);
```

## ОПИСАНИЕ
Функция wcschr() является широкосимвольным аналогом функции strchr(3). Она ищет первое появление широкого символа wc в строке, на которую указывает wcs.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcschr() возвращает указатель на первый обнаруженный символ wc в широкосимвольной строке, указанный в wcs, или NULL, если wc в строке отсутствует.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcschr()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strchr(3), wcspbrk(3), wcsrchr(3), wcsstr(3), wmemchr(3)


wcscmp

title: wcscmp(3)

summary: сравнение двух широкосимвольных строк

text:
# wcscmp(3)

## ИМЯ
wcscmp - сравнение двух широкосимвольных строк

## ОБЗОР

```
#include <wchar.h>
```

```
int wcscmp(const wchar_t *s1, const wchar_t *s2);
```

## ОПИСАНИЕ
Функция wcscmp() является широкосимвольным аналогом функции strcmp(3). Она сравнивает широкосимвольную строку по указателю s1 с широкосимвольной строкой по указателю s2.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcscmp() возвращает ноль, если строки в s1 и s2 равны. Она возвращает положительное целое, если в первой отличающейся позиции i широкий символ s1[i] больше, чем s2[i]. Она возвращает отрицательное целое, если в первой отличающейся позиции i широкий символ s1[i] меньше, чем s2[i].

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcscmp()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strcmp(3), wcscasecmp(3), wmemcmp(3)


wcscpy

title: wcscpy(3)

summary: копирует широкосимвольную строку

text:
# wcscpy(3)

## ИМЯ
wcscpy - копирует широкосимвольную строку

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcscpy(wchar_t *dest, const wchar_t *src);
```

## ОПИСАНИЕ
Функция wcscpy() является широкосимвольным аналогом функции strcpy(3). Она копирует широкосимвольную строку по указателю src, включая завершающий широкий символ null (L'\0'), в массив, указанный в dest.

Строки не должны пересекаться.

Программист должен проверить, что в dest есть место по крайней мере для wcslen(src)+1 широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
wcscpy() возвращает dest.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcscpy()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strcpy(3), wcpcpy(3), wcscat(3), wcsdup(3), wmemcpy(3)


wcscspn

title: wcscspn(3)

text:
# wcscspn(3)

## ИМЯ
wcscspn - поиск широкого символа из набора в широкосимвольной строке

## ОБЗОР

```
#include <wchar.h>
```

```
size_t wcscspn(const wchar_t *wcs, const wchar_t *reject);
```

## ОПИСАНИЕ
Функция wcscspn() — это эквивалент strcspn(3), но работает с широкими символами. Она определяет максимальную длину начального сегмента строки wcs, в котором нет ни одного широкого символа из строки reject. Другими словами, она ищет в строке wcs первый символ, содержащийся в широкосимвольной строке reject.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcscspn() возвращает максимальную длину начального сегмента строки wcs, в котором нет ни одного широкого символа из строки reject. Другими словами, она возвращает позицию первого широкого символа в строке wcs, содержащегося в широкосимвольной строке reject, или wcslen(wcs), если не найдёт таких символов.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcscspn()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strcspn(3), wcspbrk(3), wcsspn(3)


wcsdup

title: wcsdup(3)

summary: дублирует широкосимвольную строку

text:
# wcsdup(3)

## ИМЯ
wcsdup - дублирует широкосимвольную строку

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcsdup(const wchar_t *s);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wcsdup():

Начиная с glibc 2.10:

_POSIX_C_SOURCE >= 200809L

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция wcsdup() является широкосимвольным аналогом функции sstrdup(3). Она размещает в памяти и возвращает широкосимвольную строку — копию широкосимвольной строки, на которую указывает значение s.

Память для размещения новой широкосимвольной строки выделяется посредством malloc(3) и должна освобождаться посредством free(3).

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении wcsdup() возвращает указатель на новую строку широких символов. В случае ошибки возвращается NULL, а в errno записывается код ошибки.

## ОШИБКИ
ENOMEM

Недостаточно памяти для размещения копии строки.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsdup()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008. Эта функция не определена в POSIX.1-2001 и широко не распространена среди других систем.

## СМОТРИТЕ ТАКЖЕ
strdup(3), wcscpy(3)


wcslen

title: wcslen(3)

text:
# wcslen(3)

## ИМЯ
wcslen - определяет длину широкосимвольной строки

## ОБЗОР

```
#include <wchar.h>
```

```
size_t wcslen(const wchar_t *s);
```

## ОПИСАНИЕ
Функция wcslen() является широкосимвольным аналогом функции strlen(3). Она определяет длину широкосимвольной строки по указателю s, не учитывая завершающий широкий символ null (L'\0').

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcslen() возвращает количество широких символов в s.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcslen()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strlen(3)


wcsncasecmp

title: wcsncasecmp(3)

text:
# wcsncasecmp(3)

## ИМЯ
wcsncasecmp - сравнивает две широкосимвольные строки заданного размера, игнорируя их регистр

## ОБЗОР

```
#include <wchar.h>
```

```
int wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wcsncasecmp():

Начиная с glibc 2.10:

_POSIX_C_SOURCE >= 200809L

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция wcsncasecmp() является широкосимвольным аналогом функции strncasecmp(3). Она сравнивает широкосимвольную строку по указателю s1 с широкосимвольной строкой по указателю s2, не более n широких символов в каждой строке, и не учитывая разницы в регистре символов (towupper(3), towlower(3)).

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsncasecmp() возвращает ноль, если широкосимвольные строки s1 и s2, обрезанные до n знаков, одинаковы, за исключением различий в регистре. Функция возвращает положительное число, если s1 больше урезанной s2, без учета регистра. Функция возвращает отрицательное число, если s1 меньше урезанной s2, без учета регистра.

## ВЕРСИИ
Функция wcsncasecmp() определена в glibc начиная с версии 2.1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsncasecmp()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008. Эта функция не определена в POSIX.1-2001 и широко не распространена среди других систем.

## ЗАМЕЧАНИЯ
Поведение wcsncasecmp() зависит от категории LC_CTYPE текущей локали.

## СМОТРИТЕ ТАКЖЕ
strncasecmp(3), wcsncmp(3)


wcsncat

title: wcsncat(3)

summary: объединяет две широкосимвольные строки

text:
# wcsncat(3)

## ИМЯ
wcsncat - объединяет две широкосимвольные строки

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcsncat(wchar_t *dest, const wchar_t *src, size_t n);
```

## ОПИСАНИЕ
Функция wcsncat() является эквивалентом функции strncat(3) для широких символов. Она копирует не более n широких символов широкосимвольной строки, на которую указывает src, в конец широкосимвольной строки, на которую указывает dest, добавляя к ней конечный широкий символ null (L'\0').

Строки не должны пересекаться.

Программист должен проверить, что в dest есть место по крайней мере для wcslen(dest)+n+1 широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
wmemset() возвращает wcs.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsncat()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strncat(3), wcscat(3)


wcsncmp

title: wcsncmp(3)

text:
# wcsncmp(3)

## ИМЯ
wcsncmp - сравнивает две широкосимвольные строки заданного размера

## ОБЗОР

```
#include <wchar.h>
```

```
int wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n);
```

## ОПИСАНИЕ
Функция wcsncmp() является эквивалентом функции strncmp(3) для широких символов. Она сравнивает широкосимвольную строку, на которую указывает s1, со строкой, на которую указывает s2. Сравнивается максимум n широких символов каждой строки. Сравнение каждой строки производится до первого встретившегося широкого символа null (L'\0'), если таковой встретится.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsncmp() возвращает ноль, если строки широких символов, на которые указывают s1 и s2, урезанные до n знаков, равны. Функция возвращает целое число больше нуля, если в первой не совпадающей позиции i (i < n) соответствующий широкий символ s1[i] больше s2[i]. Функция возвращает целое число меньше нуля, если в первой не совпадающей позиции i (i < n) соответствующий широкий символ s1[i] меньше s2[i].

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsncmp()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strncmp(3), wcsncasecmp(3)


wcsncpy

title: wcsncpy(3)

text:
# wcsncpy(3)

## ИМЯ
wcsncpy - копирует широкосимвольную строку фиксированной длины

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcsncpy(wchar_t *dest, const wchar_t *src, size_t n);
```

## ОПИСАНИЕ
Функция wcsncpy() является эквивалентом strncpy(3) для широких символов. Она копирует, как минимум, n широких символов из широкосимвольной строки, на которую указывает src (включая конечный символ (L'\')), в массив, на который указывает dest. В dest записывается ровно n широких символов. Если длина wcslen(src) меньше n, то оставшиеся широкие символы в массиве, на который указывает dest, заполняются широкими символами null. Если длина wcslen(src) больше или равна n, то строка, на которую указывает dest, не будет оканчиваться широким символом null.

Строки не должны пересекаться.

Программист должен проверить, что в dest есть место по крайней мере для n широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
wcsncpy() возвращает dest.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsncpy()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strncpy(3)


wcsnlen

title: wcsnlen(3)

text:
# wcsnlen(3)

## ИМЯ
wcsnlen - определяет длину широкосимвольной строки постоянного размера

## ОБЗОР

```
#include <wchar.h>
```

```
size_t wcsnlen(const wchar_t *s, size_t maxlen);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wcsnlen():

Начиная с glibc 2.10:

_POSIX_C_SOURCE >= 200809L

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция wcsnlen() — это эквивалент strnlen(3), но работает с широкими символами. Она возвращает количество широких символов в строке, указанной в s, не считая завершающего широкого символа null (L'\0') и не более чем maxlen широких символов (примечание: данный параметр не количество байт). Для этого wcsnlen() просматривает только первые maxlen широких символов начиная с s и никогда не учитывает символы, расположенные за s+maxlen.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsnlen() возвращает wcslen(s), если оно меньше maxlen, или maxlen, если среди первых maxlen широких символов строки, на которую указывает s, не встретился широкий символ null.

## ВЕРСИИ
Функция wcsnlen() определена в glibc начиная с версии 2.1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsnlen()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008.

## СМОТРИТЕ ТАКЖЕ
strnlen(3), wcslen(3)


wcsnrtombs

title: wcsnrtombs(3)

text:
# wcsnrtombs(3)

## ИМЯ
wcsnrtombs - преобразует широкосимвольную строки в многобайтовую строку

## ОБЗОР

```
#include <wchar.h>
```

```
size_t wcsnrtombs(char *dest, const wchar_t **src, size_t nwc,
                  size_t len, mbstate_t *ps);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wcsnrtombs():

Начиная с glibc 2.10:

_POSIX_C_SOURCE >= 200809L

До glibc 2.10:

_GNU_SOURCE

## ОПИСАНИЕ
Функция wcsnrtombs() похожа на функцию wcsrtombs(3), исключая то, что количество преобразуемых широких символов, начиная с *src, ограничено nwc.

Если dest не равно NULL, функция wcsnrtombs() преобразует не более nwc широких символов из широкосимвольной строки *src в многобайтовую строку, начиная с dest. В dest будет записано максимум len байтов. Обновляется состояние смещения в *ps. Замена происходит путем повторяющихся вызовов wcrtomb(dest, *src, ps) до тех пор, пока они выполняются без ошибок. При этом значение dest увеличивается на количество записанных байтов, а *src — на единицу. Замена может быть остановлена в трех случаях:

1.

Встретившийся широкий символ нельзя представить в виде многобайтовой последовательности (в соответствии с текущей системной локалью). В этом случае *src будет указывать на неправильный широкий символ, возвращается (size_t) -1, а значение errno становится равным EILSEQ.

2.

Было преобразовано nwc широких символов, и при этом не встретился широкий символ null (L'\0'), или произошла остановка по достижению ограничения на длину. В этом случае *src также будет указывать на следующий широкий символ, подлежащий преобразованию, и возвращается количество байтов, записанных в dest.

3.

Широкосимвольная строка была полностью преобразована, включая завершающий широкий символ null (побочный эффект: *ps возвращается в начальное состояние). В этом случае значение *src устанавливается равным NULL и возвращается количество байтов, записанных в dest, не считая завершающего байта null ('\0').

Если значение dest равно NULL, то len игнорируется и преобразование выполняется как описано выше, исключая то, что преобразованные байты не записываются в память и нет ограничения на длину строки назначения.

В обоих перечисленных случаях, если ps равно NULL, то используется статическое анонимное состояние, известное только функции wcsnrtombs().

Программист должен быть уверен, что в dest достаточно места для, по крайней мере, len байт.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsrntombs() возвращает количество байт в полученной многобайтовой последовательности, не включая завершающий байт null. Если встречается широкий символ, который невозможно преобразовать, возвращается (size_t) -1 и значение errno становится равным EILSEQ.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsnrtombs()

Безвредность в нитях

MT-Unsafe race:wcsnrtombs/!ps

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2008.

## ЗАМЕЧАНИЯ
Поведение wcsnrtombs() зависит от категории LC_CTYPE текущей локали.

Передавать NULL в качестве ps небезопасно при работе с нитями.

## СМОТРИТЕ ТАКЖЕ
iconv(3), mbsinit(3), wcsrtombs(3)


wcspbrk

title: wcspbrk(3)

text:
# wcspbrk(3)

## ИМЯ
wcspbrk - ищет широкий символ из набора в широкосимвольной строке

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcspbrk(const wchar_t *wcs, const wchar_t *accept);
```

## ОПИСАНИЕ
Функция wcspbrk() является широкосимвольным аналогом функции strpbrk(3). Она ищет первое появление в широкосимвольной строке, на которую указывает wcs, любого символа из широкосимвольной строки, на которую указывает accept.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcspbrk() возвращает указатель на первый обнаруженный символ из строки accept в широкосимвольной строке, указанной в wcs. Если в wcs нет подобных символов, то возвращается NULL.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcspbrk()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strpbrk(3), wcschr(3), wcscspn(3)


wcsrchr

title: wcsrchr(3)

text:
# wcsrchr(3)

## ИМЯ
wcsrchr - ищет широкий символ в широкосимвольной строке

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcsrchr(const wchar_t *wcs, wchar_t wc);
```

## ОПИСАНИЕ
Функция wcsrchr() является широкосимвольным аналогом функции strrchr(3). Она ищет последнее появление широкого символа wc в строке, на которую указывает wcs.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsrchr() возвращает указатель на последний обнаруженный символ wc в широкосимвольной строке, указанный в wcs, или NULL, если wc в строке отсутствует.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsrchr()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strrchr(3), wcschr(3)


wcsrtombs

title: wcsrtombs(3)

text:
# wcsrtombs(3)

## ИМЯ
wcsrtombs - преобразует широкосимвольную строку в многобайтовую строку

## ОБЗОР

```
#include <wchar.h>
```

```
size_t wcsrtombs(char *dest, const wchar_t **src,
                 size_t len, mbstate_t *ps);
```

## ОПИСАНИЕ
Если dest не равно NULL, функция wcsrtombs() преобразует широкосимвольную строку *src в многобайтовую строку, начиная с dest. В dest будет записано максимум len байтов. Обновляется состояние смещения в *ps. Замена происходит путем повторяющихся вызовов wcrtomb(dest, *src, ps) до тех пор, пока они выполняются без ошибок. При этом значение dest увеличивается на количество записанных байтов, а *src — на единицу. Замена может быть остановлена в трех случаях:

1.

Встретившийся широкий символ нельзя представить в виде многобайтовой последовательности (в соответствии с текущей системной локалью). В этом случае *src будет указывать на неправильный широкий символ, возвращается (size_t) -1, а значение errno становится равным EILSEQ.

2.

Остановка при достижении ограничения длины. В этом случае *src также будет указывать на следующий широкий символ, подлежащий преобразованию, и возвращается количество байтов, записанных в dest.

3.

Широкосимвольная строка была полностью преобразована, включая завершающий широкий символ null (L'\0') (побочный эффект: *ps возвращается в начальное состояние). В этом случае *src устанавливается равным NULL и возвращается количество байтов, записанных в dest, не считая завершающего байта null ('\0').

Если значение dest равно NULL, то len игнорируется и преобразование выполняется как описано выше, исключая то, что преобразованные байты не записываются в память и нет ограничения по длине.

В обоих перечисленных случаях, если ps равно NULL, то используется статическое анонимное состояние, известное только функции wcsrtombs().

Программист должен быть уверен, что в dest достаточно места для, по крайней мере, len байт.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsrtombs() возвращает количество байт в полученной многобайтовой последовательности, не включая завершающий байт null. Если встречается широкий символ, который невозможно преобразовать, возвращается (size_t) -1 и значение errno становится равным EILSEQ.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsrtombs()

Безвредность в нитях

MT-Unsafe race:wcsrtombs/!ps

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wcsrtombs() зависит от категории LC_CTYPE текущей локали.

Передавать NULL в качестве ps небезопасно при работе с нитями.

## СМОТРИТЕ ТАКЖЕ
iconv(3), mbsinit(3), wcrtomb(3), wcsnrtombs(3), wcstombs(3)


wcsspn

title: wcsspn(3)

text:
# wcsspn(3)

## ИМЯ
wcsspn - поиск в строке широких символов, исключая любой символ заданного множества широких символов

## ОБЗОР

```
#include <wchar.h>
```

```
size_t wcsspn(const wchar_t *wcs, const wchar_t *accept);
```

## ОПИСАНИЕ
Функция wcsspn() — это эквивалент strspn(3), но работает с широкими символами. Она определяет максимальную длину начального сегмента строки wcs, содержащей все символы из строки accept. Другими словами, она ищет в строке wcs первый широкий символ, не содержащийся в строке широких символов accept.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsspn() возвращает максимальную длину начального сегмента строки wcs, содержащей все широкие символы строки accept. Другими словами, она возвращает позицию первого широкого символа в строке wcs, не содержащегося в строке accept, или wcslen(wcs), если не найдёт таких символов.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsspn()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strspn(3), wcscspn(3)


wcsstr

title: wcsstr(3)

text:
# wcsstr(3)

## ИМЯ
wcsstr - ищет подстроку в широкосимвольной строке

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcsstr(const wchar_t *haystack, const wchar_t *needle);
```

## ОПИСАНИЕ
Функция wcsstr() является эквивалентом функции strstr(3) для широких символов. Она ищет положение первой широкосимвольной строки needle (без завершающего широкого символа null (L'\0')) в широкосимвольной строке haystack.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcsstr() возвращает указатель на первое появление подстроки needle в haystack. В том случае, если подстрока needle не найдена в haystack, функция возвращает NULL.

Заметим, что если needle является пустой широкосимвольной строкой, то возвращаемое значение всегда будет равно haystack.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcsstr()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
strstr(3), wcschr(3)


wcstoimax

title: wcstoimax(3)

text:
# wcstoimax(3)

## ИМЯ
wcstoimax, wcstoumax - преобразует широкосимвольную строку в целое число

## ОБЗОР

```
#include <stddef.h>
#include <inttypes.h>
```

```
intmax_t wcstoimax(const wchar_t *nptr, wchar_t **endptr, int base);
uintmax_t wcstoumax(const wchar_t *nptr, wchar_t **endptr, int base);
```

## ОПИСАНИЕ
Данные функции подобны wcstol(3) и wcstoul(3), за исключением того, что возвращают значение типа intmax_t и uintmax_t, соответственно.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcstoimax(), wcstoumax()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
imaxabs(3), imaxdiv(3), strtoimax(3), strtoumax(3), wcstol(3), wcstoul(3)


wcstok

title: wcstok(3)

text:
# wcstok(3)

## ИМЯ
wcstok - разделяет широкосимвольную строку на элементы (токены)

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);
```

## ОПИСАНИЕ
Функция wcstok() является эквивалентом функции strtok(3) для широкосимвольных строк, но к ней добавлен аргумент для поддержки работы в нитях. Она может использоваться для разбиения широкосимвольной строки wcs на элементы, где элементом считается подстрока, не включающая в себя широкие символы из строки delim.

Поиск начинается с wcs, если wcs не равно NULL, или с *ptr, если значение wcs равно NULL. Сначала пропускаются все разграничительные широкие символы, т.е. указатель «перепрыгивает» через все широкие символы, которые встречаются в delim. Достигнув конца строки, wcstok() возвращает NULL, тем самым сообщая, что не было найдено ни одного элемента, и сохраняет соответствующее значение в *ptr. Таким образом, последующие вызовы wcstok() будут возвращать NULL. В противном случае функция wcstok() распознает начало элемента и возвращает указатель на него, но перед тем, как это сделать, она завершает нулём найденный элемент, заменяя следующий широкий символ, который встретился в delim, на символ L'\0' и обновляет *ptr так, что последующие вызовы будут продолжать поиск после найденного элемента.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcstok() возвращает указатель на следующий элемент или NULL, если больше элементов не найдено.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcstok()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Исходная широкосимвольная строка wcs может измениться в процессе работы функции.

## ПРИМЕР
Следующий код в ходе работы цикла выводит все элементы, содержащиеся в широкосимвольной строке.

```
wchar_t *wcs = ...;
wchar_t *token;
wchar_t *state;
for (token = wcstok(wcs, " \t\n", &state);

    token != NULL;

    token = wcstok(NULL, " \t\n", &state)) {

    ...
}
```

## СМОТРИТЕ ТАКЖЕ
strtok(3), wcschr(3)


wcstombs

title: wcstombs(3)

text:
# wcstombs(3)

## ИМЯ
wcstombs - преобразует широкосимвольную строку в многобайтовую строку

## ОБЗОР

```
#include <stdlib.h>
```

```
size_t wcstombs(char *dest, const wchar_t *src, size_t n);
```

## ОПИСАНИЕ
Если значение dest не равно NULL, то функция wcstombs() преобразует широкосимвольную строку src в многобайтовую строку, начинающуюся с dest. В dest будет записано не более n байт. Последовательность символов, помещённая в dest, начинается с первоначальным состоянием сдвига. Преобразование может прекратиться по трём причинам:

1.

Встретившийся широкий символ нельзя представить в виде многобайтовой последовательности (в соответствии с текущей системной локалью). В этом случае возвращается (size_t) -1.

2.

Достигнут предел по длине. В этом случае возвращается количество байтов, записанных в dest, но состояние текущего смещения в строке теряется.

3.

Широкосимвольная строка была полностью преобразована, включая завершающий широкий символ null (L'\0'). В этом случае преобразование заканчивается в первоначальном состоянии сдвига. Возвращается количество записанных в dest байт, не считая завершающий байт null ('\0').

Программист должен быть уверен, что в dest достаточно места для, по крайней мере, n байт.

Если значение dest равно NULL, то n игнорируется и преобразование выполняется как описано выше, исключая то, что преобразованные байты не записываются в память и нет ограничения по длине.

Для того, чтобы избежать ограничения пункта 2, программист должен удостовериться, что значение n больше или равно wcstombs(NULL,src,0)+1.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcstombs() возвращает количество байт в полученной многобайтовой последовательности, не включая завершающий байт null. Если встречается широкий символ, который невозможно преобразовать, возвращается (size_t) -1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcstombs()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wcstombs() зависит от категории LC_CTYPE текущей локали.

Функция wcsrtombs(3) предоставляет лучший интерфейс с теми же возможностями.

## СМОТРИТЕ ТАКЖЕ
mblen(3), mbstowcs(3), mbtowc(3), wcsrtombs(3) wctomb(3)


wcswidth

title: wcswidth(3)

text:
# wcswidth(3)

## ИМЯ
wcswidth - определяет количество колонок, необходимое для широкосимвольной строки фиксированного размера

## ОБЗОР

```
#define _XOPEN_SOURCE       /* см. feature_test_macros(7) */
#include <wchar.h>
```

```
int wcswidth(const wchar_t *s, size_t n);
```

## ОПИСАНИЕ
Функция wcswidth() определяет количество колонок, необходимое для представления широкосимвольной строки s, но не более n широких символов. Если среди широких символов встречается непечатаемый, то возвращается -1.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcswidth() возвращает количество позиций, необходимое для широкосимвольной строки s, длиной не более n.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcswidth()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008.

## ЗАМЕЧАНИЯ
Поведение wcswidth() зависит от категории LC_CTYPE текущей локали.

## СМОТРИТЕ ТАКЖЕ
iswprint(3), wcwidth(3)


wctob

title: wctob(3)

text:
# wctob(3)

## ИМЯ
wctob - пытается представить широкий символ в виде одного байта

## ОБЗОР

```
#include <wchar.h>
```

```
int wctob(wint_t c);
```

## ОПИСАНИЕ
Функция wctob() проверяет, начиная из начального состояния может ли многобайтовое представление широкого символа c, состоять из одного байта. Если это так, то возвращается данный байт в виде unsigned char.

Никогда не используйте эту функцию. Она не поможет вам в написании корректных интернационализированных программ. Такие программы не должны различать многобайтные и однобайтные символы.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wctob() возвращает однобайтное представление широкого символа c, если оно существует, или EOF в ином случае.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wctob()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wctob() зависит от категории LC_CTYPE текущей локали.

Никогда не используйте эту функцию. Интернационализированные программы не должны различать многобайтные и однобайтные символы. Вместо неё используйте wctomb(3) или нитебезопасный аналог wcrtomb(3).

## СМОТРИТЕ ТАКЖЕ
btowc(3), wcrtomb(3), wctomb(3)


wctomb

title: wctomb(3)

text:
# wctomb(3)

## ИМЯ
wctomb - преобразует широкий символ в многобайтовую последовательность

## ОБЗОР

```
#include <stdlib.h>
```

```
int wctomb(char *s, wchar_t wc);
```

## ОПИСАНИЕ
Если значение s не равно NULL, то функция wctomb() преобразует широкий символ wc в его многобайтовое представление и сохраняет его в начале массива символов, на который указывает s. Изменяется переменная смещения, которая хранится в статической анонимной переменной, известной только функции wctomb(), затем возвращается длина полученного многобайтового представления, т.е. число байтов, записанных в s.

Программист должен убедиться, что в s существует достаточно места хотя бы для записи MB_CUR_MAX байт.

Если значение s равно NULL, то функция wctomb() обнуляет состояние смещения (известное только этой функции), переводя его начальное положение, и возвращает ненулевое значение, если кодировка имеет необычное смещение; ноль будет возвращён, если кодировка не имеет смещения.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Если значение s не равно NULL, то функция wctomb() возвращает количество байтов, записанных в байтовый массив по адресу s. Если wc не может быть представлен в виде многобайтовой последовательности (в соответствии с текущей системной локалью), то возвращается -1.

Если значение s равно NULL, то функция wctomb() возвращает не ноль, если кодировка имеет необычное смещение, или ноль, если кодировка не имеет смещения.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wctomb()

Безвредность в нитях

MT-Unsafe race

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wctomb() зависит от категории LC_CTYPE текущей локали.

Функция wcrtomb(3) предоставляет лучший интерфейс с теми же возможностями.

## СМОТРИТЕ ТАКЖЕ
MB_CUR_MAX(3), mblen(3), mbstowcs(3), mbtowc(3), wcrtomb(3), wcstombs(3)


wctrans

title: wctrans(3)

summary: преобразование широких символов

text:
# wctrans(3)

## ИМЯ
wctrans - преобразование широких символов

## ОБЗОР

```
#include <wctype.h>
```

```
wctrans_t wctrans(const char *name);
```

## ОПИСАНИЕ
Типом wctrans_t задаётся способ преобразования одного широкого символа в другой широкий символ. Свойства данной функции зависят от её реализации, но специальное значение (wctrans_t) 0 всегда указывает на неверное преобразование. Для выполнения преобразований функции towctrans(3) может быть передана ненулевая величина wctrans_t.

Функция wctrans() возвращает преобразование, обозначенное соответствующим именем. Набор корректных имён зависит от категории LC_CTYPE текущей локали, но следующие имена корректны для всех локалей:

```
    «tolower» — осуществляет преобразование tolower(3)

    «toupper» — осуществляет преобразование toupper(3)
```

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wctrans() возвращает описатель преобразования, если имя name корректно. Иначе возвращается (wctrans_t) 0.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wctrans()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wctrans() зависит от категории LC_CTYPE текущей локали.

## СМОТРИТЕ ТАКЖЕ
towctrans(3)


wctype

title: wctype(3)

summary: классифицирует широкие символы

text:
# wctype(3)

## ИМЯ
wctype - классифицирует широкие символы

## ОБЗОР

```
#include <wctype.h>
```

```
wctype_t wctype(const char *name);
```

## ОПИСАНИЕ
Тип wctype_t представляет собой свойство, которое может или не может быть у широкого символа. Другими словами, он представляет собой класс широкого символа. Структура этого типа зависит от её реализации, но специальное значение (wctype_t) 0 указывает на неверное свойство. Ненулевое значение wctype_t может быть передано функции iswctype(3) для проверки, имеет ли широкий символ определённое свойство.

Функция wctype() возвращает свойство, обозначенное соответствующим именем. Множество корректных имен зависит от категории LC_CTYPE текущей локали, но следующие имена корректны для всех локалей:

```
    «alnum» - реализует функцию isalnum(3)

    «alpha» - реализует функцию isalpha(3)

    «blank» - реализует функцию isblank(3)

    «cntrl» - реализует функцию iscntrl(3)

    «digit» - реализует функцию isdigit(3)

    «graph» - реализует функцию isgraph(3)

    «lower» - реализует функцию islower(3)

    «print» - реализует функцию isprint(3)

    «punct» - реализует функцию ispunct(3)

    «space» - реализует функцию isspace(3)

    «upper» - реализует функцию isupper(3)

    «xdigit» - реализует функцию isxdigit(3)
```

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wctype() возвращает описатель свойства, если имя name корректно. Иначе возвращается (wctype_t) 0.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wctype()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wctype() зависит от категории LC_CTYPE текущей локали.

## СМОТРИТЕ ТАКЖЕ
iswctype(3)


wcwidth

title: wcwidth(3)

text:
# wcwidth(3)

## ИМЯ
wcwidth - определяет количество колонок, необходимых для широкого символа

## ОБЗОР

```
#define _XOPEN_SOURCE       /* см. feature_test_macros(7) */
#include <wchar.h>
```

```
int wcwidth(wchar_t c);
```

## ОПИСАНИЕ
Функция wcwidth() возвращает количество колонок, необходимое для представления широкого символа c. Если c это представимый широкий символ, то величина всегда больше 0. Если c это («\0»), то возвращаемая величина равна 0. Иначе возвращается -1.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wcwidth() возвращает количество колонок для c.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wcwidth()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008.

Заметим, что в glibc до версии 2.2.5 использовался прототип

```
int wcwidth(wint_t c);
```

## ЗАМЕЧАНИЯ
Поведение wcwidth() зависит от категории LC_CTYPE текущей локали.

## СМОТРИТЕ ТАКЖЕ
iswprint(3), wcswidth(3)


wmemchr

title: wmemchr(3)

text:
# wmemchr(3)

## ИМЯ
wmemchr - поиск широкого символа в массиве широких символов

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n);
```

## ОПИСАНИЕ
Функция wmemchr() является широкосимвольным аналогом функции memchr(3). Она ищет в n широких символах, начиная в s, первое появление широкого символа c.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wmemchr() возвращает указатель на первый символ c из n широких символов, начиная с s, или NULL, если c не было найдено.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wmemchr()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
memchr(3), wcschr(3)


wmemcmp

title: wmemcmp(3)

text:
# wmemcmp(3)

## ИМЯ
wmemcmp - сравнение двух массивов, состоящих из широких символов

## ОБЗОР

```
#include <wchar.h>
```

```
int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n);
```

## ОПИСАНИЕ
Функция wmemcmp() является широкосимвольным аналогом функции memcmp(3). Она сравнивает первые n широких символов из s1 с первыми n широких символов из s2.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wmemcmp() возвращает ноль, если массивы s1 и s2 из n широких символов равны. Она возвращает положительное целое, если первый отличающийся широкий символ с номером i (i < n) и значением s1[i] больше, чем s2[i]. Она возвращает отрицательное целое, если первый отличающийся широкий символ с номером i (i < n) и значением s1[i] меньше, чем s2[i].

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wmemcmp()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
memcmp(3), wcscmp(3)


wmemcpy

title: wmemcpy(3)

summary: копирует массив широких символов (wide\-characters)

text:
# wmemcpy(3)

## ИМЯ
wmemcpy - копирует массив широких символов (wide-characters)

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wmemcpy(wchar_t *dest, const wchar_t *src, size_t n);
```

## ОПИСАНИЕ
wmemcpy() является широкосимвольным эквивалентом функции memcpy(3). Она копирует n широких символов из массива, указанного в src в массив, указанный в dest.

Адреса массивов не должны пересекаться. Используйте wmemmove(3) для копирования пересекающихся массивов.

Программист должен проверить, что в dest есть место по крайней мере для n широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
wmemcpy() возвращает dest.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wmemcpy()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
memcpy(3), wcscpy(3), wmemmove(3), wmempcpy(3)


wmemmove

title: wmemmove(3)

summary: копирует массива широких символов

text:
# wmemmove(3)

## ИМЯ
wmemmove - копирует массива широких символов

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wmemmove(wchar_t *dest, const wchar_t *src, size_t n);
```

## ОПИСАНИЕ
Функция wmemmove() является широкосимвольным эквивалентом функции memmove(3). Она копирует n широких символов из массива, указанного в src, в массив, указанны в dest. Массивы могут перекрываться.

Программист должен проверить, что в dest есть место по крайней мере для n широких символов.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция wmemmove() возвращает dest.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wmemmove()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
memmove(3), wmemcpy(3)


wmemset

title: wmemset(3)

text:
# wmemset(3)

## ИМЯ
wmemset - заполнение элементов массива широких символов постоянным широким символом.

## ОБЗОР

```
#include <wchar.h>
```

```
wchar_t *wmemset(wchar_t *wcs, wchar_t wc, size_t n);
```

## ОПИСАНИЕ
Функция wmemset() является широкосимвольным аналогом функции memset(3). Она заполняет массив из n широких символов, начиная с wcs, копируя в него n широких символов wc.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
wmemset() возвращает wcs.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wmemset()

Безвредность в нитях

MT-Safe

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## СМОТРИТЕ ТАКЖЕ
memset(3)


wordexp

title: wordexp(3)

summary: дополняет слово как оболочка posix

text:
# wordexp(3)

## ИМЯ
wordexp, wordfree - дополняет слово как оболочка posix

## ОБЗОР
\#include <wordexp.h>

int wordexp(const char *s, wordexp_t *p, int flags);

void wordfree(wordexp_t *p);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

wordexp(), wordfree(): _XOPEN_SOURCE

## ОПИСАНИЕ
Функция wordexp() выполняет раскрытие строки s также, как это делается в оболочке командной строки, и возвращает результат в структуре, на которую указывает p. Тип данных wordexp_t — структура, которая содержит, по крайней мере, поля we_wordc, we_wordv и we_offs. Поле we_wordc имеет тип size_t и содержит количество слов в раскрытой s. Поле we_wordv имеет тип char ** и указывает на массив найденных слов. Поле we_offs имеет тип size_t и (в зависимости от flags, см. далее) используется для указания количества начальных элементов в массиве we_wordv, которые должны быть заполнены NULL.

Функция wordfree() освобождает ранее выделенную память. Более точно, она не освобождает память своего аргумента, а освобождает память, занятую под массив we_wordv и строки, которые в нём содержатся.

### Строковый аргумент
Так как дополнение производится согласно правилам оболочки командной строки (см. sh(1)) по преобразованию параметров в команду, строка s не должна содержать символы, которые запрещено передавать в параметрах команд оболочки. В частности, не должно быть неэкранированных символов новой строки или |, &, ;, <, >, (, ), {, } вне контекста подстановки команды или параметра.

Если аргумент s содержит слово, которое начинается с символа комментария #, находящегося не в кавычках, то такая ситуация является неопределённой, и непонятно, нужно ли игнорировать слово или все слова, или не считать # символом комментария.

### Дополнение
Дополнение выполняется в несколько этапов: дополнение тильды (замена ~user на домашний каталог пользователя), подстановка переменной (замена $FOO значением переменной окружения FOO), подстановка команды (замена $(команда) или `команда` результатом выполнения команды), арифметические действия, разделение на поля, подстановка шаблонных символов (wildcard), удаление кавычек.

Результат дополнения специальных параметров ($@, $*, $#, $?, $-, $$, $!, $0) не определён.

Разделение на поля выполняется с помощью переменной окружения $IFS. Если она не установлена, то разделителями полей считаются пробел, табуляция и символ новой строки.

### Массив результата
Массив we_wordv содержит найденные слова и заканчивается NULL.

### Аргумент флагов
Аргумент flag представляет собой побитовое объединяющее ИЛИ следующих значений:

WRDE_APPEND

Добавлять найденные слова в массив, полученный в результате предыдущего вызова.

WRDE_DOOFFS

Вставить we_offs начальных NULL в массив we_wordv (они не считаются в конечном we_wordc).

WRDE_NOCMD

Не выполнять подстановку команд.

WRDE_REUSE

Аргумент p получен от предыдущего вызова wordexp(), и функция wordfree() не была вызвана. Повторно использовать выделенное пространство.

WRDE_SHOWERR

Обычно, во время подстановки команды вывод stderr перенаправляется в /dev/null. Этим флагом задаётся отмена такого перенаправления stderr.

WRDE_UNDEF

Считать ошибкой, если не определена раскрываемая переменная оболочки.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается 0. В случае ошибки возвращается одно из следующих пяти значений:

WRDE_BADCHAR

Недопустимое появление символа новой строки или одного из символов |, &, ;, <, >, (, ), {, }.

WRDE_BADVAL

Указана неопределённая переменная оболочки и установлен флаг WRDE_UNDEF.

WRDE_CMDSUB

Запрошена подстановка команды, но установлен флаг WRDE_NOCMD, указывающий считать это ошибкой.

WRDE_NOSPACE

Не хватает памяти.

WRDE_SYNTAX

Синтаксическая ошибка оболочки, например незакрытая скобка или кавычка.

## ВЕРСИИ
Функции wordexp() и wordfree() определены в glibc начиная с версии 2.1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wordexp()

Безвредность в нитях

MT-Unsafe race:utent const:env env sig:ALRM timer locale

wordfree()

Безвредность в нитях

MT-Safe

В приведённой выше таблице utent в race:utent означает, что если любая из функций setutent(3), getutent(3) или endutent(3) используется одновременно в нескольких нитях программы, то может возникнуть состязательность по данным. Эти функции вызываются из wordexp(), поэтому мы используем race:utent для напоминания.

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008.

## ПРИМЕР
Результатом следующего примера будет таким же что и при выполнении команды «ls [a-c]*.c».

```
#include <stdio.h>
#include <stdlib.h>
#include <wordexp.h>
int
main(int argc, char **argv)
{

    wordexp_t p;

    char **w;

    int i;

    wordexp("[a-c]*.c", &p, 0);

    w = p.we_wordv;

    for (i = 0; i < p.we_wordc; i++)

        printf("%s\n", w[i]);

    wordfree(&p);

    exit(EXIT_SUCCESS);
}
```

## СМОТРИТЕ ТАКЖЕ
fnmatch(3), glob(3)


wprintf

title: wprintf(3)

text:
# wprintf(3)

## ИМЯ
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - форматированный вывод широких символов

## ОБЗОР

```
#include <stdio.h>
#include <wchar.h>
```

```
int wprintf(const wchar_t *format, ...);
int fwprintf(FILE *stream, const wchar_t *format, ...);
int swprintf(wchar_t *wcs, size_t maxlen,
             const wchar_t *format, ...);
```

```
int vwprintf(const wchar_t *format, va_list args);
int vfwprintf(FILE *stream, const wchar_t *format, va_list args);
int vswprintf(wchar_t *wcs, size_t maxlen,
              const wchar_t *format, va_list args);
```

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

Все функции, показанные выше:

_XOPEN_SOURCE >= 500 || _ISOC99_SOURCE ||

_POSIX_C_SOURCE >= 200112L

## ОПИСАНИЕ
Семейство функций wprintf() является эквивалентом семейства printf(3) для работы с широкими символами. Функции из этого семейства производят форматированный вывод широких символов.

Функции wprintf() и vwprintf() выводят широкие символы в поток stdout. stdout должен быть открыт не для байтовых операций; подробности смотрите в fwide(3).

Функции wprintf() и vwprintf() выводят широкие символы в поток stream. stream должен быть открыт не для байтовых операций; подробности смотрите в fwide(3).

Функции swprintf() и vswprintf() выводят широкие символы в массив широких символов. Программист должен быть уверен, что в wcs достаточно места для maxlen широких символов.

Все эти функции очень похожи на printf(3), vprintf(3), fprintf(3), vfprintf(3), sprintf(3), vsprintf(3), но отличаются от них в следующем:

•

Строка format представляет собой строку широких символов.

•

Вывод представляет собой широкие символы, а не байты.

•

Функции swprintf() и vswprintf() имеют аргумент maxlen, а sprintf(3) и vsprintf(3) нет (функции snprintf(3) и vsnprintf(3) имеют аргумент maxlen, но они не возвращают -1 при переполнении буфера в Linux).

Правила преобразования символов c и s различны:

c

Если модификатора l нет, то аргумент int преобразуется в широкий символ с помощью вызова функции btowc(3); затем полученный широкий символ записывается. Если модификатор l присутствует, то записывается аргумент (широкий символ) wint_t.

s

Если модификатор l отсутствует, то: аргумент const char * ожидается в виде указателя на массив элементов символьного типа (указателя на строку), содержащего многобайтовую символьную последовательность, находящуюся в исходном состоянии. Символы массива будут преобразованы в широкие символы последовательным вызовом функции mbrtowc(3) с учётом исходного состояния перед первым байтом. Получившиеся широкие символы будут записаны последовательно до завершающего (но не включая его) широкого символа null (L'\0'). Если указано количество символов, то записывается количество символов, меньшее определённого числа или равное ему. Обратите внимание, что количеством символов определяется число широких символов, а не байтов или позиций печати, которые будут записаны. Массив должен содержать завершающий байт null ('\0') на случай, если определённое в вызове количество байтов окажется недостаточным, то есть при конвертировании широкого символа возникнет ситуация, когда размер полученной последовательности слишком велик для размещения её в массиве. Если имеется модификатор l: аргумент const wchar_t * ожидается в виде указателя на массив широких символов. Широкие символы массива записываются до (но не включая) завершающего нулевого широкого символа. Если указано количество символов, то записывается количество символов, меньшее определённого числа или равное ему. Массив должен содержать завершающий нулевой байт на случай, если не указано количество или оно меньше или равно количеству широких символов в массиве.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функции возвращают количество записанных широких символов, кроме завершающего нулевого символа для функций swprintf() и vswprintf(). В случае ошибки возвращается -1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

wprintf(), fwprintf(), swprintf(), vwprintf(), vfwprintf(), vswprintf()

Безвредность в нитях

MT-Safe locale

## СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, C99.

## ЗАМЕЧАНИЯ
Поведение wprintf() зависит от категории LC_CTYPE текущей локали.

Если строка format содержит широкие не ASCII символы, то программа будет работать корректно, только если категория LC_CTYPE текущей локали в момент выполнения действия совпадает с категорией LC_CTYPE текущей локали в момент компиляции. Это происходит потому, что представление wchar_t зависит от платформы и локали (glibc представляет широкие символы, используя универсальную кодовую таблицу Unicode (ISO-10646), но другие платформы могут не следовать этому. Кроме того, использование универсальных имён символов ISO C99 в форме \unnnn не решает этой проблемы). Следовательно, в многоязыковых программах строка format должна содержать только широкие символы из множества ASCII или должна создаваться во время выполнения с учётом многозыковости (например, с помощью gettext(3) или iconv(3), с последующим mbstowcs(3)).

## СМОТРИТЕ ТАКЖЕ
fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3)


xcrypt

title: xcrypt(3)

summary: шифрование пароля RFS

text:
# xcrypt(3)

## ИМЯ
xencrypt, xdecrypt, passwd2des - шифрование пароля RFS

## ОБЗОР
\#include <rpc/des_crypt.h>

void passwd2des(char *passwd, char *key);

int xencrypt(char *secret, char *passwd);

int xdecrypt(char *secret, char *passwd);

## ОПИСАНИЕ
WARNING: Не используйте эти функции в новом коде. Они не получили каких либо гарантий криптографической безопасности.

Функция passwd2des() принимает строку символов passwd заданной длины и заполняет массив символов key с 8 элементами, который подходит для использования в качестве ключа DES. Для каждого байта выставляется нулевой бит нечетности. Остальные две описанные здесь функции используют эту функцию для преобразования своего аргумента passwd в ключ DES.

Функция xencrypt() принимает строку из ASCII-символов secret в виде шестнадцатеричной последовательности, длина которой должна быть кратна 16, шифрует её с помощью ключа DES, полученного из passwd с помощью функции passwd2des() и выводит результат снова в secret в виде шестнадцатеричной строки той же длины.

Функция xdecrypt() выполняет противоположную операцию.

## ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении функции xencrypt() и xdecrypt() возвращают 1 и 0 при ошибке.

## ВЕРСИИ
Эти функции доступны в glibc начиная с версии 2.1.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

passwd2des(), xencrypt(), xdecrypt()

Безвредность в нитях

MT-Safe

## ДЕФЕКТЫ
В упомянутом выше заголовочном файле отсутствуют прототипы.

## СМОТРИТЕ ТАКЖЕ
cbc_crypt(3)


xdr

title: xdr(3)

text:
# xdr(3)

## ИМЯ
xdr - библиотечные процедуры для внешнего представления данных

## ОБЗОР И ОПИСАНИЕ
Эти процедуры позволяют программистам на C описывать произвольные структуры данных машинонезависимым способом. Данные для дистанционного вызова процедур передаются с помощью этих процедур.

Представленные ниже прототипы объявлены в <rpc/xdr.h> и позволяют использовать следующие типы:

```
typedef int bool_t;
```

```
typedef bool_t (*xdrproc_t) (XDR *, void *,...);
```

Объявление типа XDR приведено в <rpc/xdr.h>.

```
bool_t xdr_array(XDR *xdrs, char **arrp, unsigned int *sizep,
                 unsigned int maxsize, unsigned int elsize,
                 xdrproc_t elproc);
```

Фильтр-примитив, преобразует массивы переменной длины в соответствующее им внешнее представление (и наоборот). В параметре arrp указывается адрес указателя на массив, а в sizep адрес счётчика элементов в массиве; этот счётчик не может превышать значение maxsize. В параметре elsize указывается sizeof каждого из элементов массива, а в elproc указывается фильтр XDR, который преобразует массив элементов формата С в их внешнее представление (и наоборот). Процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_bool(XDR *xdrs, bool_t *bp);
```

Фильтр-примитив, преобразует логические переменные (целочисленные в С) в их внешнее представление (и наоборот). Перекодируя данные, этот фильтр выдает либо единицу, либо ноль. Процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_bytes(XDR *xdrs, char **sp, unsigned int *sizep,
                 unsigned int maxsize);
```

Фильтр-примитив, преобразует строки с известной длиной в их внешнее представление (и наоборот). В аргументе sp указывается адрес указателя строки. Длина строки указывается по адресу sizep; строки не могут быть длиннее maxsize. Процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_char(XDR *xdrs, char *cp);
```

Фильтр-примитив, преобразует символы языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0. Замечание: закодированные символы не упакованы, и каждый занимает 4 байта. В случае с массивом символов целесообразнее использовать xdr_bytes(), xdr_opaque() или xdr_string().

```
void xdr_destroy(XDR *xdrs);
```

Макрос, который запускает процедуру уничтожения, связанную с потоком XDR xdrs. Уничтожение обычно включает в себя освобождение структур частных данных, связанных с потоком. Результат использования xdrs после запуска xdr_destroy() непредсказуем.

```
bool_t xdr_double(XDR *xdrs, double *dp);
```

Фильтр-примитив, преобразует значение чисел с точностью типа double языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_enum(XDR *xdrs, enum_t *ep);
```

Фильтр-примитив, преобразует значения типа enum (представляющие собой целые числа) языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_float(XDR *xdrs, float *fp);
```

Фильтр-примитив, преобразует значения типа float языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
void xdr_free(xdrproc_t proc, char *objp);
```

Общая процедура высвобождения. Первым параметром для освобождаемого объекта является процедура XDR. Вторым параметром является указатель на сам объект. Замечание: указатель, переданный этой программе, не освобождается, освобождается (рекурсивно) объект, на который он указывает.

```
unsigned int xdr_getpos(XDR *xdrs);
```

Макрос, который запускает процедуру получения позиции, связанной с потоком XDR xdrs. Процедура возвращает беззнаковое целое, которое указывает на позицию XDR потока байтов. Удобное свойство потока XDR: с этим числом можно выполнять простые арифметические действия, хотя экземплярам потоков XDR этого можно не гарантировать.

```
long *xdr_inline(XDR *xdrs, int len);
```

Макрос, который запускает встроенную процедуру, связанную с потоком XDR xdrs. Процедура возвращает указатель на непрерывную часть буфера потока; в len задаётся длина нужного буфера в байтах. Замечание: указатель приводится к long *.

Предупреждение: xdr_inline() может возвратить NULL (0), если не сможет выделить непрерывную часть буфера. Следовательно, поведение может меняться в разных экземплярах потока; вообще, она предназначена для обеспечения общей эффективности работы.

```
bool_t xdr_int(XDR *xdrs, int *ip);
```

Фильтр-примитив, преобразует значения целого типа языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_long(XDR *xdrs, long *lp);
```

Фильтр-примитив, преобразует значения типа long языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
void xdrmem_create(XDR *xdrs, char *addr, unsigned int size,
                   enum xdr_op op);
```

Эта процедура инициализирует объект потока XDR, на который указывает xdrs. Данные потока считываются из куска памяти или записываются в него с позиции addr, длина которого не больше size байтов. В op указывается направление потока XDR (XDR_ENCODE, XDR_DECODE или XDR_FREE).

```
bool_t xdr_opaque(XDR *xdrs, char *cp, unsigned int cnt);
```

Фильтр-примитив, преобразует значения типа со скрытым форматом фиксированного размера(«чёрным ящиком») в их внешнее представление и наоборот. В аргументе cp указывает адрес с «чёрным ящиком», а в cnt указывается его размер в байтах. Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_pointer(XDR *xdrs, char **objpp,
                   unsigned int objsize, xdrproc_t xdrobj);
```

Работает аналогично xdr_reference(), за исключением того, что может обрабатывать указатели null, в отличие от xdr_reference(). Таким образом, xdr_pointer() может представлять рекурсивные структуры данных, например, двоичные деревья или связанные списки.

```
void xdrrec_create(XDR *xdrs, unsigned int sendsize,
                   unsigned int recvsize, char *handle,
                   int (*readit) (char *, char *, int),
                   int (*writeit) (char *, char *, int));
```

Эта процедура инициализирует объект потока XDR, на который указывает xdrs. Данные потока записываются в буфер размером sendsize; значение ноль указывает на то, что система должна использовать значение, подходящее по умолчанию. Данные потока считываются из буфера размером recvsize; его размер также может быть равно нулю, что указывает на значение, подходящее по умолчанию. Когда буфер записи потока заполнен, вызывается writeit. Аналогично этому, когда буфер чтения потока пуст, вызывается readit. Поведение этих двух процедур аналогично системным вызовам read(2) и write(2), исключая то, что handle передается вызывающей процедуре в качестве первого параметра. Замечание: у потока XDR поле op должно быть установлено вызывающим.

Предупреждение: для чтения из потока XDR, созданного данным программным интерфейсом, самым первым должен быть вызов xdrrec_skiprecord(). Это вставит дополнительные байты в поток для предоставления информации о границе записи. Также, потоки XDR, созданные разными программными интерфейсами xdr*_create, не совместимы по той же причине.

```
bool_t xdrrec_endofrecord(XDR *xdrs, int sendnow);
```

Эта процедура может запускаться только для потоков, созданных xdrrec_create(). Данные в буфере вывода помечены как полная запись; буфер вывода также записывается, если параметр sendnow не равен нулю. Эта процедура возвращает 1 при успешном завершении работы, иначе возвращается 0.

```
bool_t xdrrec_eof(XDR *xdrs);
```

Эта процедура может запускаться только для потоков, созданных xdrrec_create(). После поглощения остатка текущей записи в потоке процедура возвращает 1, если на входе потока нет больше данных; иначе возвращается 0.

```
bool_t xdrrec_skiprecord(XDR *xdrs);
```

Эта процедура может запускаться только для потоков, созданных xdrrec_create(). Она сообщает реализации XDR, что оставшаяся часть текущей записи в буфере ввода потока должна быть отброшена. Эта процедура возвращает 1 при успешном завершении работы, иначе возвращается 0.

```
bool_t xdr_reference(XDR *xdrs, char **pp, unsigned int size,
                     xdrproc_t proc);
```

Примитив, обеспечивающий курсирование указателя по структурам. В аргументе pp указывается адрес указателя; size задаётся в виде sizeof структуры, на которую указывает *pp; в proc указывается процедура XDR, которая преобразует структуру языка С в её внешнее представление. Программа возвращает 1 при успешном завершении работы, иначе возвращается 0.

Предупреждение: эта процедура не работает с указателями null. Используйте вместо неё xdr_pointer().

```
xdr_setpos(XDR *xdrs, unsigned int pos);
```

Макрос, вызываемый для установки позиции процедуры, связанной с потоком XDR xdrs. В аргументе pos задаётся значение позиции, полученное с помощью xdr_getpos(). Эта процедура возвращает 1, если по потоку XDR можно перемещаться, иначе возвращается 0.

Предупреждение: очень трудно изменить положение некоторых типов потока XDR, так что эта процедура может не работать с одним типом потока, но успешно работать с другим.

```
bool_t xdr_short(XDR *xdrs, short *sp);
```

Фильтр-примитив, преобразует значения типа short языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
void xdrstdio_create(XDR *xdrs, FILE *file, enum xdr_op op);
```

Эта процедура инициализирует объект потока XDR, на который указывает xdrs. Данные потока XDR записываются или считываются из stdio потока, указанного в file. В op указывается направление потока XDR (XDR_ENCODE, XDR_DECODE или XDR_FREE).

Предупреждение: процедура уничтожения, связанная с такими потоками XDR, вызывает fflush(3) для потока file, но не вызывает fclose(3).

```
bool_t xdr_string(XDR *xdrs, char **sp, unsigned int maxsize);
```

Фильтр-примитив, преобразует значения строк языка C в их внешнее представление (и наоборот). Длина строк не может быть больше чем maxsize. Замечание: значение sp представляет собой адрес на указатель строки. Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_u_char(XDR *xdrs, unsigned char *ucp);
```

Фильтр-примитив, преобразует unsigned символы языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_u_int(XDR *xdrs, unsigned *up);
```

Фильтр-примитив, преобразует беззнаковые целые языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_u_long(XDR *xdrs, unsigned long *ulp);
```

Фильтр-примитив, преобразует целые unsigned long языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_u_short(XDR *xdrs, unsigned short *usp);
```

Фильтр-примитив, преобразует значения типа unsigned short языка C в их внешнее представление (и наоборот). Эта процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_union(XDR *xdrs, int *dscmp, char *unp,
                 struct xdr_discrim *choices,
                 xdrproc_t defaultarm);     /* может равняться NULL */
```

Фильтр-примитив, преобразует различимые (discriminated) объединения языка C в их внешнее представление (и наоборот). Сначала преобразуется дискриминант объединения, расположенный в dscmp. Этот дискриминант всегда имеет тип enum_t. Затем преобразуется объединение, расположенное в unp. Параметр choices представляет собой указатель на массив структур xdr_discrim(). Каждая структура содержит упорядоченную пару [значение,процедура]. Если дискриминант объединения равен соответствующему значению, то для преобразования объединения вызывается процедура. Конец массива структур xdr_discrim() обозначается процедурой со значением NULL. Если дискриминант не найден в массиве choices, то вызывается процедура defaultarm (если данное значение не равно NULL). Возвращает 1 при успешном завершении работы, иначе возвращается 0.

```
bool_t xdr_vector(XDR *xdrs, char *arrp, unsigned int size,
                  unsigned int elsize, xdrproc_t elproc);
```

Фильтр-примитив, преобразует массивы постоянной длины в соответствующее им внешнее представление (и наоборот). В параметре arrp указывается адрес указателя на массив, а в size — адрес счётчика элементов в массиве. В параметре elsize указывается sizeof каждого из элементов массива, а в elproc указывается фильтр XDR, который преобразует массив элементов формата С в их внешнее представление (и наоборот). Процедура возвращает 1 при успешном выполнении работы, иначе 0.

```
bool_t xdr_void(void);
```

Процедура всегда возвращает 1. Она может передаваться процедурам RPC, которые обязательно требуют функцию в аргументе и в которых не должно производиться никаких действий.

```
bool_t xdr_wrapstring(XDR *xdrs, char **sp);
```

Примитив, вызывающий xdr_string(xdrs, sp, MAXUN.UNSIGNED); где MAXUN.UNSIGNED равно максимальному значению беззнакового целого. Процедура xdr_wrapstring() удобна, потому что пакет RPC передаёт максимум две процедуры XDR в качестве параметров, а для xdr_string(), являющейся одной из наиболее часто используемых процедур, требует три. Процедура возвращает 1 при успешном завершении работы, иначе возвращается 0.

## АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).

Интерфейс

Атрибут

Значение

xdr_array(), xdr_bool(), xdr_bytes(), xdr_char(), xdr_destroy(), xdr_double(), xdr_enum(), xdr_float(), xdr_free(), xdr_getpos(), xdr_inline(), xdr_int(), xdr_long(), xdrmem_create(), xdr_opaque(), xdr_pointer(), xdrrec_create(), xdrrec_eof(), xdrrec_endofrecord(), xdrrec_skiprecord(), xdr_reference(), xdr_setpos(), xdr_short(), xdrstdio_create(), xdr_string(), xdr_u_char(), xdr_u_int(), xdr_u_long(), xdr_u_short(), xdr_union(), xdr_vector(), xdr_void(), xdr_wrapstring()

Безвредность в нитях

MT-Safe

## СМОТРИТЕ ТАКЖЕ
rpc(3)

Следующие руководства:

Стандарт представления внешних данных: спецификация протокола

Представление внешних данных: технические замечания Sun.

XDR: External Data Representation Standard, RFC 1014, Sun Microsystems, Inc., USC-ISI.