[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Libferris support in TRAMP

From: Michael Albinus
Subject: Re: Libferris support in TRAMP
Date: Mon, 01 Mar 2010 16:50:15 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.92 (gnu/linux)

Ben Martin <address@hidden> writes:

> Hi,

Hi Ben,

>   I'm the author of the libferris virtual filesystem [1]. I've been
> meaning to add libferris support to TRAMP for many years, unfortunately
> it has been keeping many items on the TODO list company and didn't get
> any time until recently.
>   The attached patch is certainly not for applying, but is attached in
> the interest of raising comments.
>   I was originally poking around the lisp sources for the various things
> that TRAMP can use as a virtual filesystem when a fairly clean design
> hit me. Instead of bringing TRAMP to libferris, why not do the opposite?

Fair enough. What I'm curious about: does libferris also cooperate with
core Emacs? That is, is it possible to use libferris virtual files in
Emacs without Tramp? Otherwise, it might be necessary always to open an
ssh connection (or something like this), even for local files.

>   So I started digging into the main tramp.el file and tracing ssh
> connections to see what commands were executed in the background. I
> already have replacements for many of the normal coreutils programs:
> fcat, ferrisls, ferriscp, ferris-redirect etc, so the plan was to try to
> get TRAMP to just use the libferris implementation of these commands.

If we do this, we need a trigger whether to use libferris on the remote
side, or not. We would need to say /ssh:... for usage of core POSIX
commands, and /ssh+ferris:... for usage of libferris command
replacements. Even if we have a global trigger ("use always libferris
commands"), it sounds like adding complexity to Tramp.

>   The only two areas where this would not work cleanly is the base64
> inline transmission. For example, encoding
> (format "%s < %s" 
>   rem-enc 
>   (tramp-shell-quote-argument localname))
> doesn't work for libferris because the shell redirection doesn't know
> how to handle my filesystems. The work around is simple in this case,
> just cat the file to the base64 encoder:
> (format "fcat %s | %s" 
>   (tramp-shell-quote-argument localname)
>   rem-enc 
>   )

This would limit the libferris command set to Tramp's inline
encoding. That means, something like "scp" cannot be applied for remote
libferris files, right?

> As a small usage example, on the remote server;
> $ fcreate --create-type=db4 --rdn=isam.db .

Hmm. I would like to follow your examples. Unfortunately, I haven't
found a simple recipe, how to download and install libferris on my
machine (I'm running Ubuntu, btw). Going to as instructed on your
download page doesn't tell me too much. What do I need really for the
beginning? How to install?

Another idea would be to use your FUSE interface of libferris. That's
what Tramp already does for GVS offered files. They are "mounted" on the
fly, and Tramp only needs to show them with its own
syntax. "/ferris::/tmp/isam.db/subfile1" would be a local file, and
"/ferris:address@hidden:/tmp/isam.db/subfile1" would be a remote file
(accessed via ssh, for example - that needs to be configured). What do
you think about?

Best regards, Michael.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]