1251875Speter#!/usr/bin/perl -w
2251875Speteruse strict;
3251875Speteruse ExtUtils::MakeMaker qw(prompt);
4251875Speteruse File::Find;
5251875Speter
6251875Spetermy $just_check = @ARGV ? $ARGV[0] eq '-c' : 0;
7251875Spetershift if $just_check;
8251875Spetermy $dir = shift || '.';
9251875Spetermy %names;
10251875Speter
11251875Spetermy $prefix = 'apr_';
12251875Speter
13251875Speterwhile (<DATA>) {
14251875Speter    chomp;
15251875Speter    my($old, $new) = grep { s/^$prefix//o } split;
16251875Speter    next unless $old and $new;
17251875Speter    $names{$old} = $new;
18251875Speter}
19251875Speter
20251875Spetermy $pattern = join '|', keys %names;
21251875Speter#print "replacement pattern=$pattern\n";
22251875Speter
23251875Speterfind sub {
24251875Speter    chomp;
25251875Speter    return unless /\.[ch]$/;
26251875Speter    my $file = "$File::Find::dir/$_";
27251875Speter    print "looking in $file\n";
28251875Speter
29251875Speter    replace($_, !$just_check);
30251875Speter
31251875Speter}, $dir;
32251875Speter
33251875Spetersub replace {
34251875Speter    my($file, $replace) = @_;
35251875Speter    local *IN, *OUT;
36251875Speter    my @lines;
37251875Speter    my $found = 0;
38251875Speter
39251875Speter    open IN, $file or die "open $file: $!";
40251875Speter
41251875Speter    while (<IN>) {
42251875Speter        for (m/[^_\"]*$prefix($pattern)\b/og) {
43251875Speter            $found++;
44251875Speter            print "   $file:$. apr_$_ -> apr_$names{$_}\n";
45251875Speter        }
46251875Speter        push @lines, $_ if $replace;
47251875Speter    }
48251875Speter
49251875Speter    close IN;
50251875Speter
51251875Speter    return unless $found and $replace;
52251875Speter
53251875Speter#    my $ans = prompt("replace?", 'y');
54251875Speter#    return unless $ans =~ /^y/i;
55251875Speter
56251875Speter    open OUT, ">$file" or die "open $file: $!";
57251875Speter
58251875Speter    for (@lines) {
59251875Speter        unless (/^\#include/) {
60251875Speter            s/([^_\"]*$prefix)($pattern)\b/$1$names{$2}/og;
61251875Speter        }
62251875Speter        print OUT $_;
63251875Speter    }
64251875Speter
65251875Speter    close OUT;
66251875Speter}
67251875Speter
68251875Speter__DATA__
69251875Speterapr_time_t:
70251875Speterapr_implode_gmt              apr_time_exp_gmt_get
71251875Speter
72251875Speterapr_socket_t:
73251875Speterapr_close_socket             apr_socket_close
74251875Speterapr_create_socket            apr_socket_create
75251875Speterapr_get_sockaddr             apr_socket_addr_get
76251875Speterapr_get_socketdata           apr_socket_data_get
77251875Speterapr_set_socketdata           apr_socket_data_set
78251875Speterapr_shutdown                 apr_socket_shutdown
79251875Speterapr_bind                     apr_socket_bind
80251875Speterapr_listen                   apr_socket_listen
81251875Speterapr_accept                   apr_socket_accept
82251875Speterapr_connect                  apr_socket_connect
83251875Speterapr_send                     apr_socket_send
84251875Speterapr_sendv                    apr_socket_sendv
85251875Speterapr_sendto                   apr_socket_sendto
86251875Speterapr_recvfrom                 apr_socket_recvfrom
87251875Speterapr_sendfile                 apr_socket_sendfile
88251875Speterapr_recv                     apr_socket_recv
89251875Speter
90251875Speterapr_filepath_*:
91251875Speterapr_filename_of_pathname     apr_filepath_name_get
92251875Speter
93251875Speterapr_gid_t:
94251875Speterapr_get_groupid              apr_gid_get
95251875Speterapr_get_groupname            apr_gid_name_get
96251875Speterapr_group_name_get           apr_gid_name_get
97251875Speterapr_compare_groups           apr_gid_compare
98251875Speter
99251875Speterapr_uid_t:
100251875Speterapr_get_home_directory       apr_uid_homepath_get
101251875Speterapr_get_userid               apr_uid_get
102251875Speterapr_current_userid           apr_uid_current
103251875Speterapr_compare_users            apr_uid_compare
104251875Speterapr_get_username             apr_uid_name_get
105251875Speterapr_compare_users            apr_uid_compare
106251875Speter
107