From a822096ce2c2f00fdb062a32f5e138acc2fa4c83 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Tue, 5 Aug 2008 17:25:34 +0000 Subject: [PATCH] Make list_hooks.pl multi-line aware, and swallow up the required lines to obtain args, etc... git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@682814 13f79535-47bb-0310-9956-ffa450edef68 --- support/list_hooks.pl | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/support/list_hooks.pl b/support/list_hooks.pl index cb863db7ef..7a6c9332c3 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]+)/) { -- 2.40.0