ein Kapitel zurück                                           ein Kapitel weiter

Wie gehts den nun Weiter?

Das Programm ausgiebig testen bzw. testen lassen. Bevor sie es jemanden anderes zum Testen oder download freigeben, sollten sie schon sicher sein das sie alle Bugs die sie finden können, behoben haben.

Denn allzuoft stellt sich heraus das ein Programm erst beim Kunden reift, da es nie ausreichend getestet wurde. Während des Testens kommen wieder viele neu Ideen, um das Programm noch besser zu machen. Schreiben sie sich die Ideen auf und setzten sie diese auch in die Tat um. Da die Hauptfunktionen geschrieben sind, dürfte dies kein Problem mehr sein. An folgenden Stellten habe ich das Programm für mich angepasst....

In der main-Funktion.......



if (freopen("c:\\c\\temp.html", "w", stdout) == NULL)
    {
      fprintf(stderr, "Fehler bei temp.html\n");
      exit(0);
    }


Da ich keine Lust hatte andauernd etwas in der Kommandozeile einzugeben, erzeuge ich die Datei Namens temp.html Damit ist DRAG&DROP unter Windows möglich. Ich lasse dabei die C-Datei einfach auch C2html.exe fallen und bekomme den HTML-Code davon unter das Verzeichnis c:\c\temp.html Linux-User können sie den Pfad anpassen.

Da unter Win/Dos das newline-Zeichen so \r\n aussieht, musste das Programm für diese Betriebssystem modifiziert werden. Als musste in der Funktion c2html()....

case '\n'

..geändert werden zu...

case '\r\n'

Dies sollte noch mit einer bedingten Compilierung verbessert werden, um portabel zu bleiben.

Da ich den C-Code in einem speziellen Verzeichnis aufbeware und teste, und um dabei nicht ständig jeden einzelnen Code wenn er von C ins HTML-Konvertiert wird, ins Download-Verzeichniss meiner Homepage kopieren muss habe ich das auch gleich mit eingebaut in der main-Funktion......



if((quelle=fopen(argv[1],"r")) == NULL)
  {
    fprintf(stderr,"Kann %s nicht oeffnen\n",argv[1]);
    exit (0);
  }

strcat(copy_pfad,return_name);

if((ziel=fopen(copy_pfad,"w")) == NULL)
  {
    fprintf(stderr,"Kann %s nicht oeffnen\n",copy_pfad);
    exit (0);
  }

while(fgets(puffer,100,quelle))
     fputs(puffer,ziel);


Der copy_pfad ist eine globale Variable, die jeder seinen Bedürfnissen anpassen muss. Bei mir sieht diese so aus.....

char copy_pfad[]="c:\\WINDOWS\\Desktop\\newtemp4\\ckurs\\code\\";

Wo wir auch schon beim nächsten Problem unter DOS (wo den sonst) hätten. Bei argv[0] wird unter DOS der ganze Pfad mitausgegeben. Wir wollen aber nur den Programmnamen. Und außerdem bringen die Backslashes '\' bei manchen Browsern Problem mit sich. Also schreiben wir auch dafür eine Funktion die das alles bis auf den Programmnamen selbst entfernt.........


/*Funktion bei UNIX/Linux entfernen*/ static void lower_case(char *file_name) { /*Beispiel "C:\PFAD\NAME.C" -> "name.c"*/ char pfad[255]; char *p; int i; return_name[0]='\0'; strcpy(pfad, (char *)file_name); p=file_name; while(*p++) { if(*p=='\\') { *++p; /* '\' wegmachen */ pfad[0]='\0'; strcpy(pfad, (char *)p); } } /*Jetzt noch schnell in Kleinbuchstaben*/ for(i=0; pfad[i]!='\0'; i++) return_name[i]=tolower(pfad[i]); return_name[++i]='\0'; }

Zugegeben in Perl hätten wir das ganze in einer Zeile gelöst, aber wir haben hier C. Da wir mit dieser Funktion unseren Programmnamen beschnitten haben, können wir Ihn auch gleich am Anfang des Programms, als Kommentar zum Download anbieten. Wir haben das Programm ja in das Verzeichnis kopiert und den Namen zurecht geschnitten. Dies erledigen wir in der Funktion html_head() mit folgender Zeile......


fprintf(stdout,"<P><PRE><font color=\"#808080\">/*Download: <A HREF=\"./code/%s\">%s</A>*/</font><br>\n",return_name,return_name);

Hier können sie sich die auf meinem Rechner angepasste Version herunterladen.

Nun haben wir doch schon einiges Verbessert, oder? Es gibt aber noch vieles,vieles mehr zu verbessern.

Folgendes würde mir dazu einfallen.......

  • ein ganzes Verzeichnis nach C-Files durchlaufen und aus jedem C-File eine HTML-Datei machen
  • Schalter hinzufügen um den Programmablauf zu beinflussen wie z.B. Farbe -nocolor oder Zeilennummerierung mit -lines, oder weitere Programmiersprachen hinzufügen........
  • Die einzelnen Schlüsselworte und Präprozessordirektiven mit einem Link zu Erklärungen auf anderen Webseiten Verknüpfen.
  • Automatisches Anhängen des C Codes am Ende einer HTML-Datei mit dem a+ Modus.
  • u.s.w....

Ein Bug müsste auch noch behoben werden: Bei Zeilen mit dem Präprozessor kann auf der selben Zeile kein Kommentar mit der richtigen Farbe dargestellt werden. Die Kommentare werden ebenfalls grün gefärbt. Ein weitere Bug wäre, dass es nicht möglich ist einen Kommentar mit den C89-Standard darzustellen. '\\' erkennt das Programm noch nicht.

Sollte jemand, einen C2HTML-Konverter mit Speziellen wünschen benötigen, bin ich gerne bereit, das Programm Ihren Bedürfnissen anzupassen.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf