2 # Copyright 1999, 2000, 2001 Patrik Stridvall
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 use setup qw($current_dir $wine_dir $winapi_dir $winapi_check_dir);
25 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
30 &file_absolutize &file_normalize
32 &file_type &files_filter
33 &file_skip &files_skip
36 &get_makefile_in_files
40 $current_dir $wine_dir $winapi_dir $winapi_check_dir
43 use vars qw($current_dir $wine_dir $winapi_dir $winapi_check_dir);
45 use output qw($output);
52 $_ = file_absolutize($_);
54 m%^(?:libtest|rc|server|tests|tools)/% && return "";
55 m%^(?:programs|debugger|miscemu)/% && return "wineapp";
56 m%^(?:library|tsx11|unicode)/% && return "library";
57 m%^windows/x11drv/wineclipsrv\.c$% && return "application";
66 foreach my $file (@_) {
67 if(file_type($file) eq $type) {
78 $_ = file_absolutize($_);
80 m%^(?:libtest|programs|rc|server|tests|tools)/% && return 1;
81 m%^(?:debugger|miscemu|tsx11|server|unicode)/% && return 1;
82 m%^dlls/wineps/data/% && return 1;
83 m%^windows/x11drv/wineclipsrv\.c$% && return 1;
84 m%^dlls/winmm/wineoss/midipatch\.c$% && return 1;
85 m%(?:glue|spec)\.c$% && return 1;
92 foreach my $file (@_) {
93 if(!file_skip($file)) {
101 sub file_absolutize {
104 $_ = file_normalize($_);
105 if(!s%^$wine_dir/%%) {
106 $_ = "$current_dir/$_";
116 foreach my $dir (split(m%/%, $current_dir)) {
117 if(s%^(\.\./)*\.\./$dir/%%) {
124 while(m%^(.*?)([^/\.]+)/\.\./(.*?)$%) {
125 if($2 ne "." && $2 ne "..") {
141 s%^(?:\./)?(.*?)(?:/\.)?%$1%;
151 $output->progress("$wine_dir: searching for /$pattern/");
160 while(defined(my $dir = shift @dirs)) {
162 my @entries= readdir(DIR);
171 } elsif($basefile =~ /$pattern/ && (!defined($type) || file_type($_) eq $type)) {
181 sub get_c_files { return _get_files('\.c$', @_); }
182 sub get_h_files { return _get_files('\.h$', @_); }
183 sub get_spec_files { return _get_files('\.spec$', @_); }
184 sub get_makefile_in_files { return _get_files('^Makefile.in$', @_); }