Gestion des options de ligne de commande avant et après un argument en C

Jusqu’ici, j’utilisais getopt_long pour parsingr les options d’un programme en ligne de commande.

Existe-t-il un moyen d’arrêter l’parsing de getopt_long lorsqu’il rencontre un argument autre qu’une option? Si non, quelle est la meilleure façon de gérer cela en C?

Pour donner un exemple, j’aimerais manipuler les commandes de la même manière que git , avec des arguments généraux avant une commande et des arguments spécifiques à la commande après celle-ci:

 git [general options]  [command options] 

par exemple:

 git --bare commit -a git -p --bare status -s 

-p et --bare sont des options générales pouvant être utilisées avec toutes les commandes, alors que -a est propre à la commande commit et que -s propre à la commande status .

En utilisant getopt_long nous essaierons d’abord d’parsingr toutes les options, puis de laisser les arguments qui ne sont pas des options à gérer. Dans l’idéal, j’aimerais arrêter l’parsing une fois que je frappe une non-option (c’est-à-dire la commande), puis passer les arguments restants à un parsingur d’options spécifique à la commande.

    Le manuel GNU Getopt dit:

    POSIX exige le comportement suivant: La première non-option arrête le traitement des options. Ce mode est sélectionné en définissant la variable d’environnement POSIXLY_CORRECT ou en commençant la chaîne d’argument des options par un signe plus (‘+’).