rpmatch(3) Library Functions Manual rpmatch(3) rpmatch - , C (libc, -lc) #include 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 | +----------------------------+----------------------------------------------------------+--------------------------+ None. GNU, FreeBSD, 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 #include #include #include 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 , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , Yuri Kozlov , ; GNU (GNU General Public License - GPL, 3 ) , - . - , , () () () <>. Linux 6.9.1 15 2024 . rpmatch(3)