From: Jim Jagielski Date: Wed, 27 Aug 2008 17:38:04 +0000 (+0000) Subject: update to handle multilines X-Git-Tag: 2.2.10~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c6337dc0eabce53c6a31749805f37e990a7e424a;p=thirdparty%2Fapache%2Fhttpd.git update to handle multilines git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@689534 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/support/list_hooks.pl b/support/list_hooks.pl index cb863db7ef2..7a6c9332c39 100755 --- a/support/list_hooks.pl +++ b/support/list_hooks.pl @@ -59,16 +59,25 @@ sub findInDir { sub scanFile { my $file=shift; -# print "scanning $file\n"; +# print "scanning $file\n"; open(F,$file) || croak "Can't open $file: $!"; while() { next if /\#define/; next if /\@deffunc/; - if(/AP_DECLARE_HOOK\((.*)\)/) { - my $def=$1; - my($ret,$name,$args)=$def=~/([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*\((.*)\)/; - croak "Don't understand $def in $file" if !defined $args; + if(/AP_DECLARE_HOOK\s*\(/) { + my($ret,$name,$args); + while(!(($ret,$name,$args)= + /AP_DECLARE_HOOK\s*\(\s*([^,]+)\s*,\s*([^,\s]+)\s*,\s*\((.*?)\)\)/s)) { + chomp; + # swallow subsequent lines if needed to get all the required info + my $l=; + return unless defined $l; + $l=~s/^\s*/ /; + $_.=$l; + } + $ret=~s/\s*$//; + $args=~s/^\s*//; $args=~s/\s*$//; # print "found $ret $name($args) in $file\n"; croak "$name declared twice! ($_)" @@ -76,15 +85,6 @@ sub scanFile { $::Hooks{$name}->{declared}=$file; $::Hooks{$name}->{ret}=$ret; $::Hooks{$name}->{args}=$args; - } elsif(/AP_DECLARE_HOOK\((\s*[^,\s]+)\s*,\s*([^,\s]+)/) { -# really we should swallow subsequent lines to get the arguments... - my $name=$2; - my $ret=$1; - croak "$name declared twice! ($_)" - if exists $::Hooks{$name}->{declared}; - $::Hooks{$name}->{declared}=$file; - $::Hooks{$name}->{ret}=$ret; - $::Hooks{$name}->{args}='???'; } if(/AP_IMPLEMENT_HOOK_()(VOID)\(([^,\s]+)/ || /AP_IMPLEMENT(_OPTIONAL|)_HOOK_(.*?)\([^,]+?\s*,\s*([^,\s]+)/) {