/build/unix/abs2rel.pl

http://github.com/zpao/v8monkey · Perl · 67 lines · 21 code · 8 blank · 38 comment · 3 complexity · 3c7a82aad6da9bdca3638eeeeabc138f MD5 · raw file

  1. #!env perl
  2. # ***** BEGIN LICENSE BLOCK *****
  3. # Version: MPL 1.1/GPL 2.0/LGPL 2.1
  4. #
  5. # The contents of this file are subject to the Mozilla Public License Version
  6. # 1.1 (the "License"); you may not use this file except in compliance with
  7. # the License. You may obtain a copy of the License at
  8. # http://www.mozilla.org/MPL/
  9. #
  10. # Software distributed under the License is distributed on an "AS IS" basis,
  11. # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12. # for the specific language governing rights and limitations under the
  13. # License.
  14. #
  15. # The Original Code is mozilla.org Code.
  16. #
  17. # The Initial Developer of the Original Code is
  18. # Netscape Communications Corporation.
  19. # Portions created by the Initial Developer are Copyright (C) 2002
  20. # the Initial Developer. All Rights Reserved.
  21. #
  22. # Contributor(s):
  23. #
  24. # Alternatively, the contents of this file may be used under the terms of
  25. # either of the GNU General Public License Version 2 or later (the "GPL"),
  26. # or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27. # in which case the provisions of the GPL or the LGPL are applicable instead
  28. # of those above. If you wish to allow use of your version of this file only
  29. # under the terms of either the GPL or the LGPL, and not to allow others to
  30. # use your version of this file under the terms of the MPL, indicate your
  31. # decision by deleting the provisions above and replace them with the notice
  32. # and other provisions required by the GPL or the LGPL. If you do not delete
  33. # the provisions above, a recipient may use your version of this file under
  34. # the terms of any one of the MPL, the GPL or the LGPL.
  35. #
  36. # ***** END LICENSE BLOCK *****
  37. use File::Spec::Unix;
  38. use strict;
  39. print "Usage: $0 dest_path start_path\n" if ($#ARGV+1 != 2);
  40. my $finish = my_canonpath(shift);
  41. my $start = my_canonpath(shift);
  42. my $res = File::Spec::Unix->abs2rel($finish, $start);
  43. #print STDERR "abs2rel($finish,$start) = $res\n";
  44. print "$res\n";
  45. sub my_canonpath($) {
  46. my ($file) = @_;
  47. my (@inlist, @outlist, $dir);
  48. # Do what File::Spec::Unix->no_upwards should do
  49. my @inlist = split(/\//, File::Spec::Unix->canonpath($file));
  50. foreach $dir (@inlist) {
  51. if ($dir eq '..') {
  52. pop @outlist;
  53. } else {
  54. push @outlist, $dir;
  55. }
  56. }
  57. $file = join '/',@outlist;
  58. return $file;
  59. }