Home Codeanalyse cleanUp getPOSTvars
 

6.3.2 getGETvars

Datei
cgivars.c
 
Return_typedef
char **
 
Return_if_failure
keine Fehlerabfangung (sollte bei Speichermangel noch nachprogrammiert werden!)
 
Return_if_ok
Zeiger auf Array, in welchem die Zeiger auf jeweilige Variablen/Werte-Paare abgelegt sind
 

Die Environmentvariable QUERY_STRING wird ausgewertet.

Dieser String sieht typischerweise so aus:

"Name+1.+Variable=Wert+1.+Variable&Name+2.+Variable=Wert+2.+Variable..."

Das Muster hat als Trenner das Zeichen "&" von einem Variablen/Werte-Paar zum anderen.

Variable und Wert werden mit "=" voneinander getrennt

Das "+" ist ein Ersatz für das Leerzeichen.

Zuerst wird der String im Speicher dupliziert.

Dann folgt ein Codeteil, welcher sich quasi vollkommen identisch später in getPOSTvars wiederholt. Das kann also in Punkto Strukturierung besser programmiert werden!

In diesem duplizierten String werden zuerst alle "+" in Leerzeichen zurückgewandelt. Dann wird eine Zeigerliste auf die einzelnen Variablen/Wert-Paare aufgebaut, wobei die einzelnen Zeiger auf jeweils individuell neu angeforderte Speicherbereiche zeigen. Das Ende dieser Paarliste wird mit "0" gekennzeichnet.

Nachdem man nun die Anzahl der Paare kennt, kann man Speicher für genau doppelt so viele Zeiger, jetzt jeweils zwei Zeiger pro Paar, ein für den Variablennamen, den anderen für den Wert, anfordern.

Diese Zeiger werden abermals durch Duplizierung der einzelnen Strings gewonnen und in der endgültigen Zeigerliste abgelegt. Diese Zeigerliste ist dann genau die zurückgegebene Liste.

Eventuell noch vorkommende URL-Escape-Zeichen (das ist "%") werden in den jeweiligen Hexwert zurückgerechnet.


Copyright © Andreas Birkert
Letzte Aktualisierung am 20. Dezember 2013
Home Codeanalyse cleanUp getPOSTvars