- bullseye-backports 4.18.1-1~bpo11+1
- testing 4.18.1-1
- unstable 4.18.1-1
RPMATCH(3) | Руководство программиста Linux | RPMATCH(3) |
ИМЯ¶
rpmatch - определяет, является ли ответ на вопрос утвердительным или отрицательным
СИНТАКСИС¶
#include <stdlib.h>
int rpmatch(const char *response);
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() не является стандартной, но доступна в некоторых других системах.
ДЕФЕКТЫ¶
The rpmatch() implementation looks at only the first character of response. As a consequence, "nyes" returns 0, and "ynever; not in a million years" returns 1. It would be preferable to accept input strings much more strictly, for example (using the extended regular expression notation described in regex(7)): ^([yY]|yes|YES)$ and ^([nN]|no|NO)$.
ПРИМЕРЫ¶
Следующая программа показывает результаты, когда в rpmatch() передана строка, полученная программой из командной строки.
#define _SVID_SOURCE #include <locale.h> #include <stdlib.h> #include <string.h> #include <stdio.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)
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан 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 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
9 июня 2020 г. | GNU |