summaryrefslogtreecommitdiff
path: root/www/firefox3-devel/files/patch-config_preprocess.pl
blob: 0ae1465f6e3c10992ba2cdb28b5d17ae54fc074c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
--- config/preprocessor.pl.orig	Wed Jun 18 17:40:48 2003
+++ config/preprocessor.pl	Wed Jun 18 18:55:28 2003
@@ -71,15 +71,39 @@
 ########################################################################
 
 package main;
-use File::Spec 0.8;
+use File::Spec;
 use File::Spec::Unix; # on all platforms, because the #include syntax is unix-based
+use File::Basename;
+use Cwd;
+
+# This code is taken from File::Spec::Unix 0.8.
+sub rel2abs {
+    my ($path, $base) = @_;
+
+    if ( ! File::Spec->file_name_is_absolute( $path ) ) {
+	if ( !defined( $base ) || $base eq '' ) {
+	    $base = cwd() ;
+	}
+	elsif ( ! File::Spec->file_name_is_absolute( $base ) ) {
+	    $base = rel2abs( $base );
+	}
+	else {
+	    $base = File::Spec->canonpath( $base );
+	}
+
+	$path = File::Spec->catdir( $base, $path );
+    }
+
+    return File::Spec->canonpath( $path );
+}
+# End code from File::Spec::Unix
 
 sub include {
     my($stack, $filename) = @_;
     if ($filename ne '-') {
-        $filename = File::Spec->rel2abs($filename, $stack->{'variables'}->{'DIRECTORY'});
-        my($volume, $directory) = File::Spec->splitpath($filename);
-        local $stack->{'variables'}->{'DIRECTORY'} = File::Spec->catpath($volume, $directory, '');
+        $filename = rel2abs($filename, $stack->{'variables'}->{'DIRECTORY'});
+	my ($directory) = dirname($filename);
+        local $stack->{'variables'}->{'DIRECTORY'} = File::Spec->catdir($directory);
     }
     local $stack->{'variables'}->{'FILE'} = $filename;
     local $stack->{'variables'}->{'LINE'} = 0;
@@ -372,7 +396,7 @@
     my $stack = shift;
     return if $stack->disabled;
     die "argument expected\n" unless @_;
-    main::include($stack, File::Spec->catpath(File::Spec::Unix->splitpath(@_)));
+    main::include($stack, File::Spec->catfile(dirname(@_), basename(@_)));
 }
 
 sub filter {