Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       rpmatch - определяет, является ли ответ на вопрос утвердительным или отрицательным

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <stdlib.h>

       int rpmatch(const char *response);

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

       rpmatch():
           начиная с glibc 2.19:
               _DEFAULT_SOURCE
           glibc 2.19 и старее:
               _SVID_SOURCE

ОПИСАНИЕ

       Функция  rpmatch()  обрабатывает  ответ  пользователя  «да» или «нет» на вопросы, учитывая
       интернационализацию.

       В аргументе response должен указываться ответ пользователя в виде строки,  заканчивающейся
       null, полученной, например, с помощью fgets(3) или getline(3).

       Пользовательские  языковые  настройки  определяются  с  помощью переменных окружения LANG,
       LC_MESSAGES и LC_ALL, если для их учёта программа вызывала setlocale(3).

       Regardless of the locale, responses matching ^[Yy] are always accepted as affirmative, and
       those matching ^[Nn] are always accepted as negative.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       После проверки response, функция rpmatch() возвращает 0 при найденном отрицательном ответе
       («нет»), 1 при положительном ответе («да») и -1, когда значение response не распознано.

ОШИБКИ

       Возвращаемое значение -1 может указывать на неправильные  входные  данные,  либо  какую-то
       другую ошибку. Не стоит проверять является ли возвращаемое значение лишь отличным от нуля.

       Функция  rpmatch()  может  завершиться  с  ошибкой по любой из причин, по которым могут не
       выполниться regcomp(3) или regexec(3); причина ошибки не указывается в  errno  или  где-то
       ещё  —  это  указывает  на ошибку в самом механизме regex (но этот случай не отличается от
       нераспознанных значений response).

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌─────────────────────────────────────────────────┬──────────────────────┬────────────────┐
       │ИнтерфейсАтрибутЗначение       │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │rpmatch()                                        │ Безвредность в нитях │ MT-Safe locale │
       └─────────────────────────────────────────────────┴──────────────────────┴────────────────┘

СТАНДАРТЫ

       rpmatch()  is not required by any  standard,  but  available  under  the  GNU  C  library,
       FreeBSD, and AIX.

ДЕФЕКТЫ

       The YESEXPR and NOEXPR of some locales (including "C") only inspect the first character of
       the response.  This can mean that "yno" et al. resolve  to  1.   This  is  an  unfortunate
       historical  side-effect which should be fixed in time with proper localisation, and should
       not deter from rpmatch()  being the proper way to distinguish between binary answers.

ПРИМЕРЫ

       Следующая программа показывает результаты, когда в rpmatch() передана  строка,  полученная
       программой из командной строки.

       #define _DEFAULT_SOURCE
       #include <locale.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           if (argc != 2 || strcmp(argv[1], "--help") == 0) {
               fprintf(stderr, "%s response\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           setlocale(LC_ALL, "");
           printf("rpmatch() returns: %d\n", rpmatch(argv[1]));
           exit(EXIT_SUCCESS);
       }

СМ. ТАКЖЕ

       fgets(3), getline(3), nl_langinfo(3), regcomp(3), setlocale(3)

ПЕРЕВОД

       Русский  перевод  этой страницы руководства был сделан aereiae <aereiae@gmail.com>, Azamat
       Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Katrin Kutepova
       <blackkatelv@gmail.com>,  Lockal <lockalsash@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>,
       Баринов Владимир и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.