tramp-devel
[Top][All Lists]
Advanced

[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: Tue, 02 Mar 2010 22:50:33 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.93 (gnu/linux)

Ben Martin <address@hidden> writes:

> Well, I do have FUSE integration to allow direct interaction. I find
> fuse to be a bit heavy handed for some things though, for example, using
> fcat I can peek into an XML file directly without any explicit "mount"
> command.

OK, let it be an option for later.

> I now also have completions working with libferris thanks to a ferrisls
> -F derivative which only classifies directories
> (--classify-directories).

Good.

> I suspect we are on the same page here with the ssh+ferris method. I was
> thinking as far as making the patch less intrusive goes, adding to
> tramp-methods this ssh+ferris object and including things like for
> example,
> tramp-posix-ls-command
> tramp-posix-cp-command 
> where a nil would perhaps induce "ls" and "cp" to be used. Though for
> this part just telling tramp to use a specific shell init file could
> allow the shell itself to alias ls=ferrisls etc. The knowledge of things
> like the added --classify-directories switch to ferrisls is harder to
> sweep away, along with the redirection changes.

tramp.el is already a monster; it's on my wishlist to cut it into
pieces. So we shall put everything into a new tramp-ferris.el. Look at
tramp-smb.el to get an idea how it could be done.

In tramp-methods, we shall add a new "ferris" method, derived from
"ssh". We could add some new entries like `tramp-ls-program', which
would be "fls" in the ferris case. Something like this:

;; Define libferris method ...
(defcustom tramp-ferris-method "ferris"
  "*Method to connect via libferris."
  :group 'tramp
  :type 'string)

;; ... and add it to the method list.
(add-to-list
 'tramp-methods
 `(,tramp-ferris-method
   (tramp-login-program        "ssh")
   (tramp-login-args           (("%h") ("-l" "%u") ("-p" "%p") ("-q")
                                ("-e" "none")))
   (tramp-remote-sh            "/bin/sh")
   (tramp-ls-program           "fls")
   (tramp-password-end-of-line nil)
   (tramp-default-port         22)))

Then you could, for example, use the entry `tramp-ls-program' for
determining, which binary to call. If this entry does not exists, you
would fall back to the default values already used. The code in
`tramp-get-ls-command' would look then:


(catch 'ls-found
  (dolist
      (cmd
       (if (tramp-get-method-parameter method 'tramp-ls-program)
           (list (tramp-get-method-parameter method 'tramp-ls-program))
         '("ls" "gnuls" "gls")))
...

By this, the code in tramp.el would be changed only slightly, and
without libferris dependencies.

>> 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
>> http://sourceforge.net/projects/witme/files/ as instructed on your
>> download page doesn't tell me too much. What do I need really for the
>> beginning? How to install?
>> 
>
> http://www.libferris.com/buildorder
> Although the graph looks a bit scarey, much of the stuff should already
> be available packaged. You will probably need to build and install
> libferrisloki, libferrisstreams, stldb4, fampp2, libferris,
> ferriscreate, in that order.

OK, I'll try it next days. Limited by the usual lack of time :-(

Btw, Tramp is coyrighted by the FSF. This would require that you sign
their papers, if you contribute to Tramp. Would it be a problem for you?

Best regards, Michael.




reply via email to

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