ansi2knr






ansi2knr − konvertiert ANSI C zu Kernighan & Ritchie C

ansi2knr [‐‐filename Dateiname] [Eingabedatei
[Ausgabedatei]]

‐‐filename setzt den Dateinamen für die #line‐Anweisung in
der Ausgabe anstatt die Eingabedatei (falls angegeben) zu
benutzen.

Falls keine Eingabedatei angegeben wird, wird die Eingabe
von der Standardeingabe (stdin) gelesen.

Falls keine Ausgabedatei angegeben wird, wird die Ausgabe
zur Standardausgabe (stdout) geschrieben.

Es gibt keine Fehlermeldungen.

ansi2knr erkennt Funktionsdefinitionen indem nach nicht
Schlüsselwortbezeichnern am linken Rand gesucht wird, denen
eine linke Klammer folgt und dessen Zeile mit einer rechten
Klammer endet; und mit einen linken geschweiften Klammer as
erstes Element in der folgenden Zeile. (Dabei werden etwaige
dazwischenliegende Kommentare ignoriert.) Es erkennt
mehrzeilige Header falls keine Zeilen dazwischen mit einer
geschweiften Klammer oder einem Semikolon enden. Dieser
Algorithmus ignoriert Leerzeichen und Kommentare mit
AuÃnahme, daà der Funktionsname als erstes in der Zeile
stehen muÃ.

ansi2knr erkennt auch aufeinanderfolgende
Zeichkettenkonstanten und verschmelzt diese.

Folgende Konstrukte verwirren das Programm:
     ‐ Alle anderen Konstrukte die am linken Rand beginnen
und den oben genannten Syntax besitzen (wie Makros oder
Funktionsaufrufe).
     ‐ Einige Makros, die mit der Syntax von Funtionsheadern
herumdoktoren.
     ‐ Zeichenkettenliterale, dessen Verknüpfung verlangt,
daà der Inhalt geändert werden muÃ; beispielsweise wird
"ab " "07c" zu "ab 07c" verknüpft, was falsch ist.

Der ‐‐varargs Schalter ist obsolet und wird nur noch aus
Kompatibilitätgründen erkannt. Die aktuelle Version von
ansi2knr wird immer versuchen ein ... Argument zu va_alist
und va_dcl zu konvertieren.

L. Peter Deutsch von Aladdin Enterprises schrieb die
urspüngliche Version von ansi2knr; der gröÃÂte Teil des
Programmes wurde von ihm geschrieben. ansi2knr enthält
auch Ergänzungen von Francois Pinard
<pinard@iro.umontreal.ca>, Jim Avera <jima@netcom.com> und
Paul Eggert <eggert@twinsun.com>.