Server IP : 104.21.38.3 / Your IP : 108.162.226.159 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/server/mysql/src/scripts/ |
Upload File : |
#! /usr/bin/perl # # Copyright (c) 2017, 2023, Oracle and/or its affiliates. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License, version 2.0, # as published by the Free Software Foundation. # # This program is also distributed with certain software (including # but not limited to OpenSSL) that is licensed under separate terms, # as designated in a particular file or component or in included license # documentation. The authors of MySQL hereby grant you an additional # permission to link the program and your derivative works with the # separately licensed software that they have included with MySQL. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License, version 2.0, for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA # # # Take the given GCC command line and run it with all absolute paths # changed to relative paths. This makes sure that no part of the build # path leaks into the .o files, which it normally would through the # contents of __FILE__. (Debug information is also affected, but that # is already fixed through -fdebug-prefix-map=.) # # A more elegant solution would be -ffile-prefix-map=, but this is # not currently supported in GCC; see # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70268. # use strict; use warnings; use Cwd; my $cwd = getcwd(); my @newarg = (); for my $i (0..$#ARGV) { my $arg = $ARGV[$i]; if ($arg =~ /-I(.+)$/) { $arg = '-I' . relativize($1, $cwd); } elsif ($arg =~ /^\//) { $arg = relativize($arg, $cwd); } push @newarg, $arg; } exec(@newarg); # /a/b/c/foo from /a/b/d = ../c/foo sub relativize { my ($dir1, $dir2) = @_; if ($dir1 !~ /^\//) { # Not an absolute path. return $dir1; } if (! -e $dir1) { # print STDERR "Unknown file/directory $dir1.\n"; return $dir1; } # Resolve symlinks and such, because getcwd() does. $dir1 = Cwd::abs_path($dir1); if ($dir1 =~ /^\/(lib|tmp|usr)/) { # Not related to our source code. return $dir1; } if ($dir1 eq $dir2) { return "."; } my (@dir1_components) = split /\//, $dir1; my (@dir2_components) = split /\//, $dir2; # Remove common leading components. while (scalar @dir1_components > 0 && scalar @dir2_components > 0 && $dir1_components[0] eq $dir2_components[0]) { shift @dir1_components; shift @dir2_components; } my $ret = ""; for my $i (0..$#dir2_components) { $ret .= '../'; } $ret .= join('/', @dir1_components); # print STDERR "[$dir1] from [$dir2] => [$ret]\n"; return $ret; }