NOM¶
rpmatch - Déterminer si la réponse à une question est affirmative
ou négative
SYNOPSIS¶
#include <stdlib.h>
int rpmatch(const char *réponse);
Exigences de macros de test de fonctionnalités pour la glibc (consultez
feature_test_macros(7)) :
rpmatch() : _SVID_SOURCE
DESCRIPTION¶
rpmatch() gère une réponse d'un utilisateur à une question
oui ou non, avec support pour l'internationalisation.
réponse doit être une chaîne de caractères,
terminée par le caractère nul, contenant une réponse fournie
par un utilisateur, peut-être obtenue avec
fgets(3) ou
getline(3).
La préférence de langue de l'utilisateur est prise en compte par les
variables d'environnement
LANG,
LC_MESSAGES et
LC_ALL si
le programme a appelé
setlocale(3) pour effectuer leurs
modifications.
Quels que soient les paramètres régionaux, les réponses
correspondant à
^[Yy] sont toujours acceptées comme
affirmatives, et celles correspondant à
^[Nn] sont toujours
acceptées comme négatives.
VALEUR RENVOYÉE¶
Après l'examen de
réponse,
rpmatch() renvoie 0 dans le
cas d'une réponse négative (« Non »), 1 dans le
cas d'une réponse affirmative (« Oui »), et -1 si la
valeur de
réponse n'est pas reconnue.
ERREURS¶
Une valeur de retour de -1 indique soit une entrée invalide, soit une autre
erreur. Il n'est pas correct de ne tester que la non nullité de la valeur
de retour.
rpmatch() peut échouer pour les mêmes raisons que
regcomp(3) ou
regexec(3) échouerait ; la cause de
l'erreur n'est pas disponible dans
errno ou ailleurs mais indique un
échec du moteur d'expressions rationnelles (mais ce cas ne peut pas
être distingué de celui d'une valeur de
réponse non
reconnue).
rpmatch() n'est requise par aucun standard mais est disponible sur
quelques autres systèmes.
BOGUES¶
L'implémentation de
rpmatch() ne regarde que le premier
caractère de
réponse. En conséquence,
« noui » renvoie 0 et « ynon, jamais, pas dans
un million d'années » renvoie 1. Il serait préférable
d'accepter des chaînes de manière plus stricte, par exemple (en
utilisant la notation des expressions rationnelles étendues décrites
dans
regex(7)) :
^([yY]|yes|YES)$ et
^([nN]|no|NO)$.
EXEMPLE¶
Le programme exemple suivant affiche les résultats lorsque
rpmatch()
est appliqué à la chaîne fournie comme argument de la ligne de
commande du programme.
#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 réponse\n", argv[0]);
exit(EXIT_FAILURE);
}
setlocale(LC_ALL, "");
printf("rpmatch() a renvoyé : %d\n", rpmatch(argv[1]));
exit(EXIT_SUCCESS);
}
VOIR AUSSI¶
fgets(3),
getline(3),
nl_langinfo(3),
regcomp(3),
setlocale(3)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Alain Portal <
http://manpagesfr.free.fr/> (2006). Nicolas
François et l'équipe francophone de traduction de
Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».