[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: |
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.