RoRo: CGIs in C geschrieben

hi,

es gibt einen neuen Artikel
http://i-netlab.de/cgilib/cgiinc.html

welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.

Gruß, Rolf

  1. Hallo,

    es gibt einen neuen Artikel
    http://i-netlab.de/cgilib/cgiinc.html

    Mir ist beim schnellen überfliegen des Artikels eine (für mich) Ungereimtheit aufgefallen, die Du Dir eventuell noch einmal anschauen solltest

    <code>
    cgiHeaderContentType("text/html");
    fprintf(cgiOut, "<HTML><HEAD>\n");
    fprintf(cgiOut, "<TITLE>CGI Umgebung</TITLE>\n</HEAD>\n");
    fprintf(cgiOut, "<BODY><H1>CGI Umgebung</H1>\n");
    printf("cgiServerSoftware: %s<br>", cgiServerSoftware);
    [...]
    printf("cgiContentLength: %s<br>", cgiContentLength);
    fprintf(cgiOut, "</BODY>\n</HTML>\n");
    </code>

    Warum wird einerseits ein fprintf, andererseits ein printf ausgeführt?
    Ist das nur zur Veranschaulichung, daß sowieso beides geht, oder einfach nur 'passiert'?

    Grüße
       Klaus

    1. Hallo,

      es gibt einen neuen Artikel
      http://i-netlab.de/cgilib/cgiinc.html

      Mir ist beim schnellen überfliegen des Artikels eine (für mich) Ungereimtheit aufgefallen, die Du Dir eventuell noch einmal anschauen solltest

      <code>
      cgiHeaderContentType("text/html");
      fprintf(cgiOut, "<HTML><HEAD>\n");
      fprintf(cgiOut, "<TITLE>CGI Umgebung</TITLE>\n</HEAD>\n");
      fprintf(cgiOut, "<BODY><H1>CGI Umgebung</H1>\n");
      printf("cgiServerSoftware: %s<br>", cgiServerSoftware);
      [...]
      printf("cgiContentLength: %s<br>", cgiContentLength);
      fprintf(cgiOut, "</BODY>\n</HTML>\n");
      </code>

      Warum wird einerseits ein fprintf, andererseits ein printf ausgeführt?
      Ist das nur zur Veranschaulichung, daß sowieso beides geht, oder einfach nur 'passiert'?

      Ersteres ;-) Es können beide funktionen verwendet werden, wobei die fprinf() eine spezielle Funktion der cgic-lib ist (siehe dort).

      Btw, es gibt da noch einige weitere Libs für C, schau mal hier
      http://www.cgi-resources.com/Programs_and_Scripts/C_and_C++/Libraries_and_Classes/, auch das Upload wird von einigen unterstützt. Mit CGI.h ist z.B. das Modul CGI.pm von Lincoln Stein implementiert und es gibt auch eine Lib analog zur cgi-lib.pl (von Steven E. Brenner).

      Die Links zu diesen Libs muss ich ncoh im Artikel einbauen, c-Tutorials gibt es ebenfalls haufenweise im WWW - c ist ein weites Betätigungsfeld für lange Winterabende ;-)

      Gruß aus KA, Rolf

      1. Hallo,

        Warum wird einerseits ein fprintf, andererseits ein printf ausgeführt?
        Ist das nur zur Veranschaulichung, daß sowieso beides geht, oder einfach nur 'passiert'?

        Ersteres ;-) Es können beide funktionen verwendet werden, wobei die fprinf() eine spezielle Funktion der cgic-lib ist (siehe dort).

        Na ja, fprintf habe ich schon verwendet, als CGI,HTML,HTTP usw. noch nicht mal definiert waren (ist Bestandteil von stdio) ;-)

        Btw, es gibt da noch einige weitere Libs für C, schau mal hier
        http://www.cgi-resources.com/Programs_and_Scripts/C_and_C++/Libraries_and_Classes/, auch das Upload wird von einigen unterstützt. Mit CGI.h ist z.B. das Modul CGI.pm von Lincoln Stein implementiert und es gibt auch eine Lib analog zur cgi-lib.pl (von Steven E. Brenner).

        Danke, vielleicht finde ich dort auch einige Hints, um meine HTTP-Clientseite besser zu implemetieren.

        Die Links zu diesen Libs muss ich ncoh im Artikel einbauen, c-Tutorials gibt es ebenfalls haufenweise im WWW - c ist ein weites Betätigungsfeld für lange Winterabende ;-)

        Da wird das aber, angesichts des baldigen Frühlingsbeginn, noch ein paar Monate warten müssen, außer Du 'opferst' inzwischen die Regentage dafür;-)

        Grüße
          Klaus

        1. Hi Klaus,

          Na ja, fprintf habe ich schon verwendet, als CGI,HTML,HTTP usw. noch nicht mal definiert waren (ist Bestandteil von stdio) ;-)

          das stimmt natürlich.
          Andererseits empfiehlt Boutell also fprintf(cgiOut,"");
          weil:
          "_Important:_ [52]cgiOut is normally equivalent to stdout, and there is
             no performance penalty for using it. It is recommended that you write
             output to [53]cgiOut to ensure compatibility with future versions of
             the cgic library for special environments that do not provide stdin
             and stdout for each cgi connection."

          Machs gut, Rolf

  2. Hallo,

    es gibt einen neuen Artikel
    http://i-netlab.de/cgilib/cgiinc.html

    welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.

    Sosehr ich dafür bin,den Nachwuchs zu fördern, möchte ich doch bitten ihn nicht schlampiges Arbeiten zu lehren. Sowas setzt sich leider fest und führt am Ende zu eher peinlichen Meldungen bei securityfocus.org et al.

    Kein einziger der C-Snippets ist fehlerfrei, von ordentlicher Ausführung ganz abgesehen. Zumindest ein Hinweis müßte hin.

    Auch vermisse ich weiterführende Links. 5 Minuten bei Google hätten doch zumindest das eine oder andere Tutorial ergeben, oder? ;-)

    Ich bin aber natürlich gerne bei der Korrektur behilflich, falls gewünscht.

    so short

    Christoph Zurnieden

    PS: fällt mir gerade erst auf: GCC und DJGPP sind normalerweise zwei verschiedene Compiler, die Installationsanleitung oben ist etwas irritierend.
    CZ

    1. Moin CZ,

      es gibt einen neuen Artikel
      http://i-netlab.de/cgilib/cgiinc.html

      welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.

      Dank deiner Hinweise hab ich o.g. Artikel nocheinmal komplett überarbeitet, Fehler bereinigt, kurze Erläuterungen zum Code gegeben und ein paar Links eingebaut.

      Machs gut, Rolf

      1. Hallo,

        es gibt einen neuen Artikel
        http://i-netlab.de/cgilib/cgiinc.html

        welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.

        Dank deiner Hinweise hab ich o.g. Artikel nocheinmal komplett überarbeitet, Fehler bereinigt, kurze Erläuterungen zum Code gegeben und ein paar Links eingebaut.

        Aha, wußtest also ganz genau, _was_ da nicht stimmte, gelle? ;-)

        BTW: so ganz stimmt es immer noch nicht, ist aber so i.O.
        Als kleines Beispiel, warum das so reichen muß, sei hier mal eine korrekte "Hello World" Version hingesetzt.
        Ja genau: man kann es auch übertreiben ;-)))

        #include <stdlib.h> /* für exit() und Macrodefinitionen */
        #include <stdio.h>  /* für puts() und Macrodefinitionen */

        int main(void){
                if( puts("Hello World") != EOF) {
                        exit(EXIT_SUCCESS);
                } else {
                        exit(EXIT_FAILURE);
                }
        }

        so short

        Christoph Zurnieden