diff options
author | mbr <mbr@FreeBSD.org> | 2002-09-10 03:33:25 +0800 |
---|---|---|
committer | mbr <mbr@FreeBSD.org> | 2002-09-10 03:33:25 +0800 |
commit | bd16c5e398263fb2470d2823c991cfdb50566c7d (patch) | |
tree | 30bbbefbbb7052897bfc4cbb3f15c3519c39ff23 /www/mod_frontpage | |
parent | 939561204d73afb0d928c94d1c1a1d48fbeea538 (diff) | |
download | freebsd-ports-gnome-bd16c5e398263fb2470d2823c991cfdb50566c7d.tar.gz freebsd-ports-gnome-bd16c5e398263fb2470d2823c991cfdb50566c7d.tar.zst freebsd-ports-gnome-bd16c5e398263fb2470d2823c991cfdb50566c7d.zip |
The fix suggested in the PR was bogus, we cannot use cut
to get UID/GID, this does not work as expected. Instead
do all inline in perl and also use a realpath function
from zenin@bawdycaste.org.
PR: 39686
Diffstat (limited to 'www/mod_frontpage')
-rw-r--r-- | www/mod_frontpage/files/patch-Makefile.PL | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/www/mod_frontpage/files/patch-Makefile.PL b/www/mod_frontpage/files/patch-Makefile.PL index 576ccc9e3172..04b9546a0c4a 100644 --- a/www/mod_frontpage/files/patch-Makefile.PL +++ b/www/mod_frontpage/files/patch-Makefile.PL @@ -1,11 +1,15 @@ --- Makefile.PL.orig Tue Mar 12 22:07:07 2002 -+++ Makefile.PL Thu May 16 12:21:00 2002 -@@ -9,14 +9,28 @@ ++++ Makefile.PL Mon Sep 9 21:28:36 2002 +@@ -9,14 +9,32 @@ # FP extensions 5.0 from Martin Blapp <mbr@freebsd.org> # -$flavor=`uname`; -if (-e "/etc/mandrake-release") {$flavor="Mandrake";} ++use Symbol; ++use POSIX qw(:errno_h); ++use Cwd; ++ +$prefix= $ENV{PREFIX}; +if (!$prefix) { + $prefix = "/usr/local/"; @@ -34,7 +38,31 @@ print "If you don't know, enter the word 'findit'. I will try to look\n"; print "for you... but it will take a few minutes.\n"; print "Your choice: "; -@@ -121,8 +135,8 @@ +@@ -109,20 +127,27 @@ + $errorlog="$serverroot/$errorlog"; + print "$errorlog\n"; + } +-print "DocumentRoot: $documentroot\n"; ++$documentroot =~ s/"$//; ++$documentroot =~ s/^"//; ++$documentroot = realpath($documentroot); ++print "DocumentRoot: ($documentroot)\n"; + +-$_=`ls -dln $documentroot|cut -c 17-30`; +-if (/^(\d*)(\s*)(\d*)/) { +- $uid=$1; $gid=$3; +- print "Content uid $uid, gid $gid\n"; ++($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime, ++$ctime,$blksize,$blocks) = stat $documentroot; ++ ++if ($dev != 0 && $ino != 0) { ++ print "Content uid $uid, gid $gid\n"; ++} else { ++ print "Could not get UID and GID of DocumentRoot\n"; ++ exit; + } + + # # Check the user for sanity # Should be 48 for Mandrake, 80 for BSD @@ -45,7 +73,7 @@ } else { $defaultid=99; } if ($uid < $defaultid) { -@@ -158,11 +172,12 @@ +@@ -158,11 +183,40 @@ $_=~ s|\$\(fpexec_logexec\)|$errorlog|; $_=~ s|\$\(fpexec_userdir\)|$userdir|; $_=~ s|\$\(fpexec_docroot\)|$documentroot|; @@ -61,3 +89,31 @@ print MAKF $_; } ++sub realpath($) { ++ my $dir = shift; ++ unless (-d $dir) { ++ if (-e $dir) { ++ $! = ENOTDIR; ++ } else { ++ $! = ENOENT; ++ } ++ return; ++ } ++ my $realpath; ++ my $pipe = gensym(); ++ my $pid = open($pipe, "-|"); ++ defined $pid or return; ++ if ($pid) { ++ $realpath = <$pipe>; ++ if (length $realpath) { ++ return $realpath; ++ } else { ++ $! = EINVAL; ++ return; ++ } ++ } else { ++ chdir $dir or die $!; ++ print cwd(); ++ exit; ++ } ++} |