~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/tools/winapi/config.pm

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 #
  2 # Copyright 1999, 2000, 2001 Patrik Stridvall
  3 #
  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.
  8 #
  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.
 13 #
 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 17 #
 18 
 19 package config;
 20 
 21 use strict;
 22 
 23 use setup qw($current_dir $wine_dir $winapi_dir);
 24 
 25 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
 26 require Exporter;
 27 
 28 @ISA = qw(Exporter);
 29 @EXPORT = qw(
 30     file_absolutize file_normalize
 31     file_directory
 32     file_type files_filter
 33     file_skip files_skip
 34     get_c_files
 35     get_h_files
 36     get_makefile_in_files
 37     get_spec_files
 38 );
 39 @EXPORT_OK = qw(
 40     $current_dir $wine_dir $winapi_dir
 41 );
 42 
 43 use vars qw($current_dir $wine_dir $winapi_dir);
 44 
 45 use output qw($output);
 46 
 47 use File::Find;
 48 
 49 sub file_normalize($) {
 50     local $_ = shift;
 51 
 52     foreach my $dir (split(m%/%, $current_dir)) {
 53         if(s%^(\.\./)*\.\./$dir/%%) {
 54             if(defined($1)) {
 55                 $_ = "$1$_";
 56             }
 57         }
 58     }
 59 
 60     while(m%^(.*?)([^/\.]+)/\.\./(.*?)$%) {
 61         if($2 ne "." && $2 ne "..") {
 62             $_ = "$1$3";
 63         }
 64     }
 65 
 66     return $_;
 67 }
 68 
 69 sub file_absolutize($) {
 70     local $_ = shift;
 71 
 72     $_ = file_normalize($_);
 73     if(!s%^$wine_dir/%%) {
 74         $_ = "$current_dir/$_";
 75     }
 76     s%^\./%%;
 77 
 78     return $_;
 79 }
 80 
 81 sub file_type($) {
 82     local $_ = shift;
 83 
 84     $_ = file_absolutize($_);
 85 
 86     m%^(?:server|tests|tools)/% && return "";
 87     m%^(?:programs)/% && return "wineapp";
 88     m%^(?:libs)/% && return "library";
 89 
 90     return "winelib";
 91 }
 92 
 93 sub files_filter($@) {
 94     my $type = shift;
 95 
 96     my @files;
 97     foreach my $file (@_) {
 98         if(file_type($file) eq $type) {
 99             push @files, $file;
100         }
101     }
102 
103     return @files;
104 }
105 
106 sub file_skip($) {
107     local $_ = shift;
108 
109     $_ = file_absolutize($_);
110 
111     m%^(?:dlls|include)/% || return 1;
112     m%^dlls/wineps\.drv/data/% && return 1;
113     return 0;
114 }
115 
116 sub files_skip(@) {
117     my @files;
118     foreach my $file (@_) {
119         if(!file_skip($file)) {
120             push @files, $file;
121         }
122     }
123 
124     return @files;
125 }
126 
127 sub file_directory($) {
128     local $_ = shift;
129 
130     s%/?[^/]*$%%;
131     if(!$_) {
132         $_ = ".";
133     }
134 
135     s%^(?:\./)?(.*?)(?:/\.)?%$1%;
136 
137     return $_;
138 }
139 
140 sub _get_files($$;$) {
141     my $pattern = shift;
142     my $type = shift;
143     my $dir = shift;
144 
145     $output->progress("$wine_dir: searching for /$pattern/");
146 
147     if(!defined($dir)) {
148         $dir = $wine_dir;
149     }
150 
151     my @files;
152 
153     my @dirs = ($dir);
154     while(defined(my $dir = shift @dirs)) {
155         opendir(DIR, $dir) || die "Can't open directory $dir: $!\n";
156         my @entries= readdir(DIR);
157         closedir(DIR);
158         foreach (@entries) {
159             my $basefile = $_;
160             $_ = "$dir/$_";
161             if(/\.\.?$/) {
162                 # Nothing
163             } elsif(-d $_) {
164                 push @dirs, $_;
165             } elsif($basefile =~ /$pattern/ && (!defined($type) || file_type($_) eq $type)) {
166                 s%^$wine_dir/%%;
167                 push @files, $_;
168             }
169         }
170     }
171 
172     return @files;
173 }
174 
175 sub get_c_files($;$) { return _get_files('\.c$', $_[0], $_[1]); }
176 sub get_h_files($;$) { return _get_files('\.h$', $_[0], $_[1]); }
177 sub get_spec_files($;$) { return _get_files('\.spec$', $_[0], $_[1]); }
178 sub get_makefile_in_files($;$) { return _get_files('^Makefile.in$', $_[0], $_[1]); }
179 
180 1;

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.