Moin!
Ja, da undefiniertes Verhalten auftreten könnte: getenv() kann NULL zurückgeben. Diese Möglichkeit schließt du vor der Ausgabe nicht aus.
Ich weiß, dass getenv() NULL zurückgeben kann, da ich mir das vorher in den Beispielen genau angesehen habe. ;)
Wenn du eine „gescheite Libc“™ verwendest, wird statt eines Murkses einfach der String "(null)"
ausgegeben.
Das werde ich natürlich noch ausgiebig testen, bevor ich die Methode weiter verwende.
Das ist sehr gut, wenn du möchtest, kannst du uns ja daran teilhaben lassen (knifflige Probleme finden oder merkwürdige Fehler aufklären).
Hierzu noch eine Frage: Der Aufruf getenv("QUERY_STRING") liefert mir ja den kompletten Teilstring zurück, der an die URL nach dem Fragezeichen angehängt wird. Wie formatiert man diesen nun am besten um? Und bekommt auch Sonderzeichen wieder so, wie sie übergeben wurden?
Für C++ müsste es fertige CGI-Bibliotheken geben, die z.B. den Querystring bzw. eine POST-Eingabe komplett zerlegen und in einer std::map oder so zur Verfügung stellen. Dabei ist allerdings unabhängig davon, ob du eine bestehende oder eigens entwickelte Bibliothek einsetzt, zu beachten, wie z.B. mit dem Nullbyte umgegangen wird, was als %00 prima per URL daherkommt und dir im Zusammenspiel mit C (z.B. als Dateiname) Probleme bereiten kann.
Viele Grüße,
Robert