httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From b..@apache.org
Subject cvs commit: httpd-2.0/support list_hooks.pl
Date Sun, 27 May 2001 15:31:08 GMT
ben         01/05/27 08:31:08

  Modified:    os/unix  unixd.h
  Added:       support  list_hooks.pl
  Log:
  Utility to list available hooks.
  
  Revision  Changes    Path
  1.22      +1 -2      httpd-2.0/os/unix/unixd.h
  
  Index: unixd.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/os/unix/unixd.h,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- unixd.h	2001/04/07 19:37:54	1.21
  +++ unixd.h	2001/05/27 15:31:07	1.22
  @@ -79,8 +79,7 @@
       gid_t gid;
   } ap_unix_identity_t;
   
  -AP_DECLARE_HOOK(ap_unix_identity_t *, get_suexec_identity,(const request_rec *r)
  -)
  +AP_DECLARE_HOOK(ap_unix_identity_t *, get_suexec_identity,(const request_rec *r))
   
   /* common stuff that unix MPMs will want */
   
  
  
  
  1.1                  httpd-2.0/support/list_hooks.pl
  
  Index: list_hooks.pl
  ===================================================================
  #!/usr/bin/perl -w
  
  use strict;
  
  use Carp;
  
  my $path=shift;
  
  findInDir($path);
  
  foreach my $hook (sort keys %::Hooks) {
      my $h=$::Hooks{$hook};
      for my $x (qw(declared implemented type args)) {
  	croak "$hook datum '$x' missing" if !exists $h->{$x};
      }
      print "$hook\n";
      print "  declared in $h->{declared}\n";
      print "  implemented in $h->{implemented}\n";
      print "  type is $h->{type}\n";
      print "  $h->{ret} $hook($h->{args})\n";
      print "\n";
  }
  
  sub findInDir {
      my $path=shift;
  
      local(*D);
      opendir(D,$path) || croak "Can't open $path: $!";
      while(my $f=readdir D) {
  	next if $f=~/^\./;
  	my $file="$path/$f";
  
  	if(-d $file) {
  	    findInDir($file);
  	    next;
  	}
  	next if $file !~ /\.[ch]$/;
  
  	scanFile($file);
      }
      closedir D;
  }
  
  sub scanFile {
      my $file=shift;
  
  #    print "scanning $file\n";
  
      open(F,$file) || croak "Can't open $file: $!";
      while(<F>) {
  	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;
  #	    print "found $ret $name($args) in $file\n";
  
  	    croak "$name declared twice! ($_)"
  		if exists $::Hooks{$name}->{declared};
  	    $::Hooks{$name}->{declared}=$file;
  	    $::Hooks{$name}->{ret}=$ret;
  	    $::Hooks{$name}->{args}=$args;
  	}
  	if(/AP_IMPLEMENT_HOOK_()(VOID)\(([^,\s]+)/
  	   || /AP_IMPLEMENT(_OPTIONAL|)_HOOK_(.*?)\([^,]+?\s*,\s*([^,\s]+)/) {
  	    my($type,$name)=($1 ? "OPTIONAL $2" : $2,$3);
  
  #	    print "found $name $type in $file\n";
  
  	    croak "$name implemented twice ($::Hooks{$name}->{implemented} and $file) ($_)"
  		if exists $::Hooks{$name}->{implemented};
  	    $::Hooks{$name}->{implemented}=$file;
  	    $::Hooks{$name}->{type}=$type;
  	}
      }
  }
  
  
  

Mime
View raw message