Variable: tramp-perl-file-truename

tramp-perl-file-truename is a variable defined in tramp-sh.el.gz.

Value

"%p -e '\nuse File::Spec;\nuse Cwd \"realpath\";\n\nsub myrealpath {\n    my ($file) = @_;\n    return realpath($file) if (-e $file || -l $file);\n}\n\nsub recursive {\n    my ($volume, @dirs) = @_;\n    my $real = myrealpath(File::Spec->catpath(\n                   $volume, File::Spec->catdir(@dirs), \"\"));\n    if ($real) {\n        my ($vol, $dir) = File::Spec->splitpath($real, 1);\n        return ($vol, File::Spec->splitdir($dir));\n    }\n    else {\n        my $last = pop(@dirs);\n        ($volume, @dirs) = recursive($volume, @dirs);\n        push(@dirs, $last);\n        return ($volume, @dirs);\n    }\n}\n\n$result = myrealpath($ARGV[0]);\nif (!$result) {\n    my ($vol, $dir) = File::Spec->splitpath($ARGV[0], 1);\n    ($vol, @dirs) = recursive($vol, File::Spec->splitdir($dir));\n\n    $result = File::Spec->catpath($vol, File::Spec->catdir(@dirs), \"\");\n}\n\nif (-l $ARGV[0]) {\n    print \"t\\n\";\n    }\nelse {\n    print \"nil\\n\";\n    }\n\n$result =~ s/\"/\\\\\"/g;\nprint \"\\\"$result\\\"\\n\";\n' \"$1\" %n"

Documentation

Perl script to produce output suitable for use with file-truename on the remote file system. Format specifiers are replaced by tramp-expand-script, percent characters need to be doubled.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp-sh.el.gz
(defconst tramp-perl-file-truename
  "%p -e '
use File::Spec;
use Cwd \"realpath\";

sub myrealpath {
    my ($file) = @_;
    return realpath($file) if (-e $file || -l $file);
}

sub recursive {
    my ($volume, @dirs) = @_;
    my $real = myrealpath(File::Spec->catpath(
                   $volume, File::Spec->catdir(@dirs), \"\"));
    if ($real) {
        my ($vol, $dir) = File::Spec->splitpath($real, 1);
        return ($vol, File::Spec->splitdir($dir));
    }
    else {
        my $last = pop(@dirs);
        ($volume, @dirs) = recursive($volume, @dirs);
        push(@dirs, $last);
        return ($volume, @dirs);
    }
}

$result = myrealpath($ARGV[0]);
if (!$result) {
    my ($vol, $dir) = File::Spec->splitpath($ARGV[0], 1);
    ($vol, @dirs) = recursive($vol, File::Spec->splitdir($dir));

    $result = File::Spec->catpath($vol, File::Spec->catdir(@dirs), \"\");
}

if (-l $ARGV[0]) {
    print \"t\\n\";
    }
else {
    print \"nil\\n\";
    }

$result =~ s/\"/\\\\\"/g;
print \"\\\"$result\\\"\\n\";
' \"$1\" %n"
  "Perl script to produce output suitable for use with `file-truename'
on the remote file system.
Format specifiers are replaced by `tramp-expand-script', percent
characters need to be doubled.")