inr_init(argc ,argv,progvers,ucmd,udetail)
int argc; char **argv;
char *progvers, *ucmd, *udetail;
inr_initm(argc ,argv,progvers,cmds)
struct multi_cmd {
char *name; /* basename of command */
char *ucmd; /* short usage message */
char *udetail; /* detailed message */
};
int argc; char **argv;
char *progvers;
struct multi_cmd *cmds;
Si argc et argv ne sont pas nuls, le programme appelle initopts qui copie les arguments argc, argv dans les variables globales xargc, xargv qui sont utilisées notamment par igetopt.
Si progvers n'est pas nul, il contient l'adresse d'une chaine de caractères représentant le nom de version du programme (imprimé avec l'option -vers ou avec le "help-message" de iusage_).
ucmd et udetail sont utilisés dans inr_init pour appeler iusage_. ucmd est une chaine de caractères qui doit contenir un message d'une ligne listant les options de la commande (sans le nom de celle-ci). udetail doit contenir, éventuellement sur plusieurs lignes, des informations complémentaires, telles que la description succinte de certaines options.
cmds est utilisé par inr_initm pour les commandes à variantes multiples (plusieurs noms pour le même exécutable ou variante sélectionnée par une option parmi N). C'est une table de structures, dont la derniere est nulle. Chaque structure décrit l'une des variantes : elle contient le nom de la commande ou de l'option (si le 1er caractère est -) et les 2 messages de help (analogues à ucmd et udetail). Le programme renvoie l'indice de la variante, ou -1.
Ces programmes appellent kdopts_ pour lire les options
-D, -k nb_Ko, et -vers :
-D passe en mode debug (met 1 dans debug_)
-k met nb_Ko dans la variable koctet_,
qui est utilisée par certains programmes,
pour controler la quantité de mémoire allouée.
-vers fait imprimer sur stderr un message contenant
le nom de la commande, sa version (définie par progvers,
et la version de la bibliothèqie INRIMAGE.
Enfin, inr_init, inr_initm appellent hlpopt_ pour traiter
les options -help et -Help :
avec -Help on obtiendra simplement la liste des options
(on appelle iusage_(ucmd,"");)
avec -help on obtiendra le message d'aide complet
(appel de iusage_(ucmd,udetail);)
clearopts réinitialise le mécanisme d'options. Si on ne modifie pas xargc, xargv, on pourra relire les mêmes options. Si on leur donne d'autres valeurs, on pourra utiliser igetopt pour analyser une nouvelle série d'options.
initopts
copie les arguments argc, argv de la fonction main
dans les variables globales xargc, xargv qui sont
utilisées par igetopt.
Il est recommandé d'utiliser inr_init plutôt que initopts.
static char Ucmd[]= "[-D] [-x n1 n2] [-N=10] image"; static char Udetail[]= "....."; main(argc,argv) int argc;char **argv; inr_init(argc,argv,"2.0",Ucmd,Udetail);