NOM
rpmatch - Déterminer si la réponse à une question est affirmative ou
négative
SYNOPSIS
#include <stdlib.h>
int rpmatch(const char *rponse);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
rpmatch() : _SVID_SOURCE
rpmatch() gère une réponse d’un utilisateur à une question oui ou non,
avec support pour l’internationalisation.
rponse 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 rponse, 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 rponse 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 rponse non reconnue).
CONFORMITÉ
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
rponse. 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.23 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
Cette page de manuel a été traduite par Alain Portal <aportal AT
univ-montp2 DOT fr> en 2006, et mise à disposition sur
http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Nicolas François
<nicolas.francois@centraliens.net> et l’équipe francophone de
traduction de Debian.
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> ».