109 lines
2.4 KiB
Plaintext
109 lines
2.4 KiB
Plaintext
|
#!/usr/bin/perl
|
||
|
|
||
|
# RPM and it's source code are covered under two separate licenses.
|
||
|
|
||
|
# The entire code base may be distributed under the terms of the GNU
|
||
|
# General Public License (GPL), which appears immediately below.
|
||
|
# Alternatively, all of the source code in the lib subdirectory of the
|
||
|
# RPM source code distribution as well as any code derived from that
|
||
|
# code may instead be distributed under the GNU Library General Public
|
||
|
# License (LGPL), at the choice of the distributor. The complete text
|
||
|
# of the LGPL appears at the bottom of this file.
|
||
|
|
||
|
# This alternatively is allowed to enable applications to be linked
|
||
|
# against the RPM library (commonly called librpm) without forcing
|
||
|
# such applications to be distributed under the GPL.
|
||
|
|
||
|
# Any questions regarding the licensing of RPM should be addressed to
|
||
|
# marc@redhat.com and ewt@redhat.com.
|
||
|
|
||
|
|
||
|
# sql.req - a simple script to print the uses of sql functions.
|
||
|
|
||
|
|
||
|
# by Ken Estes Mail.com kestes@staff.mail.com
|
||
|
|
||
|
if ("@ARGV") {
|
||
|
foreach (@ARGV) {
|
||
|
process_file($_);
|
||
|
}
|
||
|
} else {
|
||
|
|
||
|
# notice we are passed a list of filenames NOT as common in unix the
|
||
|
# contents of the file.
|
||
|
|
||
|
foreach (<>) {
|
||
|
process_file($_);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
foreach $module (sort keys %require) {
|
||
|
print "sql($module)\n";
|
||
|
}
|
||
|
|
||
|
exit 0;
|
||
|
|
||
|
|
||
|
|
||
|
sub process_file {
|
||
|
|
||
|
my ($filename) = @_;
|
||
|
chomp $filename;
|
||
|
|
||
|
open(FILE, "<$filename")||
|
||
|
die("$0: Could not open file: '$filename' : $!\n");
|
||
|
|
||
|
my ($package, $version) = ();
|
||
|
|
||
|
my (@file) = <FILE>;
|
||
|
|
||
|
my ($file) = "@file";
|
||
|
|
||
|
close(FILE)||
|
||
|
die("$0: Could not close file: '$file' : $!\n");
|
||
|
|
||
|
# skip the comments
|
||
|
|
||
|
# Suck the whole file in to make removing /* */ (multiple lines
|
||
|
# comments) comments easier
|
||
|
|
||
|
$file =~ s!/\*(.*?)\*/!!gs;
|
||
|
$file =~ s!^\s*--(.*?)\n!\n!gm;
|
||
|
|
||
|
@file = split(/\n/, $file);
|
||
|
|
||
|
foreach (@file) {
|
||
|
|
||
|
# remove strings
|
||
|
|
||
|
s!\'[^\']*\'!!g;
|
||
|
|
||
|
|
||
|
# we are interested in function names which have a dot in them and
|
||
|
# are followed by an open parenthesis
|
||
|
|
||
|
foreach ( m/([a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)\s*\(/ ) {
|
||
|
my $func = $_;
|
||
|
$func=lc($func);
|
||
|
$func =~ m/\.\./ &&
|
||
|
next;
|
||
|
$require{$func}=1;
|
||
|
}
|
||
|
|
||
|
# Each keyword can appear multiple times. Don't
|
||
|
# bother with datastructures to store these strings,
|
||
|
# if we need to print it print it now.
|
||
|
|
||
|
if ( m/^\s*\$RPM_Provides\s*:=\s*["'](.*)['"]/i) {
|
||
|
foreach $_ (spit(/\s+/, $1)) {
|
||
|
print "$_\n";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
return ;
|
||
|
}
|