Mailinglisten-Archive |
Marc Logemann wrote: > Keine Ahnung, muss ich ersma checken was das sein soll :)) Ein Perl-Script, das Du in Deinem PHP3-Sourcetree aussetzen kannst und das dann alle Funktionsnamen aus dem C-Source pflückt. #! /usr/bin/perl -- # Benutze das Modul File::Find, um den Dateibaum abzusuchen. # Siehe auch "perldoc File::Find" use File::Find; # # Diese Funktion wird mit einem Dateinamen aufgerufen und durchsucht # die angegebene C-Datei nach Funktionsnamen. # sub scanforfunction { my($file) = shift; # Einlesen der gesamten Datei $file in eine Variable $line. $x = $/; open(IN, "<$file") or warn "Cannot open $file "; undef $/; $line = <IN>; close IN; $/ = $x; # Durchsuche $line nach Text der Art # function entry pcre_functions[] = { }; # und merke Dir den Modulnamen ("pcre") und den Teil zwischen # den geschweiften Klammern als $1 und $2. $line =~ m!function_entry\s+(\w+)_functions\[\]\s*=\s*\{(.*?)\};!s; # Nix in der Datei zu finden -> weg hier. if (!$1) { return; } # $1 ist der Modulname ("pcre") # _(at)_lines sind die Zeilen zwischen den geschweiften Klammern ($2). $mod = $1; _(at)_lines = split "\n", $2; # Diese Zeilen _(at)_lines gehen wir jetzt durch. Sie haben entweder die Form # {"funktionsname", cfunktionsname, irgendwas } oder die Form # PHP_FE(funktionsname, irgendwas) foreach $i (_(at)_lines) { # Suche nach {"funktionsname", cfunctionsname, # und merke Dir funktionsname ($1) und cfunctionsname ($2). # Drucke den Treffer aus. $i =~ /\{\s*"(\w+)"\s*,\s*(\w+)\s*,/ && printf "%-18s %-18s %-18s %-18s\n", $mod, $1, $file, $2; # Suche nach PHP_FE(funktionsname, # und merke Dir funktionsname ($1). # Drucke den Treffer aus. $i =~ /PHP_FE\(\s*(\w+)\s*,/ && printf "%-18s %-18s %-18s %-18s\n", $mod, $1, $file, "php3_$1"; } } # Durchsuche Dateien mit der Endung .c # Rufe für jede dieser Dateien scanforfunction von oben auf. sub wanted { if (/\.c$/) { &scanforfunction($_); } } # Drucke Überschrift printf "%-18s %-18s %-18s %-18s\n", "\_(at)_MODULE", "PHP Function", "FILE", "C Function"; # Durchsuche das aktuelle Verzeichnis gemäß der Funktion wanted von oben. finddepth(\&wanted, "."); Kristian -- Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00 Using PHP3? See our web development library at http://phplib.shonline.de/ (GPL)
php::bar PHP Wiki - Listenarchive