Na začátku se inicializuje řada různých proměnných na základě proměnných prostředí, nastavených serverem při spuštění programu. Poté následuje otevření soketu, který bude použit pro komunikaci s WWW serverem. To se odehraje příkazem:
sock=connect_server( host, port );Po jeho provedení proměnná sock obsahuje deskriptor vytvořeného socketu. Pokud se operace nepovedla, vypíše se zpráva: "Chyba v komunikaci" a program skončí. Pro přesnost, procedura http_perr slouží k tomu, aby vypsala chybovou hlášku tak, aby ji browser zobrazil, tzn. napíše
Content-type: text/html
obsah chybového hlášení
Jestliže s otevíráním nebyly potíže, program si otevře pro deskriptor tohoto socketu stream ( => programátorsky snadněj a hlavně rychlejší zpracování přicházejících dat), položí dotaz WWW serveru a začne zpracovávat odpověď. Její zpracování je rozloženo do dvou cyklů while. V prvním se vyhodnocují hlavičky odpovědi a hledá se v nich Content-Type. Obsah příslušné hlavičky je pak porovnán s obsahem pole ext, což dělá makro ISMIME, a pokud je v něm příslušný typ obsažen, nastaví se proměnná convert na hodnotu 1 => obsah odpovědi má být překódován. Tato činnost se provádí jen v tom případě, pokud server odpovídá protokolem HTTP verze alespoň 1.0. Odpovědi starších serverů nebudou překódovány. Zjištění verze protokolu, ve kterém server odpovídá, zajišťuje test
if ( !str_prefix( buf, "HTTP/" ) )Máte-li server s protokolem HTTP verze 0.9 a chcete, aby jeho odpovědi byly kódovány, vložte do else-větve tohoto příkazu
convert=1;Ovšem v tom případě budou kódovány všechny odpovědi, procházející procedurou EncodeHTTP bez ohledu na jejich typ! Fatální zejména u obrázků.
Hlavní část skriptu je uzavřena do podmíněného příkazu
if ( convert )Jeho else-větev nedělá nic. Pouze opíše svůj vstup do výstupu. Pokud se má kódovat, je činnost totožná s funkcí odpovídající části podprogramu EncodeFile.
Tato stránka je součástí dokumentace programu C-SaCzech.