mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 04:22:34 +03:00
VFS structure changes:
* moved from lib/vfs/mc-vfs to lib/vfs; * split by directories for VFS-plugins and moved to src/vfs; * lib/vfs/vfs-impl.h was merged into lib/vfs/vfs.h. Signed-off-by: Andrew Borodin <aborodin@vmail.ru> Signed-off-by: Slava Zanko <slavazanko@gmail.com>
This commit is contained in:
parent
d512649b33
commit
6c5f5bf768
@ -29,7 +29,7 @@ fi
|
||||
cd "$srcdir"
|
||||
|
||||
# The autoconf cache (version after 2.52) is not reliable yet.
|
||||
rm -rf autom4te.cache lib/vfs/mc-vfs/samba/autom4te.cache
|
||||
rm -rf autom4te.cache src/vfs/smbfs/helpers/autom4te.cache
|
||||
|
||||
if test ! -d config; then
|
||||
mkdir config
|
||||
@ -72,16 +72,16 @@ $AUTOMAKE -a
|
||||
test -f Makefile.in || \
|
||||
{ echo "automake failed to generate Makefile.in" >&2; exit 1; }
|
||||
|
||||
cd lib/vfs/mc-vfs/samba
|
||||
cd src/vfs/smbfs/helpers
|
||||
date -u >include/stamp-h.in
|
||||
|
||||
$AUTOHEADER
|
||||
test -f include/config.h.in || \
|
||||
{ echo "autoheader failed to generate lib/vfs/mc-vfs/samba/include/config.h.in" >&2; exit 1; }
|
||||
{ echo "autoheader failed to generate src/vfs/smbfs/helpers/include/config.h.in" >&2; exit 1; }
|
||||
|
||||
$AUTOCONF
|
||||
test -f configure || \
|
||||
{ echo "autoconf failed to generate lib/vfs/mc-vfs/samba/configure" >&2; exit 1; }
|
||||
{ echo "autoconf failed to generate src/vfs/smbfs/helpers/configure" >&2; exit 1; }
|
||||
) || exit 1
|
||||
|
||||
$srcdir/maint/version.sh "$srcdir"
|
||||
|
77
configure.ac
77
configure.ac
@ -542,6 +542,53 @@ src/viewer/Makefile
|
||||
src/diffviewer/Makefile
|
||||
src/filemanager/Makefile
|
||||
|
||||
src/vfs/Makefile
|
||||
|
||||
src/vfs/cpio/Makefile
|
||||
|
||||
src/vfs/extfs/Makefile
|
||||
src/vfs/extfs/helpers/Makefile
|
||||
src/vfs/extfs/helpers/a+
|
||||
src/vfs/extfs/helpers/apt+
|
||||
src/vfs/extfs/helpers/audio
|
||||
src/vfs/extfs/helpers/deb
|
||||
src/vfs/extfs/helpers/deba
|
||||
src/vfs/extfs/helpers/debd
|
||||
src/vfs/extfs/helpers/dpkg+
|
||||
src/vfs/extfs/helpers/iso9660
|
||||
src/vfs/extfs/helpers/hp48+
|
||||
src/vfs/extfs/helpers/lslR
|
||||
src/vfs/extfs/helpers/mailfs
|
||||
src/vfs/extfs/helpers/patchfs
|
||||
src/vfs/extfs/helpers/rpms+
|
||||
src/vfs/extfs/helpers/s3+
|
||||
src/vfs/extfs/helpers/uace
|
||||
src/vfs/extfs/helpers/ualz
|
||||
src/vfs/extfs/helpers/uar
|
||||
src/vfs/extfs/helpers/uarc
|
||||
src/vfs/extfs/helpers/uarj
|
||||
src/vfs/extfs/helpers/uc1541
|
||||
src/vfs/extfs/helpers/uha
|
||||
src/vfs/extfs/helpers/ulha
|
||||
src/vfs/extfs/helpers/urar
|
||||
src/vfs/extfs/helpers/uzip
|
||||
src/vfs/extfs/helpers/uzoo
|
||||
|
||||
src/vfs/fish/Makefile
|
||||
src/vfs/fish/helpers/Makefile
|
||||
|
||||
src/vfs/ftpfs/Makefile
|
||||
|
||||
src/vfs/local/Makefile
|
||||
|
||||
src/vfs/sfs/Makefile
|
||||
|
||||
src/vfs/smbfs/Makefile
|
||||
|
||||
src/vfs/tar/Makefile
|
||||
|
||||
src/vfs/undelfs/Makefile
|
||||
|
||||
lib/Makefile
|
||||
lib/event/Makefile
|
||||
lib/filehighlight/Makefile
|
||||
@ -550,35 +597,9 @@ lib/search/Makefile
|
||||
lib/skin/Makefile
|
||||
lib/strutil/Makefile
|
||||
lib/tty/Makefile
|
||||
|
||||
lib/vfs/Makefile
|
||||
lib/vfs/mc-vfs/Makefile
|
||||
lib/vfs/mc-vfs/extfs/Makefile
|
||||
lib/vfs/mc-vfs/extfs/a+
|
||||
lib/vfs/mc-vfs/extfs/apt+
|
||||
lib/vfs/mc-vfs/extfs/audio
|
||||
lib/vfs/mc-vfs/extfs/deb
|
||||
lib/vfs/mc-vfs/extfs/deba
|
||||
lib/vfs/mc-vfs/extfs/debd
|
||||
lib/vfs/mc-vfs/extfs/dpkg+
|
||||
lib/vfs/mc-vfs/extfs/iso9660
|
||||
lib/vfs/mc-vfs/extfs/hp48+
|
||||
lib/vfs/mc-vfs/extfs/lslR
|
||||
lib/vfs/mc-vfs/extfs/mailfs
|
||||
lib/vfs/mc-vfs/extfs/patchfs
|
||||
lib/vfs/mc-vfs/extfs/rpms+
|
||||
lib/vfs/mc-vfs/extfs/s3+
|
||||
lib/vfs/mc-vfs/extfs/uace
|
||||
lib/vfs/mc-vfs/extfs/ualz
|
||||
lib/vfs/mc-vfs/extfs/uar
|
||||
lib/vfs/mc-vfs/extfs/uarc
|
||||
lib/vfs/mc-vfs/extfs/uarj
|
||||
lib/vfs/mc-vfs/extfs/uc1541
|
||||
lib/vfs/mc-vfs/extfs/uha
|
||||
lib/vfs/mc-vfs/extfs/ulha
|
||||
lib/vfs/mc-vfs/extfs/urar
|
||||
lib/vfs/mc-vfs/extfs/uzip
|
||||
lib/vfs/mc-vfs/extfs/uzoo
|
||||
lib/vfs/mc-vfs/fish/Makefile
|
||||
|
||||
lib/widget/Makefile
|
||||
|
||||
misc/syntax/Makefile
|
||||
|
@ -48,5 +48,5 @@ libmc_la_LIBADD = \
|
||||
strutil/libmcstrutil.la \
|
||||
skin/libmcskin.la \
|
||||
tty/libmctty.la \
|
||||
vfs/mc-vfs/libvfs-mc.la \
|
||||
vfs/libmcvfs.la \
|
||||
widget/libmcwidget.la
|
||||
|
@ -53,7 +53,7 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "lib/global.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/util.h" /* tilde_expand() */
|
||||
#include "lib/lock.h"
|
||||
#include "lib/widget.h" /* query_dialog() */
|
||||
|
@ -26,7 +26,7 @@
|
||||
#include <errno.h> /* extern int errno */
|
||||
|
||||
#include "lib/global.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h" /* mc_stat */
|
||||
#include "lib/vfs/vfs.h" /* mc_stat */
|
||||
#include "lib/util.h"
|
||||
#include "lib/mcconfig.h"
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include "lib/global.h"
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
|
||||
/*** global variables ****************************************************************************/
|
||||
|
||||
|
@ -40,7 +40,7 @@
|
||||
#include "lib/global.h"
|
||||
#include "lib/strutil.h" /* str_casecmp */
|
||||
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
|
||||
#include "tty.h"
|
||||
#include "tty-internal.h" /* mouse_enabled */
|
||||
|
@ -44,7 +44,7 @@
|
||||
#include "lib/tty/win.h" /* xterm_flag */
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
|
||||
|
@ -52,7 +52,7 @@
|
||||
#include <grp.h>
|
||||
|
||||
#include "lib/global.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h" /* VFS_ENCODING_PREFIX */
|
||||
#include "lib/vfs/vfs.h" /* VFS_ENCODING_PREFIX */
|
||||
#include "lib/strutil.h" /* str_move() */
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h" /* message() */
|
||||
|
@ -9,7 +9,7 @@ covered by the terms of the GNU GPL.
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@ -470,8 +470,8 @@ convey the exclusion of warranty; and each file should have at least the
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
License along with this library; if not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
@ -84,7 +84,7 @@ smbfs no yes no no
|
||||
undelfs no yes no yes
|
||||
|
||||
|
||||
"*" means that this property should change during further development.
|
||||
"*" means that this property should change during further development.
|
||||
Mapping from inode to entry prevents implementing hard links. It is
|
||||
permissible for directories, which cannot be hardlinked. Not loading
|
||||
the full tree speeds up access to large archives and conserves memory.
|
@ -1 +1,15 @@
|
||||
SUBDIRS = mc-vfs
|
||||
noinst_LTLIBRARIES = libmcvfs.la
|
||||
|
||||
AM_CFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
|
||||
libmcvfs_la_SOURCES = \
|
||||
vfs.c vfs.h \
|
||||
direntry.c xdirentry.h \
|
||||
utilvfs.c utilvfs.h \
|
||||
gc.c gc.h
|
||||
|
||||
if ENABLE_VFS_NET
|
||||
libmcvfs_la_SOURCES += netutil.c netutil.h
|
||||
endif
|
||||
|
||||
EXTRA_DIST = HACKING README
|
||||
|
@ -47,7 +47,7 @@
|
||||
|
||||
#include "src/filemanager/layout.h" /* print_vfs_message */
|
||||
|
||||
#include "vfs-impl.h"
|
||||
#include "vfs.h"
|
||||
#include "utilvfs.h"
|
||||
#include "xdirentry.h"
|
||||
#include "gc.h" /* vfs_rmstamp */
|
@ -47,7 +47,7 @@
|
||||
#include "src/filemanager/midnight.h" /* current_panel */
|
||||
#include "src/filemanager/layout.h" /* get_current_type(), get_other_type() */
|
||||
|
||||
#include "vfs-impl.h"
|
||||
#include "vfs.h"
|
||||
#include "utilvfs.h"
|
||||
|
||||
#include "gc.h"
|
@ -6,7 +6,7 @@
|
||||
#ifndef MC__VFS_GC_H
|
||||
#define MC__VFS_GC_H
|
||||
|
||||
#include "vfs-impl.h"
|
||||
#include "vfs.h"
|
||||
|
||||
/*** typedefs(not structures) and defined constants **********************************************/
|
||||
|
11
lib/vfs/mc-vfs/.gitignore
vendored
11
lib/vfs/mc-vfs/.gitignore
vendored
@ -1,11 +0,0 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
mcserv
|
||||
mcservx
|
||||
rar
|
||||
cpio
|
||||
zoo
|
||||
zip
|
||||
lha
|
||||
.deps
|
||||
*.sor
|
@ -1,152 +0,0 @@
|
||||
if ENABLE_VFS_SMB
|
||||
SAMBA_CFLAGS = -DCONFIGDIR=\""@smbconfigdir@"\"
|
||||
SAMBA_SUBDIRS = samba
|
||||
endif
|
||||
|
||||
DIST_SUBDIRS = extfs fish
|
||||
|
||||
SUBDIRS = $(SAMBA_SUBDIRS)
|
||||
if ENABLE_VFS_EXTFS
|
||||
SUBDIRS += extfs
|
||||
endif
|
||||
if ENABLE_VFS_FISH
|
||||
SUBDIRS += fish
|
||||
endif
|
||||
|
||||
AM_CFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir) $(SAMBA_CFLAGS)
|
||||
|
||||
AM_CPPFLAGS = -DLIBEXECDIR=\""$(libexecdir)/@PACKAGE@/"\"
|
||||
|
||||
BASICFILES = \
|
||||
vfs.c vfs.h vfs-impl.h \
|
||||
direntry.c xdirentry.h \
|
||||
utilvfs.c utilvfs.h \
|
||||
gc.c gc.h \
|
||||
local.c local.h
|
||||
|
||||
CPIOFILES = cpio.c
|
||||
TARFILES = tar.c
|
||||
SFSFILES = sfs.c
|
||||
EXTFSFILES = extfs.c
|
||||
UNDELFILES = undelfs.c
|
||||
|
||||
NETFILES = netutil.c netutil.h
|
||||
|
||||
FTPFILES = ftpfs.c ftpfs.h
|
||||
FISHFILES = fish.c fish.h fishdef.h
|
||||
SMBFILES = smbfs.c smbfs.h
|
||||
|
||||
libvfs_mc_la_SOURCES = $(BASICFILES)
|
||||
if ENABLE_VFS_CPIO
|
||||
libvfs_mc_la_SOURCES += $(CPIOFILES)
|
||||
endif
|
||||
if ENABLE_VFS_TAR
|
||||
libvfs_mc_la_SOURCES += $(TARFILES)
|
||||
endif
|
||||
if ENABLE_VFS_SFS
|
||||
libvfs_mc_la_SOURCES += $(SFSFILES)
|
||||
endif
|
||||
if ENABLE_VFS_EXTFS
|
||||
libvfs_mc_la_SOURCES += $(EXTFSFILES)
|
||||
endif
|
||||
if ENABLE_VFS_UNDELFS
|
||||
libvfs_mc_la_SOURCES += $(UNDELFILES)
|
||||
endif
|
||||
if ENABLE_VFS_NET
|
||||
libvfs_mc_la_SOURCES += $(NETFILES)
|
||||
endif
|
||||
if ENABLE_VFS_FTP
|
||||
libvfs_mc_la_SOURCES += $(FTPFILES)
|
||||
endif
|
||||
if ENABLE_VFS_FISH
|
||||
libvfs_mc_la_SOURCES += $(FISHFILES)
|
||||
endif
|
||||
if ENABLE_VFS_SMB
|
||||
libvfs_mc_la_SOURCES += $(SMBFILES)
|
||||
endif
|
||||
|
||||
EXTRA_DIST = HACKING README \
|
||||
$(BASICFILES) \
|
||||
$(CPIOFILES) \
|
||||
$(TARFILES) \
|
||||
$(SFSFILES) \
|
||||
$(EXTFSFILES) \
|
||||
$(UNDELFILES) \
|
||||
$(NETFILES) \
|
||||
$(FTPFILES) \
|
||||
$(FISHFILES) \
|
||||
$(SMBFILES)
|
||||
|
||||
dist-hook:
|
||||
$(mkinstalldirs) $(distdir)/samba
|
||||
$(mkinstalldirs) $(distdir)/samba/include
|
||||
$(mkinstalldirs) $(distdir)/samba/lib
|
||||
$(mkinstalldirs) $(distdir)/samba/libsmb
|
||||
$(mkinstalldirs) $(distdir)/samba/param
|
||||
for I in $(SAMBA_DIST); do \
|
||||
cp -p $(srcdir)/samba/$$I $(distdir)/samba/$$I || exit 1; \
|
||||
done
|
||||
|
||||
mostlyclean-local:
|
||||
if test -f samba/Makefile; then \
|
||||
(cd samba && $(MAKE) mostlyclean) \
|
||||
else :; fi
|
||||
|
||||
clean-local:
|
||||
if test -f samba/Makefile; then \
|
||||
(cd samba && $(MAKE) clean) \
|
||||
else :; fi
|
||||
|
||||
distclean-local:
|
||||
if test -f samba/Makefile; then \
|
||||
(cd samba && $(MAKE) distclean) \
|
||||
else :; fi
|
||||
|
||||
noinst_LTLIBRARIES = libvfs-mc.la
|
||||
|
||||
SAMBA_DIST = \
|
||||
Makefile.in \
|
||||
aclocal.m4 \
|
||||
configure.ac \
|
||||
configure \
|
||||
internals.doc \
|
||||
parsing.doc \
|
||||
include/byteorder.h \
|
||||
include/charset.h \
|
||||
include/client.h \
|
||||
include/config.h.in \
|
||||
include/includes.h \
|
||||
include/kanji.h \
|
||||
include/local.h \
|
||||
include/nameserv.h \
|
||||
include/nterr.h \
|
||||
include/proto.h \
|
||||
include/smb.h \
|
||||
include/stamp-h.in \
|
||||
include/trans2.h \
|
||||
include/version.h \
|
||||
lib/charcnv.c \
|
||||
lib/charset.c \
|
||||
lib/debug.c \
|
||||
lib/interface.c \
|
||||
lib/kanji.c \
|
||||
lib/md4.c \
|
||||
lib/netmask.c \
|
||||
lib/slprintf.c \
|
||||
lib/system.c \
|
||||
lib/time.c \
|
||||
lib/username.c \
|
||||
lib/util.c \
|
||||
lib/util_file.c \
|
||||
lib/util_sock.c \
|
||||
lib/util_str.c \
|
||||
libsmb/clientgen.c \
|
||||
libsmb/namequery.c \
|
||||
libsmb/nmblib.c \
|
||||
libsmb/nterr.c \
|
||||
libsmb/pwd_cache.c \
|
||||
libsmb/smbdes.c \
|
||||
libsmb/smbencrypt.c \
|
||||
libsmb/smberr.c \
|
||||
param/loadparm.c \
|
||||
param/params.c
|
@ -1,178 +0,0 @@
|
||||
|
||||
FIles transferred over SHell protocol (V 0.0.2)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This protocol was designed for transferring files over a remote shell
|
||||
connection (rsh and compatibles). It can be as well used for transfers over
|
||||
rsh, and there may be other uses.
|
||||
|
||||
Client sends requests of following form:
|
||||
|
||||
#FISH_COMMAND
|
||||
equivalent shell commands,
|
||||
which may be multiline
|
||||
|
||||
Only fish commands are defined here, shell equivalents are for your
|
||||
information only and will probably vary from implementation to
|
||||
implementation. Fish commands always have priority: server is
|
||||
expected to execute fish command if it understands it. If it does not,
|
||||
however, it can try the luck and execute shell command.
|
||||
|
||||
Server's reply is multiline, but always ends with
|
||||
|
||||
### 000<optional text>
|
||||
|
||||
line. ### is prefix to mark this line, 000 is return code. Return
|
||||
codes are superset to those used in ftp.
|
||||
|
||||
There are few new exit codes defined:
|
||||
|
||||
000 don't know; if there were no previous lines, this marks COMPLETE
|
||||
success, if they were, it marks failure.
|
||||
|
||||
001 don't know; if there were no previous lines, this marks
|
||||
PRELIMinary success, if they were, it marks failure
|
||||
|
||||
Connecting
|
||||
~~~~~~~~~~
|
||||
Client uses "echo FISH:;/bin/sh" as command executed on remote
|
||||
machine. This should make it possible for server to distinguish FISH
|
||||
connections from normal rsh/ssh.
|
||||
|
||||
Commands
|
||||
~~~~~~~~
|
||||
#FISH
|
||||
echo; start_fish_server; echo '### 200'
|
||||
|
||||
This command is sent at the beginning. It marks that client wishes to
|
||||
talk via FISH protocol. #VER command must follow. If server
|
||||
understands FISH protocol, it has option to put FISH server somewhere
|
||||
on system path and name it start_fish_server.
|
||||
|
||||
#VER 0.0.2 <feature1> <feature2> <...>
|
||||
echo '### 000'
|
||||
|
||||
This command is the second one. It sends client version and extensions
|
||||
to the server. Server should reply with protocol version to be used,
|
||||
and list of extensions accepted.
|
||||
|
||||
VER 0.0.0 <feature2>
|
||||
### 200
|
||||
|
||||
#PWD
|
||||
pwd; echo '### 200'
|
||||
|
||||
Server should reply with current directory (in form /abc/def/ghi)
|
||||
followed by line indicating success.
|
||||
|
||||
#LIST /directory
|
||||
ls -lLa $1 | grep '^[^cbt]' | ( while read p x u g s m d y n; do echo "P$p $u.$g
|
||||
S$s
|
||||
d$m $d $y
|
||||
:$n
|
||||
"; done )
|
||||
ls -lLa $1 | grep '^[cb]' | ( while read p x u g a i m d y n; do echo "P$p $u.$g
|
||||
E$a$i
|
||||
dD$m $d $y
|
||||
:$n
|
||||
"; done )
|
||||
echo '### 200'
|
||||
|
||||
This allows client to list directory or get status information about
|
||||
single file. Output is in following form (any line except :<filename>
|
||||
may be omitted):
|
||||
|
||||
P<unix permissions> <owner>.<group>
|
||||
S<size>
|
||||
d<3-letters month name> <day> <year or HH:MM>
|
||||
D<year> <month> <day> <hour> <minute> <second>[.1234]
|
||||
E<major-of-device>,<minor>
|
||||
:<filename>
|
||||
L<filename symlink points to>
|
||||
<blank line to separate items>
|
||||
|
||||
Unix permissions are of form X--------- where X is type of
|
||||
file. Currently, '-' means regular file, 'd' means directory, 'c', 'b'
|
||||
means character and block device, 'l' means symbolic link, 'p' means
|
||||
FIFO and 's' means socket.
|
||||
|
||||
'd' has three fields: month (one of strings Jan Feb Mar Apr May Jun
|
||||
Jul Aug Sep Oct Nov Dec), day of month, and third is either single
|
||||
number indicating year, or HH:MM field (assume current year in such
|
||||
case). As you've probably noticed, this is pretty broken; it is for
|
||||
compatibility with ls listing.
|
||||
|
||||
#RETR /some/name
|
||||
ls -l /some/name | ( read a b c d x e; echo $x ); echo '### 100'; cat /some/name; echo '### 200'
|
||||
|
||||
Server sends line with filesize on it, followed by line with ### 100
|
||||
indicating partial success, then it sends binary data (exactly
|
||||
filesize bytes) and follows them with (with no preceding newline) ###
|
||||
200.
|
||||
|
||||
Note that there's no way to abort running RETR command - except
|
||||
closing the connection.
|
||||
|
||||
#STOR <size> /file/name
|
||||
> /file/name; echo '### 001'; ( dd bs=4096 count=<size/4096>; dd bs=<size%4096> count=1 ) 2>/dev/null | ( cat > %s; cat > /dev/null ); echo '### 200'
|
||||
|
||||
This command is for storing /file/name, which is exactly size bytes
|
||||
big. You probably think I went crazy. Well, I did not: that strange
|
||||
cat > /dev/null has purpose to discard any extra data which was not
|
||||
written to disk (due to for example out of space condition).
|
||||
|
||||
[Why? Imagine uploading file with "rm -rf /" line in it.]
|
||||
|
||||
#CWD /somewhere
|
||||
cd /somewhere; echo '### 000'
|
||||
|
||||
It is specified here, but I'm not sure how wise idea is to use this
|
||||
one: it breaks stateless-ness of the protocol.
|
||||
|
||||
Following commands should be rather self-explanatory:
|
||||
|
||||
#CHMOD 1234 file
|
||||
chmod 1234 file; echo '### 000'
|
||||
|
||||
#DELE /some/path
|
||||
rm -f /some/path; echo '### 000'
|
||||
|
||||
#MKD /some/path
|
||||
mkdir /some/path; echo '### 000'
|
||||
|
||||
#RMD /some/path
|
||||
rmdir /some/path; echo '### 000'
|
||||
|
||||
#RENAME /path/a /path/b
|
||||
mv /path/a /path/b; echo '### 000'
|
||||
|
||||
#LINK /path/a /path/b
|
||||
ln /path/a /path/b; echo '### 000'
|
||||
|
||||
#SYMLINK /path/a /path/b
|
||||
ln -s /path/a /path/b; echo '### 000'
|
||||
|
||||
#CHOWN user /file/name
|
||||
chown user /file/name; echo '### 000'
|
||||
|
||||
#CHGRP group /file/name
|
||||
chgrp group /file/name; echo '### 000'
|
||||
|
||||
#READ <offset> <size> /path/and/filename
|
||||
cat /path/and/filename | ( dd bs=4096 count=<offset/4096> > /dev/null;
|
||||
dd bs=<offset%4096> count=1 > /dev/null;
|
||||
dd bs=4096 count=<offset/4096>;
|
||||
dd bs=<offset%4096> count=1; )
|
||||
|
||||
Returns ### 200 on successful exit, ### 291 on successful exit when
|
||||
reading ended at eof, ### 292 on successfull exit when reading did not
|
||||
end at eof.
|
||||
|
||||
#WRITE <offset> <size> /path/and/filename
|
||||
|
||||
Hmm, shall we define these ones if we know our client is not going to
|
||||
use them?
|
||||
|
||||
|
||||
That's all, folks!
|
||||
pavel@ucw.cz
|
@ -1,147 +0,0 @@
|
||||
|
||||
/**
|
||||
* \file
|
||||
* \brief Header: VFS implemntation (?)
|
||||
*/
|
||||
|
||||
#ifndef MC__VFS_IMPL_H
|
||||
#define MC__VFS_IMPL_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <dirent.h>
|
||||
#include <stddef.h>
|
||||
#include <utime.h>
|
||||
|
||||
#include "vfs.h"
|
||||
#include "lib/fs.h" /* MC_MAXPATHLEN */
|
||||
|
||||
/*** typedefs(not structures) and defined constants **********************************************/
|
||||
|
||||
typedef void *vfsid;
|
||||
|
||||
/*** enums ***************************************************************************************/
|
||||
|
||||
/*** structures declarations (and typedefs of structures)*****************************************/
|
||||
|
||||
struct vfs_stamping;
|
||||
|
||||
struct vfs_class
|
||||
{
|
||||
struct vfs_class *next;
|
||||
const char *name; /* "FIles over SHell" */
|
||||
vfs_class_flags_t flags;
|
||||
const char *prefix; /* "fish:" */
|
||||
void *data; /* this is for filesystem's own use */
|
||||
int verrno; /* can't use errno because glibc2 might define errno as function */
|
||||
|
||||
int (*init) (struct vfs_class * me);
|
||||
void (*done) (struct vfs_class * me);
|
||||
|
||||
/**
|
||||
* The fill_names method shall call the callback function for every
|
||||
* filesystem name that this vfs module supports.
|
||||
*/
|
||||
void (*fill_names) (struct vfs_class * me, fill_names_f);
|
||||
|
||||
/**
|
||||
* The which() method shall return the index of the vfs subsystem
|
||||
* or -1 if this vfs cannot handle the given pathname.
|
||||
*/
|
||||
int (*which) (struct vfs_class * me, const char *path);
|
||||
|
||||
void *(*open) (struct vfs_class * me, const char *fname, int flags, mode_t mode);
|
||||
int (*close) (void *vfs_info);
|
||||
ssize_t (*read) (void *vfs_info, char *buffer, size_t count);
|
||||
ssize_t (*write) (void *vfs_info, const char *buf, size_t count);
|
||||
|
||||
void *(*opendir) (struct vfs_class * me, const char *dirname);
|
||||
void *(*readdir) (void *vfs_info);
|
||||
int (*closedir) (void *vfs_info);
|
||||
|
||||
int (*stat) (struct vfs_class * me, const char *path, struct stat * buf);
|
||||
int (*lstat) (struct vfs_class * me, const char *path, struct stat * buf);
|
||||
int (*fstat) (void *vfs_info, struct stat * buf);
|
||||
|
||||
int (*chmod) (struct vfs_class * me, const char *path, int mode);
|
||||
int (*chown) (struct vfs_class * me, const char *path, uid_t owner, gid_t group);
|
||||
int (*utime) (struct vfs_class * me, const char *path, struct utimbuf * times);
|
||||
|
||||
int (*readlink) (struct vfs_class * me, const char *path, char *buf, size_t size);
|
||||
int (*symlink) (struct vfs_class * me, const char *n1, const char *n2);
|
||||
int (*link) (struct vfs_class * me, const char *p1, const char *p2);
|
||||
int (*unlink) (struct vfs_class * me, const char *path);
|
||||
int (*rename) (struct vfs_class * me, const char *p1, const char *p2);
|
||||
int (*chdir) (struct vfs_class * me, const char *path);
|
||||
int (*ferrno) (struct vfs_class * me);
|
||||
off_t (*lseek) (void *vfs_info, off_t offset, int whence);
|
||||
int (*mknod) (struct vfs_class * me, const char *path, mode_t mode, dev_t dev);
|
||||
|
||||
vfsid (*getid) (struct vfs_class * me, const char *path);
|
||||
|
||||
int (*nothingisopen) (vfsid id);
|
||||
void (*free) (vfsid id);
|
||||
|
||||
char *(*getlocalcopy) (struct vfs_class * me, const char *filename);
|
||||
int (*ungetlocalcopy) (struct vfs_class * me, const char *filename,
|
||||
const char *local, int has_changed);
|
||||
|
||||
int (*mkdir) (struct vfs_class * me, const char *path, mode_t mode);
|
||||
int (*rmdir) (struct vfs_class * me, const char *path);
|
||||
|
||||
int (*ctl) (void *vfs_info, int ctlop, void *arg);
|
||||
int (*setctl) (struct vfs_class * me, const char *path, int ctlop, void *arg);
|
||||
};
|
||||
|
||||
/*
|
||||
* This union is used to ensure that there is enough space for the
|
||||
* filename (d_name) when the dirent structure is created.
|
||||
*/
|
||||
union vfs_dirent
|
||||
{
|
||||
struct dirent dent;
|
||||
char _extra_buffer[offsetof (struct dirent, d_name) + MC_MAXPATHLEN + 1];
|
||||
};
|
||||
|
||||
/*** global variables defined in .c file *********************************************************/
|
||||
|
||||
/*** declarations of public functions ************************************************************/
|
||||
|
||||
|
||||
/* Register a file system class */
|
||||
int vfs_register_class (struct vfs_class *vfs);
|
||||
|
||||
struct vfs_class *vfs_split (char *path, char **inpath, char **op);
|
||||
char *vfs_path (const char *path);
|
||||
|
||||
/* vfs/direntry.c: */
|
||||
void *vfs_s_open (struct vfs_class *me, const char *file, int flags, mode_t mode);
|
||||
|
||||
vfsid vfs_getid (struct vfs_class *vclass, const char *dir);
|
||||
|
||||
#ifdef ENABLE_VFS_CPIO
|
||||
void init_cpiofs (void);
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_TAR
|
||||
void init_tarfs (void);
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_SFS
|
||||
void init_sfs (void);
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_EXTFS
|
||||
void init_extfs (void);
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_UNDELFS
|
||||
void init_undelfs (void);
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_FTP
|
||||
void init_ftpfs (void);
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_FISH
|
||||
void init_fish (void);
|
||||
#endif
|
||||
|
||||
/*** inline functions ****************************************************************************/
|
||||
#endif /* MC_VFS_IMPL_H */
|
@ -42,7 +42,7 @@
|
||||
|
||||
#include "src/history.h"
|
||||
|
||||
#include "vfs-impl.h"
|
||||
#include "vfs.h"
|
||||
#include "utilvfs.h"
|
||||
|
||||
/*** global variables ****************************************************************************/
|
@ -60,22 +60,10 @@
|
||||
#endif
|
||||
#include "src/setup.h" /* cd_symlinks */
|
||||
|
||||
#include "vfs-impl.h"
|
||||
#include "vfs.h"
|
||||
#include "utilvfs.h"
|
||||
#include "gc.h"
|
||||
|
||||
#ifdef ENABLE_VFS_NET
|
||||
#include "netutil.h"
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_FTP
|
||||
#include "ftpfs.h"
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_SMB
|
||||
#include "smbfs.h"
|
||||
#endif
|
||||
|
||||
#include "local.h"
|
||||
|
||||
/*** global variables ****************************************************************************/
|
||||
|
||||
/*** file scope macro definitions ****************************************************************/
|
||||
@ -112,10 +100,9 @@ static char *current_dir;
|
||||
static GPtrArray *vfs_openfiles;
|
||||
static long vfs_free_handle_list = -1;
|
||||
|
||||
static struct vfs_class *localfs_class;
|
||||
static GString *vfs_str_buffer;
|
||||
|
||||
static struct vfs_class *vfs_list;
|
||||
static GPtrArray *vfs_list = NULL;
|
||||
|
||||
static struct dirent *mc_readdir_result = NULL;
|
||||
|
||||
@ -240,20 +227,23 @@ vfs_free_handle (int handle)
|
||||
static struct vfs_class *
|
||||
vfs_prefix_to_class (char *prefix)
|
||||
{
|
||||
struct vfs_class *vfs;
|
||||
guint i;
|
||||
|
||||
/* Avoid last class (localfs) that would accept any prefix */
|
||||
for (vfs = vfs_list; vfs->next != NULL; vfs = vfs->next)
|
||||
/* Avoid first class (localfs) that would accept any prefix */
|
||||
for (i = 1; i < vfs_list->len; i++)
|
||||
{
|
||||
struct vfs_class *vfs = (struct vfs_class *) g_ptr_array_index (vfs_list, i);
|
||||
if (vfs->which != NULL)
|
||||
{
|
||||
if ((*vfs->which) (vfs, prefix) == -1)
|
||||
if (vfs->which (vfs, prefix) == -1)
|
||||
continue;
|
||||
return vfs;
|
||||
}
|
||||
|
||||
if (vfs->prefix != NULL && strncmp (prefix, vfs->prefix, strlen (vfs->prefix)) == 0)
|
||||
return vfs;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -444,20 +434,6 @@ _vfs_get_cwd (void)
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
static void
|
||||
vfs_setup_wd (void)
|
||||
{
|
||||
current_dir = g_strdup (PATH_SEP_STR);
|
||||
_vfs_get_cwd ();
|
||||
|
||||
if (strlen (current_dir) > MC_MAXPATHLEN - 2)
|
||||
vfs_die ("Current dir too long.\n");
|
||||
|
||||
current_vfs = vfs_get_class (current_dir);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
static char *
|
||||
mc_def_getlocalcopy (const char *filename)
|
||||
{
|
||||
@ -562,17 +538,16 @@ mc_def_ungetlocalcopy (struct vfs_class *vfs, const char *filename,
|
||||
/*** public functions ****************************************************************************/
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
int
|
||||
vfs_register_class (struct vfs_class *vfs)
|
||||
gboolean
|
||||
vfs_register_class (struct vfs_class * vfs)
|
||||
{
|
||||
if (vfs->init != NULL) /* vfs has own initialization function */
|
||||
if (!(*vfs->init) (vfs)) /* but it failed */
|
||||
return 0;
|
||||
if (!vfs->init (vfs)) /* but it failed */
|
||||
return FALSE;
|
||||
|
||||
vfs->next = vfs_list;
|
||||
vfs_list = vfs;
|
||||
g_ptr_array_add (vfs_list, vfs);
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
@ -584,7 +559,7 @@ vfs_register_class (struct vfs_class *vfs)
|
||||
char *
|
||||
vfs_strip_suffix_from_filename (const char *filename)
|
||||
{
|
||||
struct vfs_class *vfs;
|
||||
guint i;
|
||||
char *semi;
|
||||
char *p;
|
||||
|
||||
@ -596,20 +571,23 @@ vfs_strip_suffix_from_filename (const char *filename)
|
||||
if (semi == NULL)
|
||||
return p;
|
||||
|
||||
/* Avoid last class (localfs) that would accept any prefix */
|
||||
for (vfs = vfs_list; vfs->next != NULL; vfs = vfs->next)
|
||||
/* Avoid first class (localfs) that would accept any prefix */
|
||||
for (i = 1; i < vfs_list->len; i++)
|
||||
{
|
||||
struct vfs_class *vfs = (struct vfs_class *) g_ptr_array_index (vfs_list, i);
|
||||
|
||||
if (vfs->which != NULL)
|
||||
{
|
||||
if ((*vfs->which) (vfs, semi + 1) == -1)
|
||||
if (vfs->which (vfs, semi + 1) == -1)
|
||||
continue;
|
||||
*semi = '\0'; /* Found valid suffix */
|
||||
return p;
|
||||
break;
|
||||
}
|
||||
|
||||
if (vfs->prefix != NULL && strncmp (semi + 1, vfs->prefix, strlen (vfs->prefix)) == 0)
|
||||
{
|
||||
*semi = '\0'; /* Found valid suffix */
|
||||
return p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return p;
|
||||
@ -678,14 +656,15 @@ vfs_split (char *path, char **inpath, char **op)
|
||||
struct vfs_class *
|
||||
vfs_get_class (const char *pathname)
|
||||
{
|
||||
char *path;
|
||||
struct vfs_class *vfs;
|
||||
char *path = g_strdup (pathname);
|
||||
|
||||
path = g_strdup (pathname);
|
||||
vfs = _vfs_get_class (path);
|
||||
g_free (path);
|
||||
|
||||
if (!vfs)
|
||||
vfs = localfs_class;
|
||||
if (vfs == NULL)
|
||||
vfs = g_ptr_array_index (vfs_list, 0); /* localfs */
|
||||
|
||||
return vfs;
|
||||
}
|
||||
@ -1440,42 +1419,28 @@ mc_ungetlocalcopy (const char *pathname, const char *local, int has_changed)
|
||||
void
|
||||
vfs_init (void)
|
||||
{
|
||||
/* create the VFS handle arrays */
|
||||
vfs_list = g_ptr_array_new ();
|
||||
|
||||
/* create the VFS handle array */
|
||||
vfs_openfiles = g_ptr_array_new ();
|
||||
|
||||
vfs_str_buffer = g_string_new ("");
|
||||
/* localfs needs to be the first one */
|
||||
init_localfs ();
|
||||
/* fallback value for vfs_get_class() */
|
||||
localfs_class = vfs_list;
|
||||
|
||||
#ifdef ENABLE_VFS_CPIO
|
||||
init_cpiofs ();
|
||||
#endif /* ENABLE_VFS_CPIO */
|
||||
#ifdef ENABLE_VFS_TAR
|
||||
init_tarfs ();
|
||||
#endif /* ENABLE_VFS_TAR */
|
||||
#ifdef ENABLE_VFS_SFS
|
||||
init_sfs ();
|
||||
#endif /* ENABLE_VFS_SFS */
|
||||
#ifdef ENABLE_VFS_EXTFS
|
||||
init_extfs ();
|
||||
#endif /* ENABLE_VFS_EXTFS */
|
||||
#ifdef ENABLE_VFS_UNDELFS
|
||||
init_undelfs ();
|
||||
#endif /* ENABLE_VFS_UNDELFS */
|
||||
}
|
||||
|
||||
#ifdef ENABLE_VFS_FTP
|
||||
init_ftpfs ();
|
||||
#endif /* ENABLE_VFS_FTP */
|
||||
#ifdef ENABLE_VFS_FISH
|
||||
init_fish ();
|
||||
#endif /* ENABLE_VFS_FISH */
|
||||
#ifdef ENABLE_VFS_SMB
|
||||
init_smbfs ();
|
||||
#endif /* ENABLE_VFS_SMB */
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
vfs_setup_wd ();
|
||||
void
|
||||
vfs_setup_work_dir (void)
|
||||
{
|
||||
current_dir = g_strdup (PATH_SEP_STR);
|
||||
_vfs_get_cwd ();
|
||||
|
||||
if (strlen (current_dir) > MC_MAXPATHLEN - 2)
|
||||
vfs_die ("Current dir too long.\n");
|
||||
|
||||
current_vfs = vfs_get_class (current_dir);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
@ -1483,17 +1448,22 @@ vfs_init (void)
|
||||
void
|
||||
vfs_shut (void)
|
||||
{
|
||||
struct vfs_class *vfs;
|
||||
guint i;
|
||||
|
||||
vfs_gc_done ();
|
||||
|
||||
g_free (current_dir);
|
||||
|
||||
for (vfs = vfs_list; vfs; vfs = vfs->next)
|
||||
if (vfs->done)
|
||||
(*vfs->done) (vfs);
|
||||
for (i = 0; i < vfs_list->len; i++)
|
||||
{
|
||||
struct vfs_class *vfs = (struct vfs_class *) g_ptr_array_index (vfs_list, i);
|
||||
|
||||
if (vfs->done != NULL)
|
||||
vfs->done (vfs);
|
||||
}
|
||||
|
||||
g_ptr_array_free (vfs_openfiles, TRUE);
|
||||
g_ptr_array_free (vfs_list, TRUE);
|
||||
g_string_free (vfs_str_buffer, TRUE);
|
||||
g_free (mc_readdir_result);
|
||||
}
|
||||
@ -1507,11 +1477,15 @@ vfs_shut (void)
|
||||
void
|
||||
vfs_fill_names (fill_names_f func)
|
||||
{
|
||||
struct vfs_class *vfs;
|
||||
guint i;
|
||||
|
||||
for (vfs = vfs_list; vfs; vfs = vfs->next)
|
||||
if (vfs->fill_names)
|
||||
(*vfs->fill_names) (vfs, func);
|
||||
for (i = 0; i < vfs_list->len; i++)
|
||||
{
|
||||
struct vfs_class *vfs = (struct vfs_class *) g_ptr_array_index (vfs_list, i);
|
||||
|
||||
if (vfs->fill_names != NULL)
|
||||
vfs->fill_names (vfs, func);
|
||||
}
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
@ -8,11 +8,16 @@
|
||||
#define MC__VFS_VFS_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
#include <utime.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "lib/global.h"
|
||||
#include "lib/fs.h" /* MC_MAXPATHLEN */
|
||||
|
||||
/*** typedefs(not structures) and defined constants **********************************************/
|
||||
|
||||
@ -87,6 +92,8 @@
|
||||
|
||||
typedef void (*fill_names_f) (const char *);
|
||||
|
||||
typedef void *vfsid;
|
||||
|
||||
/*** enums ***************************************************************************************/
|
||||
|
||||
/* Flags of VFS classes */
|
||||
@ -118,7 +125,81 @@ enum
|
||||
|
||||
/*** structures declarations (and typedefs of structures)*****************************************/
|
||||
|
||||
struct vfs_class;
|
||||
typedef struct vfs_class
|
||||
{
|
||||
const char *name; /* "FIles over SHell" */
|
||||
vfs_class_flags_t flags;
|
||||
const char *prefix; /* "fish:" */
|
||||
void *data; /* this is for filesystem's own use */
|
||||
int verrno; /* can't use errno because glibc2 might define errno as function */
|
||||
|
||||
int (*init) (struct vfs_class * me);
|
||||
void (*done) (struct vfs_class * me);
|
||||
|
||||
/**
|
||||
* The fill_names method shall call the callback function for every
|
||||
* filesystem name that this vfs module supports.
|
||||
*/
|
||||
void (*fill_names) (struct vfs_class * me, fill_names_f);
|
||||
|
||||
/**
|
||||
* The which() method shall return the index of the vfs subsystem
|
||||
* or -1 if this vfs cannot handle the given pathname.
|
||||
*/
|
||||
int (*which) (struct vfs_class * me, const char *path);
|
||||
|
||||
void *(*open) (struct vfs_class * me, const char *fname, int flags, mode_t mode);
|
||||
int (*close) (void *vfs_info);
|
||||
ssize_t (*read) (void *vfs_info, char *buffer, size_t count);
|
||||
ssize_t (*write) (void *vfs_info, const char *buf, size_t count);
|
||||
|
||||
void *(*opendir) (struct vfs_class * me, const char *dirname);
|
||||
void *(*readdir) (void *vfs_info);
|
||||
int (*closedir) (void *vfs_info);
|
||||
|
||||
int (*stat) (struct vfs_class * me, const char *path, struct stat * buf);
|
||||
int (*lstat) (struct vfs_class * me, const char *path, struct stat * buf);
|
||||
int (*fstat) (void *vfs_info, struct stat * buf);
|
||||
|
||||
int (*chmod) (struct vfs_class * me, const char *path, int mode);
|
||||
int (*chown) (struct vfs_class * me, const char *path, uid_t owner, gid_t group);
|
||||
int (*utime) (struct vfs_class * me, const char *path, struct utimbuf * times);
|
||||
|
||||
int (*readlink) (struct vfs_class * me, const char *path, char *buf, size_t size);
|
||||
int (*symlink) (struct vfs_class * me, const char *n1, const char *n2);
|
||||
int (*link) (struct vfs_class * me, const char *p1, const char *p2);
|
||||
int (*unlink) (struct vfs_class * me, const char *path);
|
||||
int (*rename) (struct vfs_class * me, const char *p1, const char *p2);
|
||||
int (*chdir) (struct vfs_class * me, const char *path);
|
||||
int (*ferrno) (struct vfs_class * me);
|
||||
off_t (*lseek) (void *vfs_info, off_t offset, int whence);
|
||||
int (*mknod) (struct vfs_class * me, const char *path, mode_t mode, dev_t dev);
|
||||
|
||||
vfsid (*getid) (struct vfs_class * me, const char *path);
|
||||
|
||||
int (*nothingisopen) (vfsid id);
|
||||
void (*free) (vfsid id);
|
||||
|
||||
char *(*getlocalcopy) (struct vfs_class * me, const char *filename);
|
||||
int (*ungetlocalcopy) (struct vfs_class * me, const char *filename,
|
||||
const char *local, int has_changed);
|
||||
|
||||
int (*mkdir) (struct vfs_class * me, const char *path, mode_t mode);
|
||||
int (*rmdir) (struct vfs_class * me, const char *path);
|
||||
|
||||
int (*ctl) (void *vfs_info, int ctlop, void *arg);
|
||||
int (*setctl) (struct vfs_class * me, const char *path, int ctlop, void *arg);
|
||||
} vfs_class;
|
||||
|
||||
/*
|
||||
* This union is used to ensure that there is enough space for the
|
||||
* filename (d_name) when the dirent structure is created.
|
||||
*/
|
||||
union vfs_dirent
|
||||
{
|
||||
struct dirent dent;
|
||||
char _extra_buffer[offsetof (struct dirent, d_name) + MC_MAXPATHLEN + 1];
|
||||
};
|
||||
|
||||
/*** global variables defined in .c file *********************************************************/
|
||||
|
||||
@ -130,16 +211,26 @@ extern int use_netrc;
|
||||
|
||||
/*** declarations of public functions ************************************************************/
|
||||
|
||||
/* lib/vfs/direntry.c: */
|
||||
void *vfs_s_open (struct vfs_class *me, const char *file, int flags, mode_t mode);
|
||||
|
||||
vfsid vfs_getid (struct vfs_class *vclass, const char *dir);
|
||||
|
||||
void vfs_init (void);
|
||||
void vfs_shut (void);
|
||||
/* Register a file system class */
|
||||
gboolean vfs_register_class (struct vfs_class *vfs);
|
||||
|
||||
void vfs_setup_work_dir (void);
|
||||
|
||||
void vfs_timeout_handler (void);
|
||||
int vfs_timeouts (void);
|
||||
void vfs_expire (int now);
|
||||
|
||||
char *vfs_get_current_dir (void);
|
||||
gboolean vfs_current_is_local (void);
|
||||
gboolean vfs_file_is_local (const char *filename);
|
||||
|
||||
ssize_t mc_read (int handle, void *buffer, size_t count);
|
||||
ssize_t mc_write (int handle, const void *buffer, size_t count);
|
||||
int mc_utime (const char *path, struct utimbuf *times);
|
||||
@ -172,6 +263,9 @@ char *mc_getlocalcopy (const char *pathname);
|
||||
char *vfs_strip_suffix_from_filename (const char *filename);
|
||||
char *vfs_translate_url (const char *url);
|
||||
|
||||
struct vfs_class *vfs_split (char *path, char **inpath, char **op);
|
||||
char *vfs_path (const char *path);
|
||||
|
||||
struct vfs_class *vfs_get_class (const char *path);
|
||||
vfs_class_flags_t vfs_file_class_flags (const char *filename);
|
||||
|
||||
@ -179,11 +273,14 @@ vfs_class_flags_t vfs_file_class_flags (const char *filename);
|
||||
* return static buffer */
|
||||
const char *vfs_get_encoding (const char *path);
|
||||
|
||||
/* return new string */
|
||||
char *vfs_translate_path_n (const char *path);
|
||||
|
||||
/* canonize and translate path, return new string */
|
||||
char *vfs_canon_and_translate (const char *path);
|
||||
/* translate path back to terminal encoding, remove all #enc:
|
||||
* every invalid character is replaced with question mark
|
||||
* return static buffer */
|
||||
char *vfs_translate_path (const char *path);
|
||||
/* return new string */
|
||||
char *vfs_translate_path_n (const char *path);
|
||||
|
||||
void vfs_stamp_path (const char *path);
|
||||
|
||||
@ -191,11 +288,5 @@ void vfs_release_path (const char *dir);
|
||||
|
||||
void vfs_fill_names (fill_names_f);
|
||||
|
||||
char *vfs_get_current_dir (void);
|
||||
/* translate path back to terminal encoding, remove all #enc:
|
||||
* every invalid character is replaced with question mark
|
||||
* return static buffer */
|
||||
char *vfs_translate_path (const char *path);
|
||||
|
||||
/*** inline functions ****************************************************************************/
|
||||
#endif /* MC_VFS_VFS_H */
|
@ -42,7 +42,7 @@
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/tty/mouse.h"
|
||||
#include "lib/tty/key.h" /* XCTRL and ALT macros */
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/skin.h"
|
||||
#include "lib/strutil.h"
|
||||
|
@ -19,7 +19,7 @@ AC_DEFUN([AC_MC_VFS_SMB],
|
||||
fi
|
||||
|
||||
if test "$enable_vfs_smb" = "yes"; then
|
||||
AC_CONFIG_SUBDIRS([lib/vfs/mc-vfs/samba])
|
||||
AC_CONFIG_SUBDIRS([src/vfs/smbfs/helpers])
|
||||
|
||||
AM_CONDITIONAL([ENABLE_VFS_SMB], [test "1" = "1"])
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
SUBDIRS = filemanager man2hlp viewer
|
||||
SUBDIRS = filemanager man2hlp vfs viewer
|
||||
|
||||
if USE_EDIT
|
||||
SUBDIRS += editor
|
||||
@ -34,6 +34,7 @@ DIFFLIB = diffviewer/libdiffviewer.la
|
||||
endif
|
||||
|
||||
mc_LDADD = \
|
||||
vfs/libmc-vfs.la \
|
||||
viewer/libmcviewer.la \
|
||||
filemanager/libmcfilemanager.la \
|
||||
$(DIFFLIB) $(EDITLIB) \
|
||||
@ -41,7 +42,7 @@ mc_LDADD = \
|
||||
|
||||
if ENABLE_VFS_SMB
|
||||
# this is a hack for linking with own samba library in simple way
|
||||
mc_LDADD += ../lib/vfs/mc-vfs/samba/libsamba.a
|
||||
mc_LDADD += vfs/smbfs/helpers/libsamba.a
|
||||
endif
|
||||
|
||||
mc_LDADD += $(MCLIBS) $(SLANGLIB)
|
||||
|
@ -33,12 +33,13 @@
|
||||
#include "lib/tty/color.h" /* command_line_colors */
|
||||
#include "lib/tty/mouse.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#ifdef ENABLE_VFS_SMB
|
||||
#include "lib/vfs/mc-vfs/smbfs.h" /* smbfs_set_debugf() */
|
||||
#endif
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/util.h" /* x_basename() */
|
||||
|
||||
#ifdef ENABLE_VFS_SMB
|
||||
#include "src/vfs/smbfs/smbfs.h" /* smbfs_set_debugf() */
|
||||
#endif
|
||||
|
||||
#include "src/main.h"
|
||||
#include "src/textconf.h"
|
||||
#include "src/subshell.h" /* use_subshell */
|
||||
|
@ -38,7 +38,7 @@
|
||||
#include "lib/tty/color.h"
|
||||
#include "lib/tty/key.h"
|
||||
#include "lib/skin.h" /* EDITOR_NORMAL_COLOR */
|
||||
#include "lib/vfs/mc-vfs/vfs.h" /* mc_opendir, mc_readdir, mc_closedir, */
|
||||
#include "lib/vfs/vfs.h" /* mc_opendir, mc_readdir, mc_closedir, */
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h"
|
||||
#include "lib/charsets.h"
|
||||
|
@ -46,7 +46,7 @@
|
||||
#include "lib/tty/tty.h" /* attrset() */
|
||||
#include "lib/tty/key.h" /* is_idle() */
|
||||
#include "lib/skin.h" /* EDITOR_NORMAL_COLOR */
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strutil.h" /* utf string functions */
|
||||
#include "lib/util.h" /* load_file_position(), save_file_position() */
|
||||
#include "lib/timefmt.h" /* time formatting */
|
||||
|
@ -53,7 +53,7 @@
|
||||
#include "lib/strutil.h" /* utf string functions */
|
||||
#include "lib/lock.h"
|
||||
#include "lib/util.h" /* tilde_expand() */
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/widget.h"
|
||||
#include "lib/charsets.h"
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/tty/key.h"
|
||||
#include "lib/tty/win.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h"
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
#include "lib/tty/key.h" /* XCTRL and ALT macros */
|
||||
#include "lib/skin.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h"
|
||||
|
||||
|
@ -42,12 +42,12 @@
|
||||
#include "lib/mcconfig.h" /* Load/save user formats */
|
||||
#include "lib/strutil.h"
|
||||
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#ifdef ENABLE_VFS_FTP
|
||||
#include "lib/vfs/mc-vfs/ftpfs.h"
|
||||
#include "src/vfs/ftpfs/ftpfs.h"
|
||||
#endif /* ENABLE_VFS_FTP */
|
||||
#ifdef ENABLE_VFS_SMB
|
||||
#include "lib/vfs/mc-vfs/smbfs.h"
|
||||
#include "src/vfs/smbfs/smbfs.h"
|
||||
#endif /* ENABLE_VFS_SMB */
|
||||
|
||||
#include "lib/util.h" /* Q_() */
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/skin.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h"
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/skin.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h"
|
||||
|
@ -53,7 +53,7 @@
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/search.h"
|
||||
#include "lib/filehighlight.h" /* MC_FHL_INI_FILE */
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
#include "lib/global.h" /* home_dir */
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strescape.h"
|
||||
#include "lib/skin.h" /* DEFAULT_COLOR */
|
||||
#include "lib/util.h"
|
||||
|
@ -40,7 +40,7 @@
|
||||
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/tty/key.h" /* XCTRL and ALT macros */
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strescape.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "lib/global.h"
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/search.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/fs.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
|
@ -38,7 +38,7 @@
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/widget.h"
|
||||
#include "lib/charsets.h" /* get_codepage_index */
|
||||
|
||||
|
@ -62,7 +62,7 @@
|
||||
#include "lib/strescape.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/widget.h"
|
||||
|
||||
#include "src/setup.h"
|
||||
|
@ -81,7 +81,7 @@
|
||||
#include "lib/tty/key.h" /* tty_get_event */
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/search.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strescape.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/timefmt.h" /* file_date() */
|
||||
|
@ -37,7 +37,7 @@
|
||||
#include "lib/global.h"
|
||||
#include "lib/fs.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
|
||||
/*** global variables ****************************************************************************/
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
||||
#include "fileopctx.h"
|
||||
#include "filegui.h"
|
||||
#include "lib/search.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
|
||||
/*** global variables ****************************************************************************/
|
||||
|
||||
|
@ -39,9 +39,9 @@
|
||||
#include "lib/skin.h"
|
||||
#include "lib/search.h"
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/widget.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/util.h" /* canonicalize_pathname() */
|
||||
|
||||
#include "src/setup.h" /* verbose */
|
||||
|
@ -48,7 +48,7 @@
|
||||
#include "lib/mcconfig.h" /* Load/save directories hotlist */
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h"
|
||||
|
||||
|
@ -51,7 +51,7 @@
|
||||
#include "lib/tty/mouse.h"
|
||||
#include "lib/tty/win.h" /* do_enter_ca_mode() */
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h" /* For vfs_translate_url() */
|
||||
#include "lib/vfs/vfs.h" /* For vfs_translate_url() */
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/widget.h"
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
||||
#include "lib/skin.h"
|
||||
#include "lib/util.h"
|
||||
|
||||
#include "lib/vfs/mc-vfs/vfs.h" /* vfs_translate_url() */
|
||||
#include "lib/vfs/vfs.h" /* vfs_translate_url() */
|
||||
|
||||
#include "src/args.h"
|
||||
#include "src/subshell.h"
|
||||
|
@ -40,7 +40,7 @@
|
||||
#include "lib/strescape.h"
|
||||
#include "lib/filehighlight.h"
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/unixcompat.h"
|
||||
#include "lib/timefmt.h"
|
||||
#include "lib/util.h"
|
||||
|
@ -36,7 +36,7 @@
|
||||
#include "lib/global.h"
|
||||
|
||||
#include "lib/skin.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/mcconfig.h" /* Load/save directories panelize */
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
|
@ -45,7 +45,7 @@
|
||||
#include "lib/tty/mouse.h"
|
||||
#include "lib/tty/key.h"
|
||||
#include "lib/skin.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
#include "lib/global.h"
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/hook.h"
|
||||
#include "lib/util.h"
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include "lib/tty/tty.h"
|
||||
#include "lib/skin.h"
|
||||
#include "lib/search.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h"
|
||||
|
@ -50,7 +50,7 @@
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/util.h"
|
||||
#include "lib/vfs/mc-vfs/vfs.h" /* vfs_init(), vfs_shut() */
|
||||
#include "lib/vfs/vfs.h" /* vfs_init(), vfs_shut() */
|
||||
|
||||
#include "filemanager/midnight.h" /* current_panel */
|
||||
#include "filemanager/treestore.h" /* tree_store_save */
|
||||
@ -58,6 +58,8 @@
|
||||
#include "filemanager/ext.h" /* flush_extension_file() */
|
||||
#include "filemanager/command.h" /* cmdline */
|
||||
|
||||
#include "vfs/plugins_init.h"
|
||||
|
||||
#include "events_init.h"
|
||||
#include "args.h"
|
||||
#include "subshell.h"
|
||||
@ -445,6 +447,8 @@ main (int argc, char *argv[])
|
||||
str_init_strings (NULL);
|
||||
|
||||
vfs_init ();
|
||||
vfs_plugins_init();
|
||||
vfs_setup_work_dir ();
|
||||
|
||||
if (!mc_args_handle (argc, argv, "mc"))
|
||||
exit (EXIT_FAILURE);
|
||||
|
@ -36,13 +36,13 @@
|
||||
#include "lib/fileloc.h"
|
||||
#include "lib/timefmt.h"
|
||||
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
|
||||
#ifdef ENABLE_VFS_FTP
|
||||
#include "lib/vfs/mc-vfs/ftpfs.h"
|
||||
#include "src/vfs/ftpfs/ftpfs.h"
|
||||
#endif
|
||||
#ifdef ENABLE_VFS_FISH
|
||||
#include "lib/vfs/mc-vfs/fish.h"
|
||||
#include "src/vfs/fish/fish.h"
|
||||
#endif
|
||||
|
||||
#include "lib/util.h"
|
||||
|
@ -51,7 +51,7 @@
|
||||
|
||||
#include "lib/tty/tty.h" /* LINES */
|
||||
#include "lib/tty/key.h" /* XCTRL */
|
||||
#include "lib/vfs/mc-vfs/vfs.h"
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/strutil.h"
|
||||
#include "lib/mcconfig.h"
|
||||
#include "lib/util.h"
|
||||
|
489
src/vfs/COPYING.LGPL
Normal file
489
src/vfs/COPYING.LGPL
Normal file
@ -0,0 +1,489 @@
|
||||
|
||||
Please note that the VFS code when *not* linked with SAMBA is released
|
||||
under the GNU LGPL license.
|
||||
|
||||
If you link your VFS with the SAMBA sources, the resulting library is
|
||||
covered by the terms of the GNU GPL.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
47
src/vfs/Makefile.am
Normal file
47
src/vfs/Makefile.am
Normal file
@ -0,0 +1,47 @@
|
||||
noinst_LTLIBRARIES = libmc-vfs.la
|
||||
|
||||
AM_CFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
libmc_vfs_la_SOURCES = plugins_init.c plugins_init.h
|
||||
|
||||
SUBDIRS = local
|
||||
libmc_vfs_la_LIBADD = local/libvfs-local.la
|
||||
|
||||
if ENABLE_VFS_CPIO
|
||||
SUBDIRS += cpio
|
||||
libmc_vfs_la_LIBADD += cpio/libvfs-cpio.la
|
||||
endif
|
||||
|
||||
if ENABLE_VFS_EXTFS
|
||||
SUBDIRS += extfs
|
||||
libmc_vfs_la_LIBADD += extfs/libvfs-extfs.la
|
||||
endif
|
||||
|
||||
if ENABLE_VFS_FISH
|
||||
SUBDIRS += fish
|
||||
libmc_vfs_la_LIBADD += fish/libvfs-fish.la
|
||||
endif
|
||||
|
||||
if ENABLE_VFS_FTP
|
||||
SUBDIRS += ftpfs
|
||||
libmc_vfs_la_LIBADD += ftpfs/libvfs-ftpfs.la
|
||||
endif
|
||||
|
||||
if ENABLE_VFS_SFS
|
||||
SUBDIRS += sfs
|
||||
libmc_vfs_la_LIBADD += sfs/libvfs-sfs.la
|
||||
endif
|
||||
|
||||
if ENABLE_VFS_SMB
|
||||
SUBDIRS += smbfs
|
||||
libmc_vfs_la_LIBADD += smbfs/libvfs-smbfs.la
|
||||
endif
|
||||
|
||||
if ENABLE_VFS_TAR
|
||||
SUBDIRS += tar
|
||||
libmc_vfs_la_LIBADD += tar/libvfs-tar.la
|
||||
endif
|
||||
|
||||
if ENABLE_VFS_UNDELFS
|
||||
SUBDIRS += undelfs
|
||||
libmc_vfs_la_LIBADD += undelfs/libvfs-undelfs.la
|
||||
endif
|
7
src/vfs/cpio/Makefile.am
Normal file
7
src/vfs/cpio/Makefile.am
Normal file
@ -0,0 +1,7 @@
|
||||
AM_CFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
AM_CPPFLAGS =
|
||||
|
||||
noinst_LTLIBRARIES = libvfs-cpio.la
|
||||
|
||||
libvfs_cpio_la_SOURCES = \
|
||||
cpio.c cpio.h
|
@ -34,10 +34,12 @@
|
||||
#include "lib/util.h"
|
||||
#include "lib/widget.h" /* message() */
|
||||
|
||||
#include "vfs-impl.h"
|
||||
#include "utilvfs.h"
|
||||
#include "xdirentry.h"
|
||||
#include "gc.h" /* vfs_rmstamp */
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/vfs/utilvfs.h"
|
||||
#include "lib/vfs/xdirentry.h"
|
||||
#include "lib/vfs/gc.h" /* vfs_rmstamp */
|
||||
|
||||
#include "cpio.h"
|
||||
|
||||
/*** global variables ****************************************************************************/
|
||||
|
18
src/vfs/cpio/cpio.h
Normal file
18
src/vfs/cpio/cpio.h
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef MC__VFS_CPIO_H
|
||||
#define MC__VFS_CPIO_H
|
||||
|
||||
/*** typedefs(not structures) and defined constants **********************************************/
|
||||
|
||||
/*** enums ***************************************************************************************/
|
||||
|
||||
/*** structures declarations (and typedefs of structures)*****************************************/
|
||||
|
||||
/*** global variables defined in .c file *********************************************************/
|
||||
|
||||
/*** declarations of public functions ************************************************************/
|
||||
|
||||
void init_cpiofs(void);
|
||||
|
||||
/*** inline functions ****************************************************************************/
|
||||
|
||||
#endif /* MC__VFS_CPIO_H */
|
10
src/vfs/extfs/Makefile.am
Normal file
10
src/vfs/extfs/Makefile.am
Normal file
@ -0,0 +1,10 @@
|
||||
SUBDIRS = helpers
|
||||
DIST_SUBDIRS = helpers
|
||||
|
||||
AM_CFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
|
||||
AM_CPPFLAGS = -DLIBEXECDIR=\""$(libexecdir)/@PACKAGE@/"\"
|
||||
|
||||
noinst_LTLIBRARIES = libvfs-extfs.la
|
||||
|
||||
libvfs_extfs_la_SOURCES = \
|
||||
extfs.c extfs.h
|
@ -55,9 +55,11 @@
|
||||
#include "src/main.h" /* shell */
|
||||
#include "src/execute.h" /* For shell_execute */
|
||||
|
||||
#include "vfs-impl.h"
|
||||
#include "utilvfs.h"
|
||||
#include "gc.h" /* vfs_rmstamp */
|
||||
#include "lib/vfs/vfs.h"
|
||||
#include "lib/vfs/utilvfs.h"
|
||||
#include "lib/vfs/gc.h" /* vfs_rmstamp */
|
||||
|
||||
#include "extfs.h"
|
||||
|
||||
/*** global variables ****************************************************************************/
|
||||
|
18
src/vfs/extfs/extfs.h
Normal file
18
src/vfs/extfs/extfs.h
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef MC__VFS_EXTFS_H
|
||||
#define MC__VFS_EXTFS_H
|
||||
|
||||
/*** typedefs(not structures) and defined constants **********************************************/
|
||||
|
||||
/*** enums ***************************************************************************************/
|
||||
|
||||
/*** structures declarations (and typedefs of structures)*****************************************/
|
||||
|
||||
/*** global variables defined in .c file *********************************************************/
|
||||
|
||||
/*** declarations of public functions ************************************************************/
|
||||
|
||||
void init_extfs(void);
|
||||
|
||||
/*** inline functions ****************************************************************************/
|
||||
|
||||
#endif /* MC__VFS_CPIO_H */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user