Man page - rpmatch(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

RPMATCH

名 前
書 式
説 明
返 り 値
エ ラ ー
属 性
準 拠
バ グ

関 連 項 目
こ の 文 書 に つ い て

名 前

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 が ユ ー ザ ー の 言 語 設 定 と し て 考 慮 さ れ る 。

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

返 り 値

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

エ ラ ー

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

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

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-19725-1.png

準 拠

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

バ グ

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