Beschreibung | getsubopt() trennt Unteroptionen aus einem Schalterargument heraus, welches zuerst durch getopt() verarbeitet wurde. Diese Unteroptionen müssen durch Kommas getrennt sein und dürfen entweder aus einem einzelnen Token oder einem Token-Wert-Paar bestehen, das durch ein Gleichheitszeichen getrennt wird. Da Kommas Unteroptionen in der Optionszeichenkette begrenzen, dürfen sie nicht Teil der Unteroption oder des Wertes einer Unteroption sein. Dementsprechend darf ein Token kein Gleichheitszeichen enthalten, da Token und zugehöriger Wert durch ein Gleichheitszeichen getrennt werden.
getsubopt() erhält die Adresse eines Zeigers auf die Optionszeichenkette, die einen Vektor möglicher Tokens darstellt, und die Adresse eines Zeigers auf eine Wertzeichenkette. Der Index des Tokens, das der Unteroption aus der übergebenen Zeichenkette entspricht, wird zurückgeliefert; wird keine entsprechende Unteroption gefunden, wird -1 zurückgegeben. Wenn die Optionszeichenkette bei *optionp nur eine Unteroption enthält, aktualisiert getsubopt() *optionp so, dass auf das Nullzeichen am Ende der Zeichenkette gezeigt wird; ansonsten wird die Suboption isoliert, indem das trennende Komma durch ein Nullzeichen ersetzt wird, und *optionp zeigt auf den Anfang der nächsten Unteroption. Wird der Unteroption ein Wert zugewiesen, aktualisiert getsubopt() *valuep, so dass auf das erste Zeichen des Wertes gezeigt wird. Ansonsten wird *valuep auf NULL gesetzt.
Der Token-Vektor wird als Folge von Zeigern auf durch Null abgeschlossene Zeichenketten organisiert. Das Ende des Token-Vektors wird durch einen Nullzeiger gekennzeichnet. getsubopt() liefert dann, wenn valuep nicht NULL ist, die Unteroption zurück, der ein Wert zugewiesen wurde. Das aufrufende Programm kann diese Information verwenden, um zu bestimmen, ob das Vorhandensein oder das Fehlen eines Wertes für diese Unteroption einen Fehler darstellt. Findet getsubopt() keine Unteroption im Vektor tokens, sollte das aufrufende Programm entscheiden, ob es sich hierbei um einen Fehler handelt, oder ob die nichterkannte Option an ein anderes Programm übergeben werden sollte.
|