Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
RPMATCH
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- CONFORMITÉ
- BOGUES
- EXEMPLE
- VOIR AUSSI
- TRADUCTION
NOM
rpmatch - Déterminer si la réponse à une question est affirmative ou
négative
SYNOPSIS
#define _SVID_SOURCE
#include <stdlib.h>
int rpmatch (const char *réponse);
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() 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).
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
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
", argv[0]);
exit(EXIT_FAILURE);
}
setlocale(LC_ALL, "");
printf("rpmatch() a renvoyé : %d
", rpmatch(argv[1]));
exit(EXIT_SUCCESS);
}
VOIR AUSSI
regcomp(3), fgets(3), getline(3), nl_langinfo(3),
setlocale(3)
TRADUCTION
Cette page de manuel a été traduite par Alain Portal
<aportal AT univ-montp2 DOT fr> en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|