summaryrefslogtreecommitdiffstats
path: root/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2011-03-23 11:14:27 +0100
committerGravatar Tom Willemsen2011-03-23 11:14:27 +0100
commit0d342f0aee3f2f800e486c0051dabe718a7b2841 (patch)
tree1f55afabb8f4876dbe564f7ed5d8e573ddc78df3 /emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm
parentd4510153b17625a3dd2f1852cc6392fc26efecf6 (diff)
downloaddotfiles-0d342f0aee3f2f800e486c0051dabe718a7b2841.tar.gz
dotfiles-0d342f0aee3f2f800e486c0051dabe718a7b2841.zip
I don't like nxhtml
Diffstat (limited to 'emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm')
-rw-r--r--emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm207
1 files changed, 0 insertions, 207 deletions
diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm b/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm
deleted file mode 100644
index e95b8d5..0000000
--- a/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm
+++ /dev/null
@@ -1,207 +0,0 @@
-# Copyright 2006 Lennart Borgman, http://OurComments.org/. All rights
-# reserved.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# 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 for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; see the file COPYING. If not, write to the
-# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-# Boston, MA 02110-1301, USA.
-
-package PathSubs;
-
-#####################################################
-### This package contains general path handling
-### routines and some win32 specific dito.
-### The latter should ev be moved to a new module!
-#####################################################
-use strict;
-
-use File::Spec;
-
-### Absolute path names
-
-sub is_abs_path ($) {
- my $path = shift;
- return 0 if $path eq "";
- return 1 if File::Spec->file_name_is_absolute($path);
- #return 1 if substr($path, 1, 1) eq ":"; # MSWin32
- #return 1 if substr($path, 0, 1) eq "/";
- return 1 if $path =~ /^https?:/i;
- return 1 if $path =~ /^file:/i;
- return 1 if $path =~ /^javascript:/i;
- return 1 if $path =~ /^mailto:/i;
-}
-sub is_abs_netpath($) {
- my $path = shift;
- return 1 if $path =~ /^https?:/i;
- # New
- return 1 if $path =~ /^ftp:/i;
- return 1 if $path =~ /^mailto:/i;
-}
-
-
-sub uniq_file($) {
- my $fname = shift;
- $fname =~ s!^\s+|\s+$!!g;
- return "" if ($fname eq "");
- $fname = File::Spec->rel2abs($fname);
- if (!File::Spec->file_name_is_absolute($fname)) {
- die "File name is not absolute: $fname";
- }
- #print STDERR "uniq_file($fname)\n";
- $fname =~ tr!\\!/!;
- if (-e $fname) {
- #print STDERR "exists $fname\n";
- ### There is an error in 522, compensate for this!
- #die substr($fname, -1);
- if (substr($fname, -1) eq "/") { chop $fname; }
- #print STDERR "exists $fname\n";
- ### Translate ..
- if (substr($fname, 1, 1) eq ":") {
- my $ffname = Win32::GetFullPathName($fname);
- ### Get case
- my $lfname = Win32::GetLongPathName($ffname);
- #print STDERR "lexists $lfname\n";
- $fname = $lfname if ($lfname ne "");
- }
- } else {
- #print STDERR "NOT exists $fname\n";
- if (substr($fname, -1) eq "/") { chop $fname; }
- my $head = "";
- if (substr($fname, 0, 2) eq "//") {
- $head = "//";
- $fname = substr($fname, 2);
- }
- my @fname = split("/", $fname);
- my $tail = pop @fname;
- $fname = uniq_dir($head . join("/", @fname)) . $tail;
- }
- if (substr($fname, 1, 1) eq ":") {
- $fname = uc(substr($fname, 0, 1)) . substr($fname, 1);
- #print STDERR "fname $fname\n";
- }
- $fname =~ tr!\\!/!;
- #print STDERR "fname ($fname)\n";
- return $fname;
-}
-sub uniq_dir($) {
- my $dir = shift;
- my $uq_dir = uniq_file($dir);
- if (substr($uq_dir, -1) ne "/") { $uq_dir .= "/"; }
- return $uq_dir;
-}
-
-
-
-### Relative paths
-sub _get_link_root($) {
- my $lnk = shift;
- if ($lnk =~ m!^(/|ftp://[^/]*|https?://[^/]*|[a-z]:/)!i) {
- return $1;
- } else {
- return "";
- }
-}
-
-sub resolve_dotdot($) {
- my $orig_url = shift;
- my $root = _get_link_root($orig_url);
- return $orig_url if length($root) == length($orig_url);
- my $url = substr($orig_url, length($root));
- if (substr($root, -1) eq "/") {
- chop $root;
- $url = "/$url";
- }
- #die "$root\n$url";
- my $iPosSearch = 2;
- #print "url=$url\n";
- while ((my $iPos = index($url, "/../", $iPosSearch)) > -1) {
- my $sLeft = substr($url, 0, $iPos);
- if (substr($sLeft, -2) eq "..") {
- $iPosSearch += 3;
- next;
- }
- my $sRight = substr($url, $iPos+3);
- #print "url=$url\n";
- #print "iPos=$iPos\n";
- #print "sLeft=$sLeft\n";
- $sLeft =~ s!/[^/]*$!!;
- #print "sLeft=$sLeft\n";
- #print "sRight=$sRight\n";
- $url = $sLeft . $sRight;
- #print "\t***url=$url\n";
- #print "url=$url\n";
- }
- if (index($url, "../") > -1) {
- return $orig_url;
- }
- return $root . $url;
-}
-
-sub mk_relative_link($$;$) {
- my $from = shift;
- my $to = shift;
- my $norm = shift;
- if ($norm) {
- $from = uniq_file($from);
- $to = uniq_file($to);
- }
- if (-e $from) {
- $from = uniq_file($from);
- } else {
- $from = resolve_dotdot($from);
- }
- if (-e $to) {
- $to = uniq_file($to);
- } else {
- $to = resolve_dotdot($to);
- }
- my $root_from = _get_link_root($from);
- my $root_to = _get_link_root($to );
- if ($root_from ne $root_to) {
- return $to;
- }
- my @from = split "/", $from;
- my @to = split "/", $to;
- while (@to) {
- last if ($to[0] ne $from[0]);
- shift @to;
- shift @from;
- }
- if (@to == 1 && @from == 1) {
- if (length($to[0]) > length($from[0])) {
- if (substr($to[0], 0, length($from[0])+1) eq ($from[0] . "#")) {
- return substr($to[0], length($from[0]));
- }
- }
- }
- my $rl;
- for (1..$#from) { $rl .= "../"; }
- $rl .= join("/", @to);
-
- return $rl;
-}
-
-
-
-sub mk_absolute_link($$) {
- my $from = shift;
- my $rel_to = shift;
- my $abs = $from;
- $abs =~ s![^/]*$!!;
- $abs .= $rel_to;
- if (!is_abs_netpath($abs)) { $abs = uniq_file($abs); }
- $abs;
-}
-
-
-1;