Man page - getsubopt(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

getsubopt

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

getsubopt – Parcourir les arguments des sous-options depuis une chaîne

BIBLIOTHÈQUE

Bibliothèque C standard ( libc , -lc )

SYNOPSIS

#include <stdlib.h>

int getsubopt(char **restrict optionp , char *const *restrict tokens ,
char **restrict
valuep );

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

getsubopt () :
_XOPEN_SOURCE >= 500
|| /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L

DESCRIPTION

getsubopt () parcourt la liste des sous-options séparées par des virgules fournie dans optionp (une liste de sous-options est typiquement créée lorsque getopt (3) est utilisée pour parcourir une ligne de commande ; consultez par exemple l’option -o de mount (8)). Chaque sous-option peut être associée à une valeur qui est séparée de son nom par un signe égal. La suite est un exemple de ce type de chaîne qui peut être passé à optionp :

ro,name=xyz

L’argument tokens est un pointeur vers un tableau de pointeurs (terminé par NULL) vers les marqueurs que getsubopt () recherche dans optionp . Les marqueurs doivent être distincts, contenant des chaînes terminées par un caractère nul d’au moins un caractère, sans signe égal ou virgule.

Chaque appel à getsubopt () renvoie une information sur la prochaine sous-option contenue dans optionp qui n’a pas été traitée. Le premier signal égal (s’il existe) est interprété comme un séparateur entre un nom et une valeur de sous-option. La valeur se termine à la prochaine virgule ou (pour la dernière sous-option) à la fin de la chaîne. Si le nom d’une sous-option correspond à un nom de tokens et qu’une chaîne de valeur est trouvée, getsubopt () définit *valuep à l’adresse de cette chaîne. La première virgule in optionp est surpassée par un octet nul, ainsi *valuep est exactement « la chaîne de valeur » de cette sous-option.

Si la sous-option est reconnue, mais qu’aucune chaîne de valeur n’existe, *valuep est défini à NULL.

Lorsque getsubopt () renvoie, optionp pointe vers la prochaine sous-option, ou vers l’octet nul (« \0 ») en fin de chaîne, si la dernière sous-option vient juste d’être traitée.

VALEUR RENVOYÉE

Si la première sous-option de optionp est reconnue, getsubopt () renvoie l’index de l’élément de tokens correspondant à la sous-option. Sinon, -1 est renvoyé et *valuep correspond à la chaîne nom [= valeur ] .

Puisque *optionp est modifié, la première sous-option avant l’appel à getsubopt () n’est pas nécessairement la même qu’après.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3890815-1.png

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001.

NOTES

Puisque getsubopt () réécrit toutes les virgules trouvées dans la chaîne *optionp , cette chaîne doit être accessible en écriture, elle ne peut pas être une chaîne constante.

EXEMPLES

Le programme suivant attend des sous-options après l’option « -o ».

#define _XOPEN_SOURCE 500
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int
main(int argc, char *argv[])
{
enum {
RO_OPT = 0,
RW_OPT,
NAME_OPT
};
char *const token[] = {
[RO_OPT] = "ro",
[RW_OPT] = "rw",
[NAME_OPT] = "name",
NULL
};
char *subopts;
char *value;
int opt;
int readonly = 0;
int readwrite = 0;
char *name = NULL;
int errfnd = 0;
while ((opt = getopt(argc, argv, "o:")) != -1) {
switch (opt) {
case 'o':
subopts = optarg;
while (*subopts != '\0' && !errfnd) {
switch (getsubopt(&subopts, token, &value)) {
case RO_OPT:
readonly = 1;
break;
case RW_OPT:
readwrite = 1;
break;
case NAME_OPT:
if (value == NULL) {
fprintf(stderr,
"Valeur absente pour la sous-option '%s'\n",
token[NAME_OPT]);
errfnd = 1;
continue;
}
name = value;
break;
default:
fprintf(stderr,
"Pas de correspondance trouvée pour le marqueur : /%s/\n", value);
errfnd = 1;
break;
}
}
if (readwrite && readonly) {
fprintf(stderr,
"Seul un de '%s' et '%s' peut être spécifié\n",
token[RO_OPT], token[RW_OPT]);
errfnd = 1;
}
break;
default:
errfnd = 1;
}
}
if (errfnd || argc == 1) {
fprintf(stderr, "\nUtilisation : %s -o <suboptstring>\n", argv[0]);
fprintf(stderr,
"les sous-options sont 'ro', 'rw', and 'name=<value>'\n");
exit(EXIT_FAILURE);
}
/* Remainder of program... */
exit(EXIT_SUCCESS);
}

VOIR AUSSI

getopt (3)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .