My other free software | My homepage | Donate
This is a part of C++ Virtual Filesystems package.
This is ftpfs - FTP accessed as normal file system. This project is the base for the GNU/Linux FTP filesystem. It also contains an advanced FTP client C++ library.
Note, with some Linux kernels (2.6.7) FTP downloading with this FTP client is very slow (most probably it was a Linux kernel bug.)
There was a working implementation of ftpfs in the version 0.1.x of my ftpfs package. It requires LUFS. (Now LUFS is considered supersedeed with FUSE.)
This FTP implementation works in practice, but I advise to not rely on it for reliable file transfer. (Especially error codes returned by functions are not properly debugged). Also it probably may cause Linux freeze/panic on unmounting because of a possible LUFS bug. So remount your filesystems readonly before unmounting this ftpfs to be sure of no data lost.
This implementation of ftpfs is based on ftpfs distributed with LUFS 0.9.7. This ftpfs is a replacement of the ftpfs from LUFS 0.9.7. Almost all changes (as of FTPFSv3 0.1.x) concern only that C sockets are replaced with C++ TCP interface (see below).
See LUFS 0.9.7 documentation about how to use ftpfs.
The current development version 0.3.x of ftpfs is a part of C++ Virtual Filesystems package.
The release 0.3.x contains no functional FTP filesystem but it contains functional (however not yet tested) C++ FTP library and C++ code useful for development of other virtual filesystems.
This ftpfs code is also intended to be the base for FTP fs in the future versions of GNU/Linux in general.
The reason why I have rewritten ftpfs to use C++ TCP classes instead of simple C functions is that ftpfs distributed with LUFS 0.9.7 has no proper support for TCP timeouts. Additionally these had no support for such things as proxies, IPv6, etc. These missing features demand to rewrite ftpfs to be based on an advanced C++ class library.
For TCP networking in FTPFSv3 I have written a simple C++ wrapper around CommonC++ library. Note that this wrapper can be easily ported to use other C++ TCP libraries instead of CommonC++ (e.g. skstream++). This should be a configure option.
This C++ TCP wrapper may be useful for other network filesystems and TCP programming as well.
libcurl for FTP. My ftpfs should replace that one.LD_PRELOAD filesystem emulation hack, which needs no kernel
support.