RPMATCH

Section: Linux Programmer's Manual (3)
Updated: 2020-06-09
Index JM Home Page
 

名前

rpmatch - 質問への応答が肯定か否定かを判定する  

書式

#include <stdlib.h>

int rpmatch(const char *response);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

rpmatch():
    Since glibc 2.19:
        _DEFAULT_SOURCE
    Glibc 2.19 and earlier:
        _SVID_SOURCE  

説明

rpmatch() は yes/no の質問に対するユーザーからの応答を処理する。 国際化 (I18N) に対応している。

response にはユーザーからの応答を格納したヌル終端文字列が入っている必要がある。 たいていは、 fgets(3) や getline(3) で取り込んだものであろう。

プログラムが setlocale(3) を呼び出して環境変数の変更を有効にした場合、 環境変数 LANG, LC_MESSAGES, LC_ALL が ユーザーの言語設定として考慮される。

ロケールに関わらず、ha[Yy] にマッチする応答は常に肯定だと解釈され、 ha[Nn] にマッチする応答は常に否定だと解釈される。  

返り値

response を検査した後、 rpmatch() は否定的な応答 ("no") と認識した場合は 0 を返し、 肯定的な応答 ("yes") と認識した場合は 1 を返す。 response の値を解釈できなかった場合は -1 を返す。  

エラー

返り値 -1 が返った場合、入力が不正であったか、他の何らかのエラーが あったことを意味する。返り値が 0 以外かどうかを確認するだけでは 十分ではない。

rpmatch() は、 regcomp(3) や regexec(3) が失敗する理由のどれかで失敗することがある。 エラーの原因を errno や他の何かで知ることはできないが、 errno は正規表現エンジンの失敗の原因を示している (但し、このケースと response の値を認識できずに失敗した場合を区別することはできない)。  

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
rpmatch() Thread safety MT-Safe locale

 

準拠

rpmatch() はどの標準でも必須となっていないが、 Linux 以外にも利用できるシステムもいくつかは存在する。  

バグ

rpmatch() の実装は response の最初の 1 文字だけを見ているようである。その結果、 "nyes" は 0 を返し、 "ynever; not in a million years" は 1 を返すことになる。 入力文字列をもっと厳密に解釈した方がよいだろう。 例えば、 (regex(7) で説明されている拡張正規表現を使って) ha([yY]|yes|YES)$ や ha([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)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

応答   解釈   rpmatch   argv   認識   質問   肯定   否定   stdlib   検査   環境   変数   マッチ   返り値   原因   正規   表現   locale   argc   exit   判定   マクロ   要件   macros   Since

Linux マニュアル 一覧

関連するコマンド・関数

aecho.1   gawk.1   setenv.3   unsetenv.3   qsort.3   qsort_r.3
 

Index

名前
書式
説明
返り値
エラー
属性
準拠
バグ
例
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:37 GMT, October 11, 2026