mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
* vfs.h: Remove typedef vfs, it's too ambiguous. Massive
changes to use struct vfs_class instead.
This commit is contained in:
parent
4b1ec7399b
commit
00b57fd4bf
@ -1,5 +1,8 @@
|
||||
2003-10-11 Pavel Roskin <proski@gnu.org>
|
||||
|
||||
* vfs.h: Remove typedef vfs, it's too ambiguous. Massive
|
||||
changes to use struct vfs_class instead.
|
||||
|
||||
* vfs.c (vfs_setup_wd): Initialize current_vfs here, not
|
||||
globally.
|
||||
(vfs_type_from_op): Rename to vfs_prefix_to_class(), avoid using
|
||||
|
38
vfs/cpio.c
38
vfs/cpio.c
@ -89,11 +89,11 @@ struct defer_inode {
|
||||
|
||||
static int cpio_position;
|
||||
|
||||
static int cpio_find_head(vfs *me, vfs_s_super *super);
|
||||
static int cpio_read_bin_head(vfs *me, vfs_s_super *super);
|
||||
static int cpio_read_oldc_head(vfs *me, vfs_s_super *super);
|
||||
static int cpio_read_crc_head(vfs *me, vfs_s_super *super);
|
||||
static int cpio_create_entry(vfs *me, vfs_s_super *super, struct stat *stat, char *name);
|
||||
static int cpio_find_head(struct vfs_class *me, vfs_s_super *super);
|
||||
static int cpio_read_bin_head(struct vfs_class *me, vfs_s_super *super);
|
||||
static int cpio_read_oldc_head(struct vfs_class *me, vfs_s_super *super);
|
||||
static int cpio_read_crc_head(struct vfs_class *me, vfs_s_super *super);
|
||||
static int cpio_create_entry(struct vfs_class *me, vfs_s_super *super, struct stat *stat, char *name);
|
||||
static int cpio_read(void *fh, char *buffer, int count);
|
||||
|
||||
#define CPIO_POS(super) cpio_position
|
||||
@ -127,13 +127,13 @@ static int cpio_skip_padding(vfs_s_super *super)
|
||||
}
|
||||
}
|
||||
|
||||
static void cpio_free_archive(vfs *me, vfs_s_super *super)
|
||||
static void cpio_free_archive(struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
if(super->u.cpio.fd != -1)
|
||||
mc_close(super->u.cpio.fd);
|
||||
}
|
||||
|
||||
static int cpio_open_cpio_file(vfs *me, vfs_s_super *super, char *name)
|
||||
static int cpio_open_cpio_file(struct vfs_class *me, vfs_s_super *super, char *name)
|
||||
{
|
||||
int fd, type;
|
||||
mode_t mode;
|
||||
@ -182,7 +182,7 @@ static int cpio_open_cpio_file(vfs *me, vfs_s_super *super, char *name)
|
||||
return fd;
|
||||
}
|
||||
|
||||
static int cpio_read_head(vfs *me, vfs_s_super *super)
|
||||
static int cpio_read_head(struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
switch(cpio_find_head(me, super)) {
|
||||
case CPIO_UNKNOWN:
|
||||
@ -205,7 +205,7 @@ static int cpio_read_head(vfs *me, vfs_s_super *super)
|
||||
#define SEEKBACK CPIO_SEEK_CUR(super, ptr - top)
|
||||
#define RETURN(x) return(super->u.cpio.type = (x))
|
||||
#define TYPEIS(x) ((super->u.cpio.type == CPIO_UNKNOWN) || (super->u.cpio.type == (x)))
|
||||
static int cpio_find_head(vfs *me, vfs_s_super *super)
|
||||
static int cpio_find_head(struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
char buf[256];
|
||||
int ptr = 0;
|
||||
@ -246,7 +246,7 @@ static int cpio_find_head(vfs *me, vfs_s_super *super)
|
||||
#undef SEEKBACK
|
||||
|
||||
#define HEAD_LENGTH (26)
|
||||
static int cpio_read_bin_head(vfs *me, vfs_s_super *super)
|
||||
static int cpio_read_bin_head(struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
struct old_cpio_header buf;
|
||||
int len;
|
||||
@ -291,7 +291,7 @@ static int cpio_read_bin_head(vfs *me, vfs_s_super *super)
|
||||
#undef HEAD_LENGTH
|
||||
|
||||
#define HEAD_LENGTH (76)
|
||||
static int cpio_read_oldc_head(vfs *me, vfs_s_super *super)
|
||||
static int cpio_read_oldc_head(struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
struct new_cpio_header hd;
|
||||
struct stat stat;
|
||||
@ -340,7 +340,7 @@ static int cpio_read_oldc_head(vfs *me, vfs_s_super *super)
|
||||
#undef HEAD_LENGTH
|
||||
|
||||
#define HEAD_LENGTH (110)
|
||||
static int cpio_read_crc_head(vfs *me, vfs_s_super *super)
|
||||
static int cpio_read_crc_head(struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
struct new_cpio_header hd;
|
||||
struct stat stat;
|
||||
@ -393,7 +393,7 @@ static int cpio_read_crc_head(vfs *me, vfs_s_super *super)
|
||||
return cpio_create_entry(me, super, &stat, name);
|
||||
}
|
||||
|
||||
static int cpio_create_entry(vfs *me, vfs_s_super *super, struct stat *stat, char *name)
|
||||
static int cpio_create_entry(struct vfs_class *me, vfs_s_super *super, struct stat *stat, char *name)
|
||||
{
|
||||
vfs_s_inode *inode = NULL;
|
||||
vfs_s_inode *root = super->root;
|
||||
@ -509,7 +509,7 @@ static int cpio_create_entry(vfs *me, vfs_s_super *super, struct stat *stat, cha
|
||||
|
||||
/* Need to CPIO_SEEK_CUR to skip the file at the end of add entry!!!! */
|
||||
|
||||
static int cpio_open_archive(vfs *me, vfs_s_super *super, char *name, char *op)
|
||||
static int cpio_open_archive(struct vfs_class *me, vfs_s_super *super, char *name, char *op)
|
||||
{
|
||||
int status = STATUS_START;
|
||||
|
||||
@ -535,7 +535,7 @@ static int cpio_open_archive(vfs *me, vfs_s_super *super, char *name, char *op)
|
||||
}
|
||||
|
||||
/* Remaining functions are exactly same as for tarfs (and were in fact just copied) */
|
||||
static void *cpio_super_check(vfs *me, char *archive_name, char *op)
|
||||
static void *cpio_super_check(struct vfs_class *me, char *archive_name, char *op)
|
||||
{
|
||||
static struct stat sb;
|
||||
if(mc_stat(archive_name, &sb))
|
||||
@ -544,7 +544,7 @@ static void *cpio_super_check(vfs *me, char *archive_name, char *op)
|
||||
}
|
||||
|
||||
static int
|
||||
cpio_super_same (vfs *me, struct vfs_s_super *parc, char *archive_name,
|
||||
cpio_super_same (struct vfs_class *me, struct vfs_s_super *parc, char *archive_name,
|
||||
char *op, void *cookie)
|
||||
{
|
||||
struct stat *archive_stat = cookie; /* stat of main archive */
|
||||
@ -568,7 +568,7 @@ static int cpio_read(void *fh, char *buffer, int count)
|
||||
{
|
||||
off_t begin = FH->ino->u.tar.data_offset;
|
||||
int fd = FH_SUPER->u.tar.fd;
|
||||
vfs *me = FH_SUPER->me;
|
||||
struct vfs_class *me = FH_SUPER->me;
|
||||
|
||||
if (mc_lseek (fd, begin + FH->pos, SEEK_SET) !=
|
||||
begin + FH->pos) ERRNOR (EIO, -1);
|
||||
@ -581,14 +581,14 @@ static int cpio_read(void *fh, char *buffer, int count)
|
||||
return count;
|
||||
}
|
||||
|
||||
static int cpio_ungetlocalcopy(vfs *me, char *path, char *local, int has_changed)
|
||||
static int cpio_ungetlocalcopy(struct vfs_class *me, char *path, char *local, int has_changed)
|
||||
{
|
||||
/* We do just nothing. (We are read only and do not need to free local,
|
||||
since it will be freed when tar archive will be freed */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cpio_fh_open(vfs *me, vfs_s_fh *fh, int flags, int mode)
|
||||
static int cpio_fh_open(struct vfs_class *me, vfs_s_fh *fh, int flags, int mode)
|
||||
{
|
||||
if ((flags & O_ACCMODE) != O_RDONLY) ERRNOR (EROFS, -1);
|
||||
return 0;
|
||||
|
@ -34,11 +34,11 @@
|
||||
|
||||
static volatile int total_inodes = 0, total_entries = 0;
|
||||
|
||||
static vfs_s_entry *vfs_s_resolve_symlink (vfs * me, vfs_s_entry * entry,
|
||||
static vfs_s_entry *vfs_s_resolve_symlink (struct vfs_class * me, vfs_s_entry * entry,
|
||||
char *path, int follow);
|
||||
|
||||
vfs_s_inode *
|
||||
vfs_s_new_inode (vfs *me, vfs_s_super *super, struct stat *initstat)
|
||||
vfs_s_new_inode (struct vfs_class *me, vfs_s_super *super, struct stat *initstat)
|
||||
{
|
||||
vfs_s_inode *ino;
|
||||
|
||||
@ -62,7 +62,7 @@ vfs_s_new_inode (vfs *me, vfs_s_super *super, struct stat *initstat)
|
||||
}
|
||||
|
||||
vfs_s_entry *
|
||||
vfs_s_new_entry (vfs *me, char *name, vfs_s_inode *inode)
|
||||
vfs_s_new_entry (struct vfs_class *me, char *name, vfs_s_inode *inode)
|
||||
{
|
||||
vfs_s_entry *entry;
|
||||
|
||||
@ -80,7 +80,7 @@ vfs_s_new_entry (vfs *me, char *name, vfs_s_inode *inode)
|
||||
}
|
||||
|
||||
static void
|
||||
vfs_s_free_inode (vfs *me, vfs_s_inode *ino)
|
||||
vfs_s_free_inode (struct vfs_class *me, vfs_s_inode *ino)
|
||||
{
|
||||
if (!ino)
|
||||
vfs_die ("Don't pass NULL to me");
|
||||
@ -104,7 +104,7 @@ vfs_s_free_inode (vfs *me, vfs_s_inode *ino)
|
||||
}
|
||||
|
||||
void
|
||||
vfs_s_free_entry (vfs *me, vfs_s_entry *ent)
|
||||
vfs_s_free_entry (struct vfs_class *me, vfs_s_entry *ent)
|
||||
{
|
||||
int is_dot = 0;
|
||||
if (ent->prevp){ /* It is possible that we are deleting freshly created entry */
|
||||
@ -130,7 +130,7 @@ vfs_s_free_entry (vfs *me, vfs_s_entry *ent)
|
||||
}
|
||||
|
||||
void
|
||||
vfs_s_insert_entry (vfs *me, vfs_s_inode *dir, vfs_s_entry *ent)
|
||||
vfs_s_insert_entry (struct vfs_class *me, vfs_s_inode *dir, vfs_s_entry *ent)
|
||||
{
|
||||
vfs_s_entry **ep;
|
||||
|
||||
@ -145,7 +145,7 @@ vfs_s_insert_entry (vfs *me, vfs_s_inode *dir, vfs_s_entry *ent)
|
||||
}
|
||||
|
||||
struct stat *
|
||||
vfs_s_default_stat (vfs *me, mode_t mode)
|
||||
vfs_s_default_stat (struct vfs_class *me, mode_t mode)
|
||||
{
|
||||
static struct stat st;
|
||||
int myumask;
|
||||
@ -167,7 +167,7 @@ vfs_s_default_stat (vfs *me, mode_t mode)
|
||||
}
|
||||
|
||||
void
|
||||
vfs_s_add_dots (vfs *me, vfs_s_inode *dir, vfs_s_inode *parent)
|
||||
vfs_s_add_dots (struct vfs_class *me, vfs_s_inode *dir, vfs_s_inode *parent)
|
||||
{
|
||||
struct vfs_s_entry *dot, *dotdot;
|
||||
|
||||
@ -182,7 +182,7 @@ vfs_s_add_dots (vfs *me, vfs_s_inode *dir, vfs_s_inode *parent)
|
||||
}
|
||||
|
||||
struct vfs_s_entry *
|
||||
vfs_s_generate_entry (vfs *me, char *name, struct vfs_s_inode *parent, mode_t mode)
|
||||
vfs_s_generate_entry (struct vfs_class *me, char *name, struct vfs_s_inode *parent, mode_t mode)
|
||||
{
|
||||
struct vfs_s_inode *inode;
|
||||
struct stat *st;
|
||||
@ -197,7 +197,7 @@ vfs_s_generate_entry (vfs *me, char *name, struct vfs_s_inode *parent, mode_t mo
|
||||
|
||||
/* We were asked to create entries automagically */
|
||||
static vfs_s_entry *
|
||||
vfs_s_automake (vfs *me, vfs_s_inode *dir, char *path, int flags)
|
||||
vfs_s_automake (struct vfs_class *me, vfs_s_inode *dir, char *path, int flags)
|
||||
{
|
||||
struct vfs_s_entry *res;
|
||||
char *sep = strchr (path, PATH_SEP);
|
||||
@ -218,7 +218,7 @@ vfs_s_automake (vfs *me, vfs_s_inode *dir, char *path, int flags)
|
||||
* == -1: do not follow links
|
||||
*/
|
||||
vfs_s_entry *
|
||||
vfs_s_find_entry_tree (vfs *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
vfs_s_find_entry_tree (struct vfs_class *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
{
|
||||
unsigned int pseg;
|
||||
vfs_s_entry *ent = NULL;
|
||||
@ -259,7 +259,7 @@ vfs_s_find_entry_tree (vfs *me, vfs_s_inode *root, char *path, int follow, int f
|
||||
}
|
||||
|
||||
static void
|
||||
split_dir_name (vfs *me, char *path, char **dir, char **name, char **save)
|
||||
split_dir_name (struct vfs_class *me, char *path, char **dir, char **name, char **save)
|
||||
{
|
||||
char *s;
|
||||
s = strrchr (path, PATH_SEP);
|
||||
@ -276,7 +276,7 @@ split_dir_name (vfs *me, char *path, char **dir, char **name, char **save)
|
||||
}
|
||||
|
||||
vfs_s_entry *
|
||||
vfs_s_find_entry_linear (vfs *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
vfs_s_find_entry_linear (struct vfs_class *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
{
|
||||
vfs_s_entry* ent = NULL;
|
||||
|
||||
@ -332,7 +332,7 @@ vfs_s_find_entry_linear (vfs *me, vfs_s_inode *root, char *path, int follow, int
|
||||
}
|
||||
|
||||
vfs_s_inode *
|
||||
vfs_s_find_inode (vfs *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
vfs_s_find_inode (struct vfs_class *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
{
|
||||
vfs_s_entry *ent;
|
||||
if ((MEDATA->find_entry == vfs_s_find_entry_tree) && (!*path))
|
||||
@ -344,7 +344,7 @@ vfs_s_find_inode (vfs *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
}
|
||||
|
||||
static vfs_s_entry *
|
||||
vfs_s_resolve_symlink (vfs *me, vfs_s_entry *entry, char *path, int follow)
|
||||
vfs_s_resolve_symlink (struct vfs_class *me, vfs_s_entry *entry, char *path, int follow)
|
||||
{
|
||||
char buf[MC_MAXPATHLEN], *linkname;
|
||||
|
||||
@ -402,7 +402,7 @@ vfs_s_resolve_symlink (vfs *me, vfs_s_entry *entry, char *path, int follow)
|
||||
/* -------------------------------- superblock games -------------------------- */
|
||||
|
||||
static vfs_s_super *
|
||||
vfs_s_new_super (vfs *me)
|
||||
vfs_s_new_super (struct vfs_class *me)
|
||||
{
|
||||
vfs_s_super *super;
|
||||
|
||||
@ -412,7 +412,7 @@ vfs_s_new_super (vfs *me)
|
||||
}
|
||||
|
||||
static void
|
||||
vfs_s_insert_super (vfs *me, vfs_s_super *super)
|
||||
vfs_s_insert_super (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
super->next = MEDATA->supers;
|
||||
super->prevp = &MEDATA->supers;
|
||||
@ -423,7 +423,7 @@ vfs_s_insert_super (vfs *me, vfs_s_super *super)
|
||||
}
|
||||
|
||||
static void
|
||||
vfs_s_free_super (vfs *me, vfs_s_super *super)
|
||||
vfs_s_free_super (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
if (super->root){
|
||||
vfs_s_free_inode (me, super->root);
|
||||
@ -456,10 +456,10 @@ vfs_s_free_super (vfs *me, vfs_s_super *super)
|
||||
/* ------------------------------------------------------------------------= */
|
||||
|
||||
static void
|
||||
vfs_s_stamp_me (vfs *me, struct vfs_s_super *psup, char *fs_name)
|
||||
vfs_s_stamp_me (struct vfs_class *me, struct vfs_s_super *psup, char *fs_name)
|
||||
{
|
||||
struct vfs_stamping *parent;
|
||||
vfs *v;
|
||||
struct vfs_class *v;
|
||||
|
||||
v = vfs_get_class (fs_name);
|
||||
if (v->flags & VFSF_LOCAL){
|
||||
@ -474,7 +474,7 @@ vfs_s_stamp_me (vfs *me, struct vfs_s_super *psup, char *fs_name)
|
||||
}
|
||||
|
||||
char *
|
||||
vfs_s_get_path_mangle (vfs *me, char *inname, struct vfs_s_super **archive, int flags)
|
||||
vfs_s_get_path_mangle (struct vfs_class *me, char *inname, struct vfs_s_super **archive, int flags)
|
||||
{
|
||||
char *local, *op, *archive_name;
|
||||
int result = -1;
|
||||
@ -521,7 +521,7 @@ return_success:
|
||||
}
|
||||
|
||||
static char *
|
||||
vfs_s_get_path (vfs *me, const char *inname, struct vfs_s_super **archive, int flags)
|
||||
vfs_s_get_path (struct vfs_class *me, const char *inname, struct vfs_s_super **archive, int flags)
|
||||
{
|
||||
char *buf = g_strdup( inname );
|
||||
char *res = vfs_s_get_path_mangle (me, buf, archive, flags);
|
||||
@ -532,7 +532,7 @@ vfs_s_get_path (vfs *me, const char *inname, struct vfs_s_super **archive, int f
|
||||
}
|
||||
|
||||
void
|
||||
vfs_s_invalidate (vfs *me, vfs_s_super *super)
|
||||
vfs_s_invalidate (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
if (!super->want_stale){
|
||||
vfs_s_free_inode (me, super->root);
|
||||
@ -541,7 +541,7 @@ vfs_s_invalidate (vfs *me, vfs_s_super *super)
|
||||
}
|
||||
|
||||
char *
|
||||
vfs_s_fullpath (vfs *me, vfs_s_inode *ino)
|
||||
vfs_s_fullpath (struct vfs_class *me, vfs_s_inode *ino)
|
||||
{
|
||||
/* For now, usable only on filesystems with _linear structure */
|
||||
if (MEDATA->find_entry != vfs_s_find_entry_linear)
|
||||
@ -560,7 +560,7 @@ vfs_s_fullpath (vfs *me, vfs_s_inode *ino)
|
||||
/* ------------------------ readdir & friends ----------------------------- */
|
||||
|
||||
static vfs_s_inode *
|
||||
vfs_s_inode_from_path (vfs *me, char *name, int flags)
|
||||
vfs_s_inode_from_path (struct vfs_class *me, char *name, int flags)
|
||||
{
|
||||
struct vfs_s_super *super;
|
||||
struct vfs_s_inode *ino;
|
||||
@ -582,7 +582,7 @@ struct dirhandle {
|
||||
};
|
||||
|
||||
static void *
|
||||
vfs_s_opendir (vfs *me, char *dirname)
|
||||
vfs_s_opendir (struct vfs_class *me, char *dirname)
|
||||
{
|
||||
struct vfs_s_inode *dir;
|
||||
struct dirhandle *info;
|
||||
@ -666,7 +666,7 @@ vfs_s_closedir (void *data)
|
||||
}
|
||||
|
||||
static int
|
||||
vfs_s_chdir (vfs *me, char *path)
|
||||
vfs_s_chdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
void *data;
|
||||
if (!(data = vfs_s_opendir (me, path)))
|
||||
@ -678,7 +678,7 @@ vfs_s_chdir (vfs *me, char *path)
|
||||
/* --------------------------- stat and friends ---------------------------- */
|
||||
|
||||
static int
|
||||
vfs_s_internal_stat (vfs *me, char *path, struct stat *buf, int flag)
|
||||
vfs_s_internal_stat (struct vfs_class *me, char *path, struct stat *buf, int flag)
|
||||
{
|
||||
struct vfs_s_inode *ino;
|
||||
|
||||
@ -689,13 +689,13 @@ vfs_s_internal_stat (vfs *me, char *path, struct stat *buf, int flag)
|
||||
}
|
||||
|
||||
static int
|
||||
vfs_s_stat (vfs *me, char *path, struct stat *buf)
|
||||
vfs_s_stat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
return vfs_s_internal_stat (me, path, buf, FL_FOLLOW);
|
||||
}
|
||||
|
||||
static int
|
||||
vfs_s_lstat (vfs *me, char *path, struct stat *buf)
|
||||
vfs_s_lstat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
return vfs_s_internal_stat (me, path, buf, FL_NONE);
|
||||
}
|
||||
@ -708,7 +708,7 @@ vfs_s_fstat (void *fh, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
vfs_s_readlink (vfs *me, char *path, char *buf, int size)
|
||||
vfs_s_readlink (struct vfs_class *me, char *path, char *buf, int size)
|
||||
{
|
||||
struct vfs_s_inode *ino;
|
||||
|
||||
@ -728,7 +728,7 @@ vfs_s_readlink (vfs *me, char *path, char *buf, int size)
|
||||
}
|
||||
|
||||
static void *
|
||||
vfs_s_open (vfs *me, char *file, int flags, int mode)
|
||||
vfs_s_open (struct vfs_class *me, char *file, int flags, int mode)
|
||||
{
|
||||
int was_changed = 0;
|
||||
struct vfs_s_fh *fh;
|
||||
@ -809,7 +809,7 @@ static int
|
||||
vfs_s_read (void *fh, char *buffer, int count)
|
||||
{
|
||||
int n;
|
||||
vfs *me = FH_SUPER->me;
|
||||
struct vfs_class *me = FH_SUPER->me;
|
||||
|
||||
if (FH->linear == LS_LINEAR_CLOSED)
|
||||
vfs_die ("linear_start() did not set linear_state!");
|
||||
@ -831,7 +831,7 @@ static int
|
||||
vfs_s_write (void *fh, char *buffer, int count)
|
||||
{
|
||||
int n;
|
||||
vfs *me = FH_SUPER->me;
|
||||
struct vfs_class *me = FH_SUPER->me;
|
||||
|
||||
if (FH->linear)
|
||||
vfs_die ("no writing to linear files, please");
|
||||
@ -878,12 +878,12 @@ static int
|
||||
vfs_s_close (void *fh)
|
||||
{
|
||||
int res = 0;
|
||||
vfs *me = FH_SUPER->me;
|
||||
struct vfs_class *me = FH_SUPER->me;
|
||||
|
||||
FH_SUPER->fd_usage--;
|
||||
if (!FH_SUPER->fd_usage){
|
||||
struct vfs_stamping *parent;
|
||||
vfs *v;
|
||||
struct vfs_class *v;
|
||||
|
||||
v = vfs_get_class (FH_SUPER->name);
|
||||
if (v->flags & VFSF_LOCAL) {
|
||||
@ -919,7 +919,7 @@ vfs_s_close (void *fh)
|
||||
}
|
||||
|
||||
int
|
||||
vfs_s_retrieve_file (vfs *me, struct vfs_s_inode *ino)
|
||||
vfs_s_retrieve_file (struct vfs_class *me, struct vfs_s_inode *ino)
|
||||
{
|
||||
/* If you want reget, you'll have to open file with O_LINEAR */
|
||||
off_t total = 0;
|
||||
@ -984,7 +984,7 @@ vfs_s_retrieve_file (vfs *me, struct vfs_s_inode *ino)
|
||||
/* ------------------------------- mc support ---------------------------- */
|
||||
|
||||
static void
|
||||
vfs_s_fill_names (vfs *me, void (*func)(char *))
|
||||
vfs_s_fill_names (struct vfs_class *me, void (*func)(char *))
|
||||
{
|
||||
struct vfs_s_super *a = MEDATA->supers;
|
||||
char *name;
|
||||
@ -998,13 +998,13 @@ vfs_s_fill_names (vfs *me, void (*func)(char *))
|
||||
}
|
||||
|
||||
static int
|
||||
vfs_s_ferrno (vfs *me)
|
||||
vfs_s_ferrno (struct vfs_class *me)
|
||||
{
|
||||
return me->verrno;
|
||||
}
|
||||
|
||||
static char *
|
||||
vfs_s_getlocalcopy (vfs *me, char *path)
|
||||
vfs_s_getlocalcopy (struct vfs_class *me, char *path)
|
||||
{
|
||||
struct vfs_s_inode *ino;
|
||||
char buf[MC_MAXPATHLEN];
|
||||
@ -1019,7 +1019,7 @@ vfs_s_getlocalcopy (vfs *me, char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
vfs_s_setctl (vfs *me, char *path, int ctlop, char *arg)
|
||||
vfs_s_setctl (struct vfs_class *me, char *path, int ctlop, char *arg)
|
||||
{
|
||||
vfs_s_inode *ino = vfs_s_inode_from_path (me, path, 0);
|
||||
if (!ino)
|
||||
@ -1047,10 +1047,10 @@ vfs_s_setctl (vfs *me, char *path, int ctlop, char *arg)
|
||||
/* ----------------------------- Stamping support -------------------------- */
|
||||
|
||||
static vfsid
|
||||
vfs_s_getid (vfs *me, const char *path, struct vfs_stamping **parent)
|
||||
vfs_s_getid (struct vfs_class *me, const char *path, struct vfs_stamping **parent)
|
||||
{
|
||||
vfs_s_super *archive;
|
||||
vfs *v;
|
||||
struct vfs_class *v;
|
||||
char *p;
|
||||
vfsid id;
|
||||
struct vfs_stamping *par;
|
||||
@ -1138,7 +1138,7 @@ vfs_s_select_on_two (int fd1, int fd2)
|
||||
}
|
||||
|
||||
int
|
||||
vfs_s_get_line (vfs *me, int sock, char *buf, int buf_len, char term)
|
||||
vfs_s_get_line (struct vfs_class *me, int sock, char *buf, int buf_len, char term)
|
||||
{
|
||||
FILE *logfile = MEDATA->logfile;
|
||||
int i, status;
|
||||
@ -1171,7 +1171,7 @@ vfs_s_get_line (vfs *me, int sock, char *buf, int buf_len, char term)
|
||||
}
|
||||
|
||||
int
|
||||
vfs_s_get_line_interruptible (vfs *me, char *buffer, int size, int fd)
|
||||
vfs_s_get_line_interruptible (struct vfs_class *me, char *buffer, int size, int fd)
|
||||
{
|
||||
int n;
|
||||
int i;
|
||||
|
50
vfs/extfs.c
50
vfs/extfs.c
@ -79,7 +79,7 @@ struct pseudofile {
|
||||
|
||||
static struct entry *
|
||||
find_entry (struct entry *dir, char *name, int make_dirs, int make_file);
|
||||
static int extfs_which (vfs *me, char *path);
|
||||
static int extfs_which (struct vfs_class *me, char *path);
|
||||
static void remove_entry (struct entry *e);
|
||||
static void extfs_free (vfsid id);
|
||||
|
||||
@ -91,7 +91,7 @@ static char *extfs_prefixes [MAXEXTFS];
|
||||
static char extfs_need_archive [MAXEXTFS];
|
||||
static int extfs_no = 0;
|
||||
|
||||
static void extfs_fill_names (vfs *me, void (*func)(char *))
|
||||
static void extfs_fill_names (struct vfs_class *me, void (*func)(char *))
|
||||
{
|
||||
struct archive *a = first_archive;
|
||||
char *name;
|
||||
@ -418,7 +418,7 @@ get_path_mangle (char *inname, struct archive **archive, int is_dir,
|
||||
int result = -1;
|
||||
struct archive *parc;
|
||||
struct vfs_stamping *parent;
|
||||
vfs *v;
|
||||
struct vfs_class *v;
|
||||
int fstype;
|
||||
|
||||
archive_name = inname;
|
||||
@ -426,7 +426,7 @@ get_path_mangle (char *inname, struct archive **archive, int is_dir,
|
||||
|
||||
/*
|
||||
* FIXME: we really should pass self pointer. But as we know that
|
||||
* extfs_which does not touch vfs *me, it does not matter for now
|
||||
* extfs_which does not touch struct vfs_class *me, it does not matter for now
|
||||
*/
|
||||
fstype = extfs_which (NULL, op);
|
||||
|
||||
@ -641,7 +641,7 @@ extfs_run (char *file)
|
||||
}
|
||||
|
||||
static void *
|
||||
extfs_open (vfs *me, char *file, int flags, int mode)
|
||||
extfs_open (struct vfs_class *me, char *file, int flags, int mode)
|
||||
{
|
||||
struct pseudofile *extfs_info;
|
||||
struct archive *archive;
|
||||
@ -747,7 +747,7 @@ extfs_close (void *data)
|
||||
file->archive->fd_usage--;
|
||||
if (!file->archive->fd_usage) {
|
||||
struct vfs_stamping *parent;
|
||||
vfs *v;
|
||||
struct vfs_class *v;
|
||||
|
||||
if (!file->archive->name || !*file->archive->name
|
||||
|| (v =
|
||||
@ -863,12 +863,12 @@ static struct entry *find_entry (struct entry *dir, char *name, int make_dirs, i
|
||||
}
|
||||
|
||||
|
||||
static int s_errno (vfs *me)
|
||||
static int s_errno (struct vfs_class *me)
|
||||
{
|
||||
return my_errno;
|
||||
}
|
||||
|
||||
static void * s_opendir (vfs *me, char *dirname)
|
||||
static void * s_opendir (struct vfs_class *me, char *dirname)
|
||||
{
|
||||
struct archive *archive;
|
||||
char *q;
|
||||
@ -980,12 +980,12 @@ static int s_internal_stat (char *path, struct stat *buf, int resolve)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int s_stat (vfs *me, char *path, struct stat *buf)
|
||||
static int s_stat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
return s_internal_stat (path, buf, 1);
|
||||
}
|
||||
|
||||
static int s_lstat (vfs *me, char *path, struct stat *buf)
|
||||
static int s_lstat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
return s_internal_stat (path, buf, 0);
|
||||
}
|
||||
@ -1001,7 +1001,7 @@ static int s_fstat (void *data, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
s_readlink (vfs *me, char *path, char *buf, int size)
|
||||
s_readlink (struct vfs_class *me, char *path, char *buf, int size)
|
||||
{
|
||||
struct archive *archive;
|
||||
char *q;
|
||||
@ -1022,7 +1022,7 @@ s_readlink (vfs *me, char *path, char *buf, int size)
|
||||
return i;
|
||||
}
|
||||
|
||||
static int extfs_chmod (vfs *me, char *path, int mode)
|
||||
static int extfs_chmod (struct vfs_class *me, char *path, int mode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -1035,7 +1035,7 @@ static int extfs_write (void *data, char *buf, int nbyte)
|
||||
return write (file->local_handle, buf, nbyte);
|
||||
}
|
||||
|
||||
static int extfs_unlink (vfs *me, char *file)
|
||||
static int extfs_unlink (struct vfs_class *me, char *file)
|
||||
{
|
||||
struct archive *archive;
|
||||
char *q;
|
||||
@ -1059,7 +1059,7 @@ static int extfs_unlink (vfs *me, char *file)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int extfs_mkdir (vfs *me, char *path, mode_t mode)
|
||||
static int extfs_mkdir (struct vfs_class *me, char *path, mode_t mode)
|
||||
{
|
||||
struct archive *archive;
|
||||
char *q;
|
||||
@ -1085,7 +1085,7 @@ static int extfs_mkdir (vfs *me, char *path, mode_t mode)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int extfs_rmdir (vfs *me, char *path)
|
||||
static int extfs_rmdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
struct archive *archive;
|
||||
char *q;
|
||||
@ -1109,7 +1109,7 @@ static int extfs_rmdir (vfs *me, char *path)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int extfs_chdir (vfs *me, char *path)
|
||||
static int extfs_chdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
struct archive *archive;
|
||||
char *q;
|
||||
@ -1136,10 +1136,10 @@ static int extfs_lseek (void *data, off_t offset, int whence)
|
||||
return lseek (file->local_handle, offset, whence);
|
||||
}
|
||||
|
||||
static vfsid extfs_getid (vfs *me, const char *path, struct vfs_stamping **parent)
|
||||
static vfsid extfs_getid (struct vfs_class *me, const char *path, struct vfs_stamping **parent)
|
||||
{
|
||||
struct archive *archive;
|
||||
vfs *v;
|
||||
struct vfs_class *v;
|
||||
vfsid id;
|
||||
struct vfs_stamping *par;
|
||||
char *p;
|
||||
@ -1251,7 +1251,7 @@ static void extfs_free (vfsid id)
|
||||
free_archive (archive);
|
||||
}
|
||||
|
||||
static char *extfs_getlocalcopy (vfs *me, char *path)
|
||||
static char *extfs_getlocalcopy (struct vfs_class *me, char *path)
|
||||
{
|
||||
struct pseudofile *fp =
|
||||
(struct pseudofile *) extfs_open (me, path, O_RDONLY, 0);
|
||||
@ -1269,7 +1269,7 @@ static char *extfs_getlocalcopy (vfs *me, char *path)
|
||||
return p;
|
||||
}
|
||||
|
||||
static int extfs_ungetlocalcopy (vfs *me, char *path, char *local, int has_changed)
|
||||
static int extfs_ungetlocalcopy (struct vfs_class *me, char *path, char *local, int has_changed)
|
||||
{
|
||||
struct pseudofile *fp =
|
||||
(struct pseudofile *) extfs_open (me, path, O_RDONLY, 0);
|
||||
@ -1289,7 +1289,7 @@ static int extfs_ungetlocalcopy (vfs *me, char *path, char *local, int has_chang
|
||||
}
|
||||
|
||||
|
||||
static int extfs_init (vfs *me)
|
||||
static int extfs_init (struct vfs_class *me)
|
||||
{
|
||||
FILE *cfg;
|
||||
char *mc_extfsini;
|
||||
@ -1349,7 +1349,7 @@ static int extfs_init (vfs *me)
|
||||
}
|
||||
|
||||
/* Do NOT use me argument in this function */
|
||||
static int extfs_which (vfs *me, char *path)
|
||||
static int extfs_which (struct vfs_class *me, char *path)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -1359,7 +1359,7 @@ static int extfs_which (vfs *me, char *path)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void extfs_done (vfs *me)
|
||||
static void extfs_done (struct vfs_class *me)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -1368,7 +1368,7 @@ static void extfs_done (vfs *me)
|
||||
extfs_no = 0;
|
||||
}
|
||||
|
||||
static int extfs_setctl (vfs *me, char *path, int ctlop, char *arg)
|
||||
static int extfs_setctl (struct vfs_class *me, char *path, int ctlop, char *arg)
|
||||
{
|
||||
if (ctlop == MCCTL_EXTFS_RUN) {
|
||||
extfs_run (path);
|
||||
@ -1377,7 +1377,7 @@ static int extfs_setctl (vfs *me, char *path, int ctlop, char *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
vfs vfs_extfs_ops = {
|
||||
struct vfs_class vfs_extfs_ops = {
|
||||
NULL, /* This is place of next pointer */
|
||||
"extfs",
|
||||
0, /* flags */
|
||||
|
50
vfs/fish.c
50
vfs/fish.c
@ -80,7 +80,7 @@ static char reply_str [80];
|
||||
static struct vfs_class vfs_fish_ops;
|
||||
|
||||
static int
|
||||
command (vfs *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
command (struct vfs_class *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 4, 5)));
|
||||
|
||||
static int decode_reply (char *s, int was_garbage)
|
||||
@ -95,7 +95,7 @@ static int decode_reply (char *s, int was_garbage)
|
||||
}
|
||||
|
||||
/* Returns a reply code, check /usr/include/arpa/ftp.h for possible values */
|
||||
static int get_reply (vfs *me, int sock, char *string_buf, int string_len)
|
||||
static int get_reply (struct vfs_class *me, int sock, char *string_buf, int string_len)
|
||||
{
|
||||
char answer[1024];
|
||||
int was_garbage = 0;
|
||||
@ -119,7 +119,7 @@ static int get_reply (vfs *me, int sock, char *string_buf, int string_len)
|
||||
#define SUP super->u.fish
|
||||
|
||||
static int
|
||||
command (vfs *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
command (struct vfs_class *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char *str;
|
||||
@ -151,7 +151,7 @@ command (vfs *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
}
|
||||
|
||||
static void
|
||||
free_archive (vfs *me, vfs_s_super *super)
|
||||
free_archive (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
if ((SUP.sockw != -1) || (SUP.sockr != -1)){
|
||||
print_vfs_message (_("fish: Disconnecting from %s"), super->name?super->name:"???");
|
||||
@ -197,14 +197,14 @@ pipeopen(vfs_s_super *super, char *path, char *argv[])
|
||||
}
|
||||
|
||||
/* The returned directory should always contain a trailing slash */
|
||||
static char *fish_getcwd(vfs *me, vfs_s_super *super)
|
||||
static char *fish_getcwd(struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
if (command(me, super, WANT_STRING, "#PWD\npwd; echo '### 200'\n") == COMPLETE)
|
||||
return g_strconcat (reply_str, "/", NULL);
|
||||
ERRNOR (EIO, NULL);
|
||||
}
|
||||
static int
|
||||
open_archive_int (vfs *me, vfs_s_super *super)
|
||||
open_archive_int (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
char *argv[100];
|
||||
char *xsh = (SUP.flags == FISH_FLAG_RSH ? "rsh" : "ssh");
|
||||
@ -295,7 +295,7 @@ open_archive_int (vfs *me, vfs_s_super *super)
|
||||
}
|
||||
|
||||
static int
|
||||
open_archive (vfs *me, vfs_s_super *super, char *archive_name, char *op)
|
||||
open_archive (struct vfs_class *me, vfs_s_super *super, char *archive_name, char *op)
|
||||
{
|
||||
char *host, *user, *password, *p;
|
||||
int flags;
|
||||
@ -317,7 +317,7 @@ open_archive (vfs *me, vfs_s_super *super, char *archive_name, char *op)
|
||||
}
|
||||
|
||||
static int
|
||||
archive_same(vfs *me, vfs_s_super *super, char *archive_name, char *op, void *cookie)
|
||||
archive_same(struct vfs_class *me, vfs_s_super *super, char *archive_name, char *op, void *cookie)
|
||||
{
|
||||
char *host, *user;
|
||||
int flags;
|
||||
@ -337,7 +337,7 @@ archive_same(vfs *me, vfs_s_super *super, char *archive_name, char *op, void *co
|
||||
}
|
||||
|
||||
static int
|
||||
dir_uptodate(vfs *me, vfs_s_inode *ino)
|
||||
dir_uptodate(struct vfs_class *me, vfs_s_inode *ino)
|
||||
{
|
||||
struct timeval tim;
|
||||
|
||||
@ -352,7 +352,7 @@ dir_uptodate(vfs *me, vfs_s_inode *ino)
|
||||
}
|
||||
|
||||
static int
|
||||
dir_load(vfs *me, vfs_s_inode *dir, char *remote_path)
|
||||
dir_load(struct vfs_class *me, vfs_s_inode *dir, char *remote_path)
|
||||
{
|
||||
vfs_s_super *super = dir->super;
|
||||
char buffer[8192];
|
||||
@ -475,7 +475,7 @@ error:
|
||||
}
|
||||
|
||||
static int
|
||||
file_store(vfs *me, vfs_s_fh *fh, char *name, char *localname)
|
||||
file_store(struct vfs_class *me, vfs_s_fh *fh, char *name, char *localname)
|
||||
{
|
||||
vfs_s_super *super = FH_SUPER;
|
||||
int n, total;
|
||||
@ -562,7 +562,7 @@ error_return:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int linear_start(vfs *me, vfs_s_fh *fh, int offset)
|
||||
static int linear_start(struct vfs_class *me, vfs_s_fh *fh, int offset)
|
||||
{
|
||||
char *name;
|
||||
char *quoted_name;
|
||||
@ -596,7 +596,7 @@ static int linear_start(vfs *me, vfs_s_fh *fh, int offset)
|
||||
}
|
||||
|
||||
static void
|
||||
linear_abort (vfs *me, vfs_s_fh *fh)
|
||||
linear_abort (struct vfs_class *me, vfs_s_fh *fh)
|
||||
{
|
||||
vfs_s_super *super = FH_SUPER;
|
||||
char buffer[8192];
|
||||
@ -617,7 +617,7 @@ linear_abort (vfs *me, vfs_s_fh *fh)
|
||||
}
|
||||
|
||||
static int
|
||||
linear_read (vfs *me, vfs_s_fh *fh, void *buf, int len)
|
||||
linear_read (struct vfs_class *me, vfs_s_fh *fh, void *buf, int len)
|
||||
{
|
||||
vfs_s_super *super = FH_SUPER;
|
||||
int n = 0;
|
||||
@ -638,7 +638,7 @@ linear_read (vfs *me, vfs_s_fh *fh, void *buf, int len)
|
||||
}
|
||||
|
||||
static void
|
||||
linear_close (vfs *me, vfs_s_fh *fh)
|
||||
linear_close (struct vfs_class *me, vfs_s_fh *fh)
|
||||
{
|
||||
if (fh->u.fish.total != fh->u.fish.got)
|
||||
linear_abort(me, fh);
|
||||
@ -671,7 +671,7 @@ fish_ctl (void *fh, int ctlop, int arg)
|
||||
}
|
||||
|
||||
static int
|
||||
send_fish_command(vfs *me, vfs_s_super *super, char *cmd, int flags)
|
||||
send_fish_command(struct vfs_class *me, vfs_s_super *super, char *cmd, int flags)
|
||||
{
|
||||
int r;
|
||||
|
||||
@ -696,7 +696,7 @@ send_fish_command(vfs *me, vfs_s_super *super, char *cmd, int flags)
|
||||
return send_fish_command(me, super, buf, flags);
|
||||
|
||||
static int
|
||||
fish_chmod (vfs *me, char *path, int mode)
|
||||
fish_chmod (struct vfs_class *me, char *path, int mode)
|
||||
{
|
||||
PREFIX
|
||||
g_snprintf(buf, sizeof(buf), "#CHMOD %4.4o /%s\n"
|
||||
@ -708,7 +708,7 @@ fish_chmod (vfs *me, char *path, int mode)
|
||||
}
|
||||
|
||||
#define FISH_OP(name, chk, string) \
|
||||
static int fish_##name (vfs *me, char *path1, char *path2) \
|
||||
static int fish_##name (struct vfs_class *me, char *path1, char *path2) \
|
||||
{ \
|
||||
char buf[BUF_LARGE]; \
|
||||
char *rpath1, *rpath2; \
|
||||
@ -733,7 +733,7 @@ FISH_OP(link, XTEST, "#LINK /%s /%s\n"
|
||||
"ln /%s /%s 2>/dev/null\n"
|
||||
"echo '### 000'" )
|
||||
|
||||
static int fish_symlink (vfs *me, char *setto, char *path)
|
||||
static int fish_symlink (struct vfs_class *me, char *setto, char *path)
|
||||
{
|
||||
PREFIX
|
||||
setto = name_quote (setto, 0);
|
||||
@ -747,7 +747,7 @@ static int fish_symlink (vfs *me, char *setto, char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
fish_chown (vfs *me, char *path, int owner, int group)
|
||||
fish_chown (struct vfs_class *me, char *path, int owner, int group)
|
||||
{
|
||||
char *sowner, *sgroup;
|
||||
struct passwd *pw;
|
||||
@ -780,7 +780,7 @@ fish_chown (vfs *me, char *path, int owner, int group)
|
||||
POSTFIX(OPT_FLUSH)
|
||||
}
|
||||
|
||||
static int fish_unlink (vfs *me, char *path)
|
||||
static int fish_unlink (struct vfs_class *me, char *path)
|
||||
{
|
||||
PREFIX
|
||||
g_snprintf(buf, sizeof(buf),
|
||||
@ -791,7 +791,7 @@ static int fish_unlink (vfs *me, char *path)
|
||||
POSTFIX(OPT_FLUSH);
|
||||
}
|
||||
|
||||
static int fish_mkdir (vfs *me, char *path, mode_t mode)
|
||||
static int fish_mkdir (struct vfs_class *me, char *path, mode_t mode)
|
||||
{
|
||||
PREFIX
|
||||
g_snprintf(buf, sizeof(buf),
|
||||
@ -802,7 +802,7 @@ static int fish_mkdir (vfs *me, char *path, mode_t mode)
|
||||
POSTFIX(OPT_FLUSH);
|
||||
}
|
||||
|
||||
static int fish_rmdir (vfs *me, char *path)
|
||||
static int fish_rmdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
PREFIX
|
||||
g_snprintf(buf, sizeof(buf),
|
||||
@ -813,7 +813,7 @@ static int fish_rmdir (vfs *me, char *path)
|
||||
POSTFIX(OPT_FLUSH);
|
||||
}
|
||||
|
||||
static int fish_fh_open (vfs *me, vfs_s_fh *fh, int flags, int mode)
|
||||
static int fish_fh_open (struct vfs_class *me, vfs_s_fh *fh, int flags, int mode)
|
||||
{
|
||||
fh->u.fish.append = 0;
|
||||
/* File will be written only, so no need to retrieve it */
|
||||
@ -864,7 +864,7 @@ static struct vfs_s_data fish_data = {
|
||||
};
|
||||
|
||||
static void
|
||||
fish_fill_names (vfs *me, void (*func)(char *))
|
||||
fish_fill_names (struct vfs_class *me, void (*func)(char *))
|
||||
{
|
||||
struct vfs_s_super * super = fish_data.supers;
|
||||
char *flags;
|
||||
|
86
vfs/ftpfs.c
86
vfs/ftpfs.c
@ -156,16 +156,16 @@ static struct vfs_class vfs_ftpfs_ops;
|
||||
c) strip trailing "/."
|
||||
*/
|
||||
|
||||
static char *ftpfs_get_current_directory (vfs *me, vfs_s_super *super);
|
||||
static int ftpfs_chdir_internal (vfs *me, vfs_s_super *super, char *remote_path);
|
||||
static int command (vfs *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
static char *ftpfs_get_current_directory (struct vfs_class *me, vfs_s_super *super);
|
||||
static int ftpfs_chdir_internal (struct vfs_class *me, vfs_s_super *super, char *remote_path);
|
||||
static int command (struct vfs_class *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 4, 5)));
|
||||
static int ftpfs_open_socket (vfs *me, vfs_s_super *super);
|
||||
static int login_server (vfs *me, vfs_s_super *super, const char *netrcpass);
|
||||
static int ftpfs_open_socket (struct vfs_class *me, vfs_s_super *super);
|
||||
static int login_server (struct vfs_class *me, vfs_s_super *super, const char *netrcpass);
|
||||
static int lookup_netrc (const char *host, char **login, char **pass);
|
||||
|
||||
static char *
|
||||
translate_path (vfs *me, vfs_s_super *super, const char *remote_path)
|
||||
translate_path (struct vfs_class *me, vfs_s_super *super, const char *remote_path)
|
||||
{
|
||||
if (!SUP.remote_is_amiga)
|
||||
return g_strdup (remote_path);
|
||||
@ -253,7 +253,7 @@ ftp_split_url(char *path, char **host, char **user, int *port, char **pass)
|
||||
|
||||
/* Returns a reply code, check /usr/include/arpa/ftp.h for possible values */
|
||||
static int
|
||||
get_reply (vfs *me, int sock, char *string_buf, int string_len)
|
||||
get_reply (struct vfs_class *me, int sock, char *string_buf, int string_len)
|
||||
{
|
||||
char answer[BUF_1K];
|
||||
int i;
|
||||
@ -297,7 +297,7 @@ get_reply (vfs *me, int sock, char *string_buf, int string_len)
|
||||
}
|
||||
|
||||
static int
|
||||
reconnect (vfs *me, vfs_s_super *super)
|
||||
reconnect (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
int sock = ftpfs_open_socket (me, super);
|
||||
if (sock != -1){
|
||||
@ -318,7 +318,7 @@ reconnect (vfs *me, vfs_s_super *super)
|
||||
}
|
||||
|
||||
static int
|
||||
command (vfs *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
command (struct vfs_class *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char *cmdstr;
|
||||
@ -378,7 +378,7 @@ command (vfs *me, vfs_s_super *super, int wait_reply, const char *fmt, ...)
|
||||
}
|
||||
|
||||
static void
|
||||
free_archive (vfs *me, vfs_s_super *super)
|
||||
free_archive (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
if (SUP.sock != -1){
|
||||
print_vfs_message (_("ftpfs: Disconnecting from %s"), SUP.host);
|
||||
@ -401,7 +401,7 @@ free_archive (vfs *me, vfs_s_super *super)
|
||||
#define TYPE_UNKNOWN -1
|
||||
|
||||
static int
|
||||
changetype (vfs *me, vfs_s_super *super, int binary)
|
||||
changetype (struct vfs_class *me, vfs_s_super *super, int binary)
|
||||
{
|
||||
if (binary != SUP.isbinary) {
|
||||
if (command (me, super, WAIT_REPLY, "TYPE %c", binary ? 'I' : 'A') != COMPLETE)
|
||||
@ -413,7 +413,7 @@ changetype (vfs *me, vfs_s_super *super, int binary)
|
||||
|
||||
/* This routine logs the user in */
|
||||
static int
|
||||
login_server (vfs *me, vfs_s_super *super, const char *netrcpass)
|
||||
login_server (struct vfs_class *me, vfs_s_super *super, const char *netrcpass)
|
||||
{
|
||||
char *pass;
|
||||
char *op;
|
||||
@ -653,7 +653,7 @@ ftpfs_get_proxy_host_and_port (const char *proxy, char **host, int *port)
|
||||
}
|
||||
|
||||
static int
|
||||
ftpfs_open_socket (vfs *me, vfs_s_super *super)
|
||||
ftpfs_open_socket (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
struct sockaddr_in server_address;
|
||||
struct hostent *hp;
|
||||
@ -730,7 +730,7 @@ ftpfs_open_socket (vfs *me, vfs_s_super *super)
|
||||
}
|
||||
|
||||
static int
|
||||
open_archive_int (vfs *me, vfs_s_super *super)
|
||||
open_archive_int (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
int retry_seconds, count_down;
|
||||
|
||||
@ -780,7 +780,7 @@ open_archive_int (vfs *me, vfs_s_super *super)
|
||||
}
|
||||
|
||||
static int
|
||||
open_archive (vfs *me, vfs_s_super *super, char *archive_name, char *op)
|
||||
open_archive (struct vfs_class *me, vfs_s_super *super, char *archive_name, char *op)
|
||||
{
|
||||
char *host, *user, *password;
|
||||
int port;
|
||||
@ -807,7 +807,7 @@ open_archive (vfs *me, vfs_s_super *super, char *archive_name, char *op)
|
||||
}
|
||||
|
||||
static int
|
||||
archive_same(vfs *me, vfs_s_super *super, char *archive_name, char *op, void *cookie)
|
||||
archive_same(struct vfs_class *me, vfs_s_super *super, char *archive_name, char *op, void *cookie)
|
||||
{
|
||||
char *host, *user;
|
||||
int port;
|
||||
@ -831,7 +831,7 @@ ftpfs_flushdir (void)
|
||||
}
|
||||
|
||||
static int
|
||||
dir_uptodate(vfs *me, vfs_s_inode *ino)
|
||||
dir_uptodate(struct vfs_class *me, vfs_s_inode *ino)
|
||||
{
|
||||
struct timeval tim;
|
||||
|
||||
@ -847,7 +847,7 @@ dir_uptodate(vfs *me, vfs_s_inode *ino)
|
||||
|
||||
/* The returned directory should always contain a trailing slash */
|
||||
static char *
|
||||
ftpfs_get_current_directory (vfs *me, vfs_s_super *super)
|
||||
ftpfs_get_current_directory (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
char buf[BUF_8K], *bufp, *bufq;
|
||||
|
||||
@ -887,7 +887,7 @@ ftpfs_get_current_directory (vfs *me, vfs_s_super *super)
|
||||
|
||||
/* Setup Passive ftp connection, we use it for source routed connections */
|
||||
static int
|
||||
setup_passive (vfs *me, vfs_s_super *super, int my_socket, struct sockaddr_in *sa)
|
||||
setup_passive (struct vfs_class *me, vfs_s_super *super, int my_socket, struct sockaddr_in *sa)
|
||||
{
|
||||
int xa, xb, xc, xd, xe, xf;
|
||||
char n [6];
|
||||
@ -921,7 +921,7 @@ setup_passive (vfs *me, vfs_s_super *super, int my_socket, struct sockaddr_in *s
|
||||
}
|
||||
|
||||
static int
|
||||
initconn (vfs *me, vfs_s_super *super)
|
||||
initconn (struct vfs_class *me, vfs_s_super *super)
|
||||
{
|
||||
struct sockaddr_in data_addr;
|
||||
int data;
|
||||
@ -972,7 +972,7 @@ again:
|
||||
}
|
||||
|
||||
static int
|
||||
open_data_connection (vfs *me, vfs_s_super *super, const char *cmd,
|
||||
open_data_connection (struct vfs_class *me, vfs_s_super *super, const char *cmd,
|
||||
const char *remote, int isbinary, int reget)
|
||||
{
|
||||
struct sockaddr_in from;
|
||||
@ -1015,7 +1015,7 @@ open_data_connection (vfs *me, vfs_s_super *super, const char *cmd,
|
||||
|
||||
#define ABORT_TIMEOUT 5
|
||||
static void
|
||||
linear_abort (vfs *me, vfs_s_fh *fh)
|
||||
linear_abort (struct vfs_class *me, vfs_s_fh *fh)
|
||||
{
|
||||
vfs_s_super *super = FH_SUPER;
|
||||
static unsigned char const ipbuf[3] = { IAC, IP, IAC };
|
||||
@ -1065,7 +1065,7 @@ linear_abort (vfs *me, vfs_s_fh *fh)
|
||||
|
||||
#if 0
|
||||
static void
|
||||
resolve_symlink_without_ls_options(vfs *me, vfs_s_super *super, vfs_s_inode *dir)
|
||||
resolve_symlink_without_ls_options(struct vfs_class *me, vfs_s_super *super, vfs_s_inode *dir)
|
||||
{
|
||||
struct linklist *flist;
|
||||
struct direntry *fe, *fel;
|
||||
@ -1126,7 +1126,7 @@ resolve_symlink_without_ls_options(vfs *me, vfs_s_super *super, vfs_s_inode *dir
|
||||
}
|
||||
|
||||
static void
|
||||
resolve_symlink_with_ls_options(vfs *me, vfs_s_super *super, vfs_s_inode *dir)
|
||||
resolve_symlink_with_ls_options(struct vfs_class *me, vfs_s_super *super, vfs_s_inode *dir)
|
||||
{
|
||||
char buffer[2048] = "", *filename;
|
||||
int sock;
|
||||
@ -1205,7 +1205,7 @@ done:
|
||||
}
|
||||
|
||||
static void
|
||||
resolve_symlink(vfs *me, vfs_s_super *super, vfs_s_inode *dir)
|
||||
resolve_symlink(struct vfs_class *me, vfs_s_super *super, vfs_s_inode *dir)
|
||||
{
|
||||
print_vfs_message(_("Resolving symlink..."));
|
||||
|
||||
@ -1217,7 +1217,7 @@ resolve_symlink(vfs *me, vfs_s_super *super, vfs_s_inode *dir)
|
||||
#endif
|
||||
|
||||
static int
|
||||
dir_load (vfs *me, vfs_s_inode *dir, char *remote_path)
|
||||
dir_load (struct vfs_class *me, vfs_s_inode *dir, char *remote_path)
|
||||
{
|
||||
vfs_s_entry *ent;
|
||||
vfs_s_super *super = dir->super;
|
||||
@ -1373,7 +1373,7 @@ fallback:
|
||||
}
|
||||
|
||||
static int
|
||||
file_store(vfs *me, vfs_s_fh *fh, char *name, char *localname)
|
||||
file_store(struct vfs_class *me, vfs_s_fh *fh, char *name, char *localname)
|
||||
{
|
||||
int h, sock, n;
|
||||
off_t total;
|
||||
@ -1451,7 +1451,7 @@ error_return:
|
||||
}
|
||||
|
||||
static int
|
||||
linear_start(vfs *me, vfs_s_fh *fh, int offset)
|
||||
linear_start(struct vfs_class *me, vfs_s_fh *fh, int offset)
|
||||
{
|
||||
char *name = vfs_s_fullpath (me, fh->ino);
|
||||
|
||||
@ -1468,7 +1468,7 @@ linear_start(vfs *me, vfs_s_fh *fh, int offset)
|
||||
}
|
||||
|
||||
static int
|
||||
linear_read (vfs *me, vfs_s_fh *fh, void *buf, int len)
|
||||
linear_read (struct vfs_class *me, vfs_s_fh *fh, void *buf, int len)
|
||||
{
|
||||
int n;
|
||||
vfs_s_super *super = FH_SUPER;
|
||||
@ -1494,7 +1494,7 @@ linear_read (vfs *me, vfs_s_fh *fh, void *buf, int len)
|
||||
}
|
||||
|
||||
static void
|
||||
linear_close (vfs *me, vfs_s_fh *fh)
|
||||
linear_close (struct vfs_class *me, vfs_s_fh *fh)
|
||||
{
|
||||
if (FH_SOCK != -1)
|
||||
linear_abort(me, fh);
|
||||
@ -1524,7 +1524,7 @@ static int ftpfs_ctl (void *fh, int ctlop, int arg)
|
||||
|
||||
/* Warning: filename passed to this command is damaged */
|
||||
static int
|
||||
send_ftp_command(vfs *me, char *filename, char *cmd, int flags)
|
||||
send_ftp_command(struct vfs_class *me, char *filename, char *cmd, int flags)
|
||||
{
|
||||
char *rpath, *p;
|
||||
vfs_s_super *super;
|
||||
@ -1565,7 +1565,7 @@ ftpfs_init_passwd(void)
|
||||
ftpfs_anonymous_passwd = g_strdup ("anonymous@");
|
||||
}
|
||||
|
||||
static int ftpfs_chmod (vfs *me, char *path, int mode)
|
||||
static int ftpfs_chmod (struct vfs_class *me, char *path, int mode)
|
||||
{
|
||||
char buf[BUF_SMALL];
|
||||
|
||||
@ -1573,7 +1573,7 @@ static int ftpfs_chmod (vfs *me, char *path, int mode)
|
||||
return send_ftp_command(me, path, buf, OPT_FLUSH);
|
||||
}
|
||||
|
||||
static int ftpfs_chown (vfs *me, char *path, int owner, int group)
|
||||
static int ftpfs_chown (struct vfs_class *me, char *path, int owner, int group)
|
||||
{
|
||||
#if 0
|
||||
my_errno = EPERM;
|
||||
@ -1585,14 +1585,14 @@ static int ftpfs_chown (vfs *me, char *path, int owner, int group)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int ftpfs_unlink (vfs *me, char *path)
|
||||
static int ftpfs_unlink (struct vfs_class *me, char *path)
|
||||
{
|
||||
return send_ftp_command(me, path, "DELE /%s", OPT_FLUSH);
|
||||
}
|
||||
|
||||
/* Return 1 if path is the same directory as the one we are in now */
|
||||
static int
|
||||
is_same_dir (vfs *me, vfs_s_super *super, const char *path)
|
||||
is_same_dir (struct vfs_class *me, vfs_s_super *super, const char *path)
|
||||
{
|
||||
if (!SUP.cwdir)
|
||||
return 0;
|
||||
@ -1602,7 +1602,7 @@ is_same_dir (vfs *me, vfs_s_super *super, const char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
ftpfs_chdir_internal (vfs *me, vfs_s_super *super, char *remote_path)
|
||||
ftpfs_chdir_internal (struct vfs_class *me, vfs_s_super *super, char *remote_path)
|
||||
{
|
||||
int r;
|
||||
char *p;
|
||||
@ -1624,23 +1624,23 @@ ftpfs_chdir_internal (vfs *me, vfs_s_super *super, char *remote_path)
|
||||
return r;
|
||||
}
|
||||
|
||||
static int ftpfs_rename (vfs *me, char *path1, char *path2)
|
||||
static int ftpfs_rename (struct vfs_class *me, char *path1, char *path2)
|
||||
{
|
||||
send_ftp_command(me, path1, "RNFR /%s", OPT_FLUSH);
|
||||
return send_ftp_command(me, path2, "RNTO /%s", OPT_FLUSH);
|
||||
}
|
||||
|
||||
static int ftpfs_mkdir (vfs *me, char *path, mode_t mode)
|
||||
static int ftpfs_mkdir (struct vfs_class *me, char *path, mode_t mode)
|
||||
{
|
||||
return send_ftp_command(me, path, "MKD /%s", OPT_FLUSH);
|
||||
}
|
||||
|
||||
static int ftpfs_rmdir (vfs *me, char *path)
|
||||
static int ftpfs_rmdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
return send_ftp_command(me, path, "RMD /%s", OPT_FLUSH);
|
||||
}
|
||||
|
||||
static int ftpfs_fh_open (vfs *me, vfs_s_fh *fh, int flags, int mode)
|
||||
static int ftpfs_fh_open (struct vfs_class *me, vfs_s_fh *fh, int flags, int mode)
|
||||
{
|
||||
fh->u.ftp.append = 0;
|
||||
/* File will be written only, so no need to retrieve it from ftp server */
|
||||
@ -1697,7 +1697,7 @@ static int ftpfs_fh_open (vfs *me, vfs_s_fh *fh, int flags, int mode)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ftpfs_fh_close (vfs *me, vfs_s_fh *fh)
|
||||
static int ftpfs_fh_close (struct vfs_class *me, vfs_s_fh *fh)
|
||||
{
|
||||
if (fh->handle != -1 && !fh->ino->localname){
|
||||
close (fh->handle);
|
||||
@ -1742,7 +1742,7 @@ static struct vfs_s_data ftp_data = {
|
||||
};
|
||||
|
||||
static void
|
||||
ftpfs_done (vfs *me)
|
||||
ftpfs_done (struct vfs_class *me)
|
||||
{
|
||||
struct no_proxy_entry *np;
|
||||
|
||||
@ -1757,7 +1757,7 @@ ftpfs_done (vfs *me)
|
||||
}
|
||||
|
||||
static void
|
||||
ftpfs_fill_names (vfs *me, void (*func)(char *))
|
||||
ftpfs_fill_names (struct vfs_class *me, void (*func)(char *))
|
||||
{
|
||||
struct vfs_s_super * super = ftp_data.supers;
|
||||
char *name;
|
||||
|
48
vfs/local.c
48
vfs/local.c
@ -17,7 +17,7 @@
|
||||
* */
|
||||
|
||||
static void *
|
||||
local_open (vfs *me, char *file, int flags, int mode)
|
||||
local_open (struct vfs_class *me, char *file, int flags, int mode)
|
||||
{
|
||||
int *local_info;
|
||||
int fd;
|
||||
@ -66,13 +66,13 @@ local_close (void *data)
|
||||
}
|
||||
|
||||
int
|
||||
local_errno (vfs *me)
|
||||
local_errno (struct vfs_class *me)
|
||||
{
|
||||
return errno;
|
||||
}
|
||||
|
||||
static void *
|
||||
local_opendir (vfs *me, char *dirname)
|
||||
local_opendir (struct vfs_class *me, char *dirname)
|
||||
{
|
||||
DIR **local_info;
|
||||
DIR *dir;
|
||||
@ -128,13 +128,13 @@ local_closedir (void *data)
|
||||
}
|
||||
|
||||
static int
|
||||
local_stat (vfs *me, char *path, struct stat *buf)
|
||||
local_stat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
return stat (path, buf);
|
||||
}
|
||||
|
||||
static int
|
||||
local_lstat (vfs *me, char *path, struct stat *buf)
|
||||
local_lstat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
#ifndef HAVE_STATLSTAT
|
||||
return lstat (path,buf);
|
||||
@ -150,37 +150,37 @@ local_fstat (void *data, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
local_chmod (vfs *me, char *path, int mode)
|
||||
local_chmod (struct vfs_class *me, char *path, int mode)
|
||||
{
|
||||
return chmod (path, mode);
|
||||
}
|
||||
|
||||
static int
|
||||
local_chown (vfs *me, char *path, int owner, int group)
|
||||
local_chown (struct vfs_class *me, char *path, int owner, int group)
|
||||
{
|
||||
return chown (path, owner, group);
|
||||
}
|
||||
|
||||
static int
|
||||
local_utime (vfs *me, char *path, struct utimbuf *times)
|
||||
local_utime (struct vfs_class *me, char *path, struct utimbuf *times)
|
||||
{
|
||||
return utime (path, times);
|
||||
}
|
||||
|
||||
static int
|
||||
local_readlink (vfs *me, char *path, char *buf, int size)
|
||||
local_readlink (struct vfs_class *me, char *path, char *buf, int size)
|
||||
{
|
||||
return readlink (path, buf, size);
|
||||
}
|
||||
|
||||
static int
|
||||
local_unlink (vfs *me, char *path)
|
||||
local_unlink (struct vfs_class *me, char *path)
|
||||
{
|
||||
return unlink (path);
|
||||
}
|
||||
|
||||
static int
|
||||
local_symlink (vfs *me, char *n1, char *n2)
|
||||
local_symlink (struct vfs_class *me, char *n1, char *n2)
|
||||
{
|
||||
return symlink (n1, n2);
|
||||
}
|
||||
@ -208,13 +208,13 @@ local_write (void *data, char *buf, int nbyte)
|
||||
}
|
||||
|
||||
static int
|
||||
local_rename (vfs *me, char *a, char *b)
|
||||
local_rename (struct vfs_class *me, char *a, char *b)
|
||||
{
|
||||
return rename (a, b);
|
||||
}
|
||||
|
||||
static int
|
||||
local_chdir (vfs *me, char *path)
|
||||
local_chdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
return chdir (path);
|
||||
}
|
||||
@ -228,31 +228,31 @@ local_lseek (void *data, off_t offset, int whence)
|
||||
}
|
||||
|
||||
static int
|
||||
local_mknod (vfs *me, char *path, int mode, int dev)
|
||||
local_mknod (struct vfs_class *me, char *path, int mode, int dev)
|
||||
{
|
||||
return mknod (path, mode, dev);
|
||||
}
|
||||
|
||||
static int
|
||||
local_link (vfs *me, char *p1, char *p2)
|
||||
local_link (struct vfs_class *me, char *p1, char *p2)
|
||||
{
|
||||
return link (p1, p2);
|
||||
}
|
||||
|
||||
static int
|
||||
local_mkdir (vfs *me, char *path, mode_t mode)
|
||||
local_mkdir (struct vfs_class *me, char *path, mode_t mode)
|
||||
{
|
||||
return mkdir (path, mode);
|
||||
}
|
||||
|
||||
static int
|
||||
local_rmdir (vfs *me, char *path)
|
||||
local_rmdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
return rmdir (path);
|
||||
}
|
||||
|
||||
static vfsid
|
||||
local_getid (vfs *me, const char *path, struct vfs_stamping **parent)
|
||||
local_getid (struct vfs_class *me, const char *path, struct vfs_stamping **parent)
|
||||
{
|
||||
*parent = NULL;
|
||||
return (vfsid) -1; /* We do not free local fs stuff at all */
|
||||
@ -270,20 +270,20 @@ local_free (vfsid id)
|
||||
}
|
||||
|
||||
static char *
|
||||
local_getlocalcopy (vfs *me, char *path)
|
||||
local_getlocalcopy (struct vfs_class *me, char *path)
|
||||
{
|
||||
return g_strdup (path);
|
||||
}
|
||||
|
||||
static int
|
||||
local_ungetlocalcopy (vfs *me, char *path, char *local, int has_changed)
|
||||
local_ungetlocalcopy (struct vfs_class *me, char *path, char *local, int has_changed)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_MMAP
|
||||
caddr_t
|
||||
local_mmap (vfs *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset)
|
||||
local_mmap (struct vfs_class *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset)
|
||||
{
|
||||
int fd = * (int *)data;
|
||||
|
||||
@ -291,19 +291,19 @@ local_mmap (vfs *me, caddr_t addr, size_t len, int prot, int flags, void *data,
|
||||
}
|
||||
|
||||
int
|
||||
local_munmap (vfs *me, caddr_t addr, size_t len, void *data)
|
||||
local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void *data)
|
||||
{
|
||||
return munmap (addr, len);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int
|
||||
local_which (vfs *me, char *path)
|
||||
local_which (struct vfs_class *me, char *path)
|
||||
{
|
||||
return 0; /* Every path which other systems do not like is expected to be ours */
|
||||
}
|
||||
|
||||
vfs vfs_local_ops = {
|
||||
struct vfs_class vfs_local_ops = {
|
||||
NULL, /* This is place of next pointer */
|
||||
"localfs",
|
||||
VFSF_LOCAL, /* flags */
|
||||
|
@ -4,11 +4,11 @@
|
||||
extern int local_close (void *data);
|
||||
extern int local_read (void *data, char *buffer, int count);
|
||||
extern int local_fstat (void *data, struct stat *buf);
|
||||
extern int local_errno (vfs *me);
|
||||
extern int local_errno (struct vfs_class *me);
|
||||
extern int local_lseek (void *data, off_t offset, int whence);
|
||||
#ifdef HAVE_MMAP
|
||||
extern caddr_t local_mmap (vfs *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset);
|
||||
extern int local_munmap (vfs *me, caddr_t addr, size_t len, void *data);
|
||||
extern caddr_t local_mmap (struct vfs_class *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset);
|
||||
extern int local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void *data);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
42
vfs/mcfs.c
42
vfs/mcfs.c
@ -91,7 +91,7 @@ mcfs_get_host_and_username (char *path, char **host, char **user,
|
||||
}
|
||||
|
||||
static void
|
||||
mcfs_fill_names (vfs *me, void (*func) (char *))
|
||||
mcfs_fill_names (struct vfs_class *me, void (*func) (char *))
|
||||
{
|
||||
int i;
|
||||
char *name;
|
||||
@ -511,7 +511,7 @@ mcfs_gethome (mcfs_connection *mc)
|
||||
|
||||
/* The callbacks */
|
||||
static void *
|
||||
mcfs_open (vfs *me, char *file, int flags, int mode)
|
||||
mcfs_open (struct vfs_class *me, char *file, int flags, int mode)
|
||||
{
|
||||
char *remote_file;
|
||||
mcfs_connection *mc;
|
||||
@ -610,7 +610,7 @@ mcfs_close (void *data)
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_errno (vfs *me)
|
||||
mcfs_errno (struct vfs_class *me)
|
||||
{
|
||||
return my_errno;
|
||||
}
|
||||
@ -630,7 +630,7 @@ typedef struct {
|
||||
} opendir_info;
|
||||
|
||||
static void *
|
||||
mcfs_opendir (vfs *me, char *dirname)
|
||||
mcfs_opendir (struct vfs_class *me, char *dirname)
|
||||
{
|
||||
opendir_info *mcfs_info;
|
||||
mcfs_connection *mc;
|
||||
@ -876,13 +876,13 @@ mcfs_stat_cmd (int cmd, char *path, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_stat (vfs *me, char *path, struct stat *buf)
|
||||
mcfs_stat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
return mcfs_stat_cmd (MC_STAT, path, buf);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_lstat (vfs *me, char *path, struct stat *buf)
|
||||
mcfs_lstat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
int path_len = strlen (path);
|
||||
int entry_len = strlen (mcfs_readdir_data.dent.d_name);
|
||||
@ -920,19 +920,19 @@ mcfs_fstat (void *data, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_chmod (vfs *me, char *path, int mode)
|
||||
mcfs_chmod (struct vfs_class *me, char *path, int mode)
|
||||
{
|
||||
return mcfs_rpc_path_int (MC_CHMOD, path, mode);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_chown (vfs *me, char *path, int owner, int group)
|
||||
mcfs_chown (struct vfs_class *me, char *path, int owner, int group)
|
||||
{
|
||||
return mcfs_rpc_path_int_int (MC_CHOWN, path, owner, group);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_utime (vfs *me, char *path, struct utimbuf *times)
|
||||
mcfs_utime (struct vfs_class *me, char *path, struct utimbuf *times)
|
||||
{
|
||||
mcfs_connection *mc;
|
||||
int status;
|
||||
@ -964,7 +964,7 @@ mcfs_utime (vfs *me, char *path, struct utimbuf *times)
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_readlink (vfs *me, char *path, char *buf, int size)
|
||||
mcfs_readlink (struct vfs_class *me, char *path, char *buf, int size)
|
||||
{
|
||||
char *remote_file, *stat_str;
|
||||
int status, error;
|
||||
@ -994,25 +994,25 @@ mcfs_readlink (vfs *me, char *path, char *buf, int size)
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_unlink (vfs *me, char *path)
|
||||
mcfs_unlink (struct vfs_class *me, char *path)
|
||||
{
|
||||
return mcfs_rpc_path (MC_UNLINK, path);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_symlink (vfs *me, char *n1, char *n2)
|
||||
mcfs_symlink (struct vfs_class *me, char *n1, char *n2)
|
||||
{
|
||||
return mcfs_rpc_two_paths (MC_SYMLINK, n1, n2);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_rename (vfs *me, char *a, char *b)
|
||||
mcfs_rename (struct vfs_class *me, char *a, char *b)
|
||||
{
|
||||
return mcfs_rpc_two_paths (MC_RENAME, a, b);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_chdir (vfs *me, char *path)
|
||||
mcfs_chdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
char *remote_dir;
|
||||
mcfs_connection *mc;
|
||||
@ -1049,25 +1049,25 @@ mcfs_lseek (void *data, off_t offset, int whence)
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_mknod (vfs *me, char *path, int mode, int dev)
|
||||
mcfs_mknod (struct vfs_class *me, char *path, int mode, int dev)
|
||||
{
|
||||
return mcfs_rpc_path_int_int (MC_MKNOD, path, mode, dev);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_mkdir (vfs *me, char *path, mode_t mode)
|
||||
mcfs_mkdir (struct vfs_class *me, char *path, mode_t mode)
|
||||
{
|
||||
return mcfs_rpc_path_int (MC_MKDIR, path, mode);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_rmdir (vfs *me, char *path)
|
||||
mcfs_rmdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
return mcfs_rpc_path (MC_RMDIR, path);
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_link (vfs *me, char *p1, char *p2)
|
||||
mcfs_link (struct vfs_class *me, char *p1, char *p2)
|
||||
{
|
||||
return mcfs_rpc_two_paths (MC_LINK, p1, p2);
|
||||
}
|
||||
@ -1076,7 +1076,7 @@ mcfs_link (vfs *me, char *p1, char *p2)
|
||||
* out of them
|
||||
*/
|
||||
static vfsid
|
||||
mcfs_getid (vfs *me, char *p, struct vfs_stamping **parent)
|
||||
mcfs_getid (struct vfs_class *me, const char *p, struct vfs_stamping **parent)
|
||||
{
|
||||
*parent = NULL;
|
||||
|
||||
@ -1141,7 +1141,7 @@ my_forget (char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
mcfs_setctl (vfs *me, char *path, int ctlop, char *arg)
|
||||
mcfs_setctl (struct vfs_class *me, char *path, int ctlop, char *arg)
|
||||
{
|
||||
switch (ctlop) {
|
||||
case MCCTL_FORGET_ABOUT:
|
||||
@ -1151,7 +1151,7 @@ mcfs_setctl (vfs *me, char *path, int ctlop, char *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
vfs vfs_mcfs_ops = {
|
||||
struct vfs_class vfs_mcfs_ops = {
|
||||
NULL, /* This is place of next pointer */
|
||||
"mcfs",
|
||||
0, /* flags */
|
||||
|
36
vfs/sfs.c
36
vfs/sfs.c
@ -47,7 +47,7 @@ static int uptodate (char *name, char *cache)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int vfmake (vfs *me, char *name, char *cache)
|
||||
static int vfmake (struct vfs_class *me, char *name, char *cache)
|
||||
{
|
||||
char *inpath, *op;
|
||||
int w;
|
||||
@ -104,7 +104,7 @@ static int vfmake (vfs *me, char *name, char *cache)
|
||||
}
|
||||
|
||||
static char *
|
||||
redirect (vfs *me, char *name)
|
||||
redirect (struct vfs_class *me, char *name)
|
||||
{
|
||||
struct cachedfile *cur = head;
|
||||
char *cache;
|
||||
@ -147,7 +147,7 @@ redirect (vfs *me, char *name)
|
||||
}
|
||||
|
||||
static void *
|
||||
sfs_open (vfs *me, char *path, int flags, int mode)
|
||||
sfs_open (struct vfs_class *me, char *path, int flags, int mode)
|
||||
{
|
||||
int *sfs_info;
|
||||
int fd;
|
||||
@ -163,13 +163,13 @@ sfs_open (vfs *me, char *path, int flags, int mode)
|
||||
return sfs_info;
|
||||
}
|
||||
|
||||
static int sfs_stat (vfs *me, char *path, struct stat *buf)
|
||||
static int sfs_stat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
path = redirect (me, path);
|
||||
return stat (path, buf);
|
||||
}
|
||||
|
||||
static int sfs_lstat (vfs *me, char *path, struct stat *buf)
|
||||
static int sfs_lstat (struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
path = redirect (me, path);
|
||||
#ifndef HAVE_STATLSTAT
|
||||
@ -179,34 +179,34 @@ static int sfs_lstat (vfs *me, char *path, struct stat *buf)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int sfs_chmod (vfs *me, char *path, int mode)
|
||||
static int sfs_chmod (struct vfs_class *me, char *path, int mode)
|
||||
{
|
||||
path = redirect (me, path);
|
||||
return chmod (path, mode);
|
||||
}
|
||||
|
||||
static int sfs_chown (vfs *me, char *path, int owner, int group)
|
||||
static int sfs_chown (struct vfs_class *me, char *path, int owner, int group)
|
||||
{
|
||||
path = redirect (me, path);
|
||||
return chown (path, owner, group);
|
||||
}
|
||||
|
||||
static int sfs_utime (vfs *me, char *path, struct utimbuf *times)
|
||||
static int sfs_utime (struct vfs_class *me, char *path, struct utimbuf *times)
|
||||
{
|
||||
path = redirect (me, path);
|
||||
return utime (path, times);
|
||||
}
|
||||
|
||||
static int sfs_readlink (vfs *me, char *path, char *buf, int size)
|
||||
static int sfs_readlink (struct vfs_class *me, char *path, char *buf, int size)
|
||||
{
|
||||
path = redirect (me, path);
|
||||
return readlink (path, buf, size);
|
||||
}
|
||||
|
||||
static vfsid
|
||||
sfs_getid (vfs *me, const char *path, struct vfs_stamping **parent)
|
||||
sfs_getid (struct vfs_class *me, const char *path, struct vfs_stamping **parent)
|
||||
{ /* FIXME: what should I do? */
|
||||
vfs *v;
|
||||
struct vfs_class *v;
|
||||
vfsid id;
|
||||
struct vfs_stamping *par;
|
||||
struct cachedfile *cur = head;
|
||||
@ -266,7 +266,7 @@ static void sfs_free (vfsid id)
|
||||
g_free (cur);
|
||||
}
|
||||
|
||||
static void sfs_fill_names (vfs *me, void (*func)(char *))
|
||||
static void sfs_fill_names (struct vfs_class *me, void (*func)(char *))
|
||||
{
|
||||
struct cachedfile *cur = head;
|
||||
|
||||
@ -283,19 +283,19 @@ static int sfs_nothingisopen (vfsid id)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static char *sfs_getlocalcopy (vfs *me, char *path)
|
||||
static char *sfs_getlocalcopy (struct vfs_class *me, char *path)
|
||||
{
|
||||
path = redirect (me, path);
|
||||
return g_strdup (path);
|
||||
}
|
||||
|
||||
static int sfs_ungetlocalcopy (vfs *me, char *path, char *local, int has_changed)
|
||||
static int sfs_ungetlocalcopy (struct vfs_class *me, char *path, char *local, int has_changed)
|
||||
{
|
||||
g_free(local);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sfs_init (vfs *me)
|
||||
static int sfs_init (struct vfs_class *me)
|
||||
{
|
||||
char *mc_sfsini;
|
||||
FILE *cfg;
|
||||
@ -364,7 +364,7 @@ static int sfs_init (vfs *me)
|
||||
}
|
||||
|
||||
static void
|
||||
sfs_done (vfs *me)
|
||||
sfs_done (struct vfs_class *me)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -377,7 +377,7 @@ sfs_done (vfs *me)
|
||||
}
|
||||
|
||||
static int
|
||||
sfs_which (vfs *me, char *path)
|
||||
sfs_which (struct vfs_class *me, char *path)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -392,7 +392,7 @@ sfs_which (vfs *me, char *path)
|
||||
return -1;
|
||||
}
|
||||
|
||||
vfs vfs_sfs_ops = {
|
||||
struct vfs_class vfs_sfs_ops = {
|
||||
NULL, /* This is place of next pointer */
|
||||
"sfs",
|
||||
0, /* flags */
|
||||
|
44
vfs/smbfs.c
44
vfs/smbfs.c
@ -273,7 +273,7 @@ smbfs_set_debugf (const char *filename)
|
||||
|
||||
/********************** The callbacks ******************************/
|
||||
static int
|
||||
smbfs_init (vfs * me)
|
||||
smbfs_init (struct vfs_class * me)
|
||||
{
|
||||
char *servicesf = CONFIGDIR PATH_SEP_STR "smb.conf";
|
||||
|
||||
@ -322,7 +322,7 @@ smbfs_init (vfs * me)
|
||||
}
|
||||
|
||||
static void
|
||||
smbfs_fill_names (vfs *me, void (*func)(char *))
|
||||
smbfs_fill_names (struct vfs_class *me, void (*func)(char *))
|
||||
{
|
||||
int i;
|
||||
char *path;
|
||||
@ -394,7 +394,7 @@ smbfs_close (void *data)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_errno (vfs *me)
|
||||
smbfs_errno (struct vfs_class *me)
|
||||
{
|
||||
DEBUG(3, ("smbfs_errno: %s\n", g_strerror(my_errno)));
|
||||
return my_errno;
|
||||
@ -815,7 +815,7 @@ smbfs_closedir (void *info)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_chmod (vfs *me, char *path, int mode)
|
||||
smbfs_chmod (struct vfs_class *me, char *path, int mode)
|
||||
{
|
||||
DEBUG(3, ("smbfs_chmod(path:%s, mode:%d)\n", path, mode));
|
||||
/* my_errno = EOPNOTSUPP;
|
||||
@ -824,7 +824,7 @@ smbfs_chmod (vfs *me, char *path, int mode)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_chown (vfs *me, char *path, int owner, int group)
|
||||
smbfs_chown (struct vfs_class *me, char *path, int owner, int group)
|
||||
{
|
||||
DEBUG(3, ("smbfs_chown(path:%s, owner:%d, group:%d)\n", path, owner, group));
|
||||
my_errno = EOPNOTSUPP; /* ready for your labotomy? */
|
||||
@ -832,7 +832,7 @@ smbfs_chown (vfs *me, char *path, int owner, int group)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_utime (vfs *me, char *path, struct utimbuf *times)
|
||||
smbfs_utime (struct vfs_class *me, char *path, struct utimbuf *times)
|
||||
{
|
||||
DEBUG(3, ("smbfs_utime(path:%s)\n", path));
|
||||
my_errno = EOPNOTSUPP;
|
||||
@ -840,7 +840,7 @@ smbfs_utime (vfs *me, char *path, struct utimbuf *times)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_readlink (vfs *me, char *path, char *buf, int size)
|
||||
smbfs_readlink (struct vfs_class *me, char *path, char *buf, int size)
|
||||
{
|
||||
DEBUG(3, ("smbfs_readlink(path:%s, buf:%s, size:%d)\n", path, buf, size));
|
||||
my_errno = EOPNOTSUPP;
|
||||
@ -848,7 +848,7 @@ smbfs_readlink (vfs *me, char *path, char *buf, int size)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_symlink (vfs *me, char *n1, char *n2)
|
||||
smbfs_symlink (struct vfs_class *me, char *n1, char *n2)
|
||||
{
|
||||
DEBUG(3, ("smbfs_symlink(n1:%s, n2:%s)\n", n1, n2));
|
||||
my_errno = EOPNOTSUPP;
|
||||
@ -1178,7 +1178,7 @@ is_error (int result, int errno_num)
|
||||
#endif
|
||||
|
||||
static void *
|
||||
smbfs_opendir (vfs *me, char *dirname)
|
||||
smbfs_opendir (struct vfs_class *me, char *dirname)
|
||||
{
|
||||
opendir_info *smbfs_info;
|
||||
smbfs_connection *sc;
|
||||
@ -1427,7 +1427,7 @@ get_stat_info (smbfs_connection * sc, char *path, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_chdir (vfs *me, char *path)
|
||||
smbfs_chdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
char *remote_dir;
|
||||
smbfs_connection *sc;
|
||||
@ -1441,7 +1441,7 @@ smbfs_chdir (vfs *me, char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
loaddir(vfs *me, const char *path)
|
||||
loaddir(struct vfs_class *me, const char *path)
|
||||
{
|
||||
void *info;
|
||||
char *mypath, *p;
|
||||
@ -1463,7 +1463,7 @@ loaddir(vfs *me, const char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_stat (vfs * me, char *path, struct stat *buf)
|
||||
smbfs_stat (struct vfs_class * me, char *path, struct stat *buf)
|
||||
{
|
||||
smbfs_connection *sc;
|
||||
pstring server_url;
|
||||
@ -1599,7 +1599,7 @@ smbfs_lseek (void *data, off_t offset, int whence)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_mknod (vfs *me, char *path, int mode, int dev)
|
||||
smbfs_mknod (struct vfs_class *me, char *path, int mode, int dev)
|
||||
{
|
||||
DEBUG(3, ("smbfs_mknod(path:%s, mode:%d, dev:%d)\n", path, mode, dev));
|
||||
my_errno = EOPNOTSUPP;
|
||||
@ -1607,7 +1607,7 @@ smbfs_mknod (vfs *me, char *path, int mode, int dev)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_mkdir (vfs * me, char *path, mode_t mode)
|
||||
smbfs_mkdir (struct vfs_class * me, char *path, mode_t mode)
|
||||
{
|
||||
smbfs_connection *sc;
|
||||
char *remote_file;
|
||||
@ -1630,7 +1630,7 @@ smbfs_mkdir (vfs * me, char *path, mode_t mode)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_rmdir (vfs *me, char *path)
|
||||
smbfs_rmdir (struct vfs_class *me, char *path)
|
||||
{
|
||||
smbfs_connection *sc;
|
||||
char *remote_file;
|
||||
@ -1654,7 +1654,7 @@ smbfs_rmdir (vfs *me, char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_link (vfs *me, char *p1, char *p2)
|
||||
smbfs_link (struct vfs_class *me, char *p1, char *p2)
|
||||
{
|
||||
DEBUG (3, ("smbfs_link(p1:%s, p2:%s)\n", p1, p2));
|
||||
my_errno = EOPNOTSUPP;
|
||||
@ -1665,7 +1665,7 @@ smbfs_link (vfs *me, char *p1, char *p2)
|
||||
* out of them
|
||||
*/
|
||||
static vfsid
|
||||
smbfs_getid (vfs *me, const char *p, struct vfs_stamping **parent)
|
||||
smbfs_getid (struct vfs_class *me, const char *p, struct vfs_stamping **parent)
|
||||
{
|
||||
*parent = NULL;
|
||||
DEBUG (3, ("smbfs_getid(p:%s)\n", p));
|
||||
@ -1727,7 +1727,7 @@ my_forget (char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_setctl (vfs *me, char *path, int ctlop, char *arg)
|
||||
smbfs_setctl (struct vfs_class *me, char *path, int ctlop, char *arg)
|
||||
{
|
||||
DEBUG(3, ("smbfs_setctl(path:%s, ctlop:%d)\n", path, ctlop));
|
||||
switch (ctlop) {
|
||||
@ -1782,7 +1782,7 @@ open_readwrite (smbfs_handle *remote_handle, char *rname, int flags, int mode)
|
||||
}
|
||||
|
||||
static void *
|
||||
smbfs_open (vfs *me, char *file, int flags, int mode)
|
||||
smbfs_open (struct vfs_class *me, char *file, int flags, int mode)
|
||||
{
|
||||
char *remote_file, *p;
|
||||
void *ret;
|
||||
@ -1812,7 +1812,7 @@ smbfs_open (vfs *me, char *file, int flags, int mode)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_unlink (vfs *me, char *path)
|
||||
smbfs_unlink (struct vfs_class *me, char *path)
|
||||
{
|
||||
smbfs_connection *sc;
|
||||
char *remote_file, *p;
|
||||
@ -1835,7 +1835,7 @@ smbfs_unlink (vfs *me, char *path)
|
||||
}
|
||||
|
||||
static int
|
||||
smbfs_rename (vfs *me, char *a, char *b)
|
||||
smbfs_rename (struct vfs_class *me, char *a, char *b)
|
||||
{
|
||||
smbfs_connection *sc;
|
||||
char *ra, *rb;
|
||||
@ -1887,7 +1887,7 @@ smbfs_fstat (void *data, struct stat *buf)
|
||||
return 0;
|
||||
}
|
||||
|
||||
vfs vfs_smbfs_ops = {
|
||||
struct vfs_class vfs_smbfs_ops = {
|
||||
NULL, /* This is place of next pointer */
|
||||
"smbfs",
|
||||
VFSF_NOLINKS, /* flags */
|
||||
|
20
vfs/tar.c
20
vfs/tar.c
@ -61,7 +61,7 @@ static long from_oct (int digs, char *where)
|
||||
|
||||
static struct stat hstat; /* Stat struct corresponding */
|
||||
|
||||
static void tar_free_archive (vfs *me, vfs_s_super *archive)
|
||||
static void tar_free_archive (struct vfs_class *me, vfs_s_super *archive)
|
||||
{
|
||||
if (archive->u.tar.fd != -1)
|
||||
mc_close(archive->u.tar.fd);
|
||||
@ -71,7 +71,7 @@ static void tar_free_archive (vfs *me, vfs_s_super *archive)
|
||||
static int current_tar_position = 0;
|
||||
|
||||
/* Returns fd of the open tar file */
|
||||
static int tar_open_archive (vfs *me, char *name, vfs_s_super *archive)
|
||||
static int tar_open_archive (struct vfs_class *me, char *name, vfs_s_super *archive)
|
||||
{
|
||||
int result, type;
|
||||
mode_t mode;
|
||||
@ -141,7 +141,7 @@ static void skip_n_records (vfs_s_super *archive, int tard, int n)
|
||||
current_tar_position += n * RECORDSIZE;
|
||||
}
|
||||
|
||||
static void fill_stat_from_header (vfs *me, struct stat *st, union record *header)
|
||||
static void fill_stat_from_header (struct vfs_class *me, struct stat *st, union record *header)
|
||||
{
|
||||
st->st_mode = from_oct (8, header->header.mode);
|
||||
|
||||
@ -198,7 +198,7 @@ typedef enum {
|
||||
*
|
||||
*/
|
||||
static ReadStatus
|
||||
read_header (vfs *me, vfs_s_super *archive, int tard)
|
||||
read_header (struct vfs_class *me, vfs_s_super *archive, int tard)
|
||||
{
|
||||
register int i;
|
||||
register long sum, signed_sum, recsum;
|
||||
@ -376,7 +376,7 @@ read_header (vfs *me, vfs_s_super *archive, int tard)
|
||||
* Main loop for reading an archive.
|
||||
* Returns 0 on success, -1 on error.
|
||||
*/
|
||||
static int open_archive (vfs *me, vfs_s_super *archive, char *name, char *op)
|
||||
static int open_archive (struct vfs_class *me, vfs_s_super *archive, char *name, char *op)
|
||||
{
|
||||
ReadStatus status = STATUS_EOFMARK; /* Initial status at start of archive */
|
||||
ReadStatus prev_status;
|
||||
@ -435,7 +435,7 @@ static int open_archive (vfs *me, vfs_s_super *archive, char *name, char *op)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void *tar_super_check(vfs *me, char *archive_name, char *op)
|
||||
static void *tar_super_check(struct vfs_class *me, char *archive_name, char *op)
|
||||
{
|
||||
static struct stat stat_buf;
|
||||
if (mc_stat (archive_name, &stat_buf))
|
||||
@ -444,7 +444,7 @@ static void *tar_super_check(vfs *me, char *archive_name, char *op)
|
||||
}
|
||||
|
||||
static int
|
||||
tar_super_same (vfs *me, struct vfs_s_super *parc, char *archive_name,
|
||||
tar_super_same (struct vfs_class *me, struct vfs_s_super *parc, char *archive_name,
|
||||
char *op, void *cookie)
|
||||
{
|
||||
struct stat *archive_stat = cookie; /* stat of main archive */
|
||||
@ -468,7 +468,7 @@ static int tar_read (void *fh, char *buffer, int count)
|
||||
{
|
||||
off_t begin = FH->ino->u.tar.data_offset;
|
||||
int fd = FH_SUPER->u.tar.fd;
|
||||
vfs *me = FH_SUPER->me;
|
||||
struct vfs_class *me = FH_SUPER->me;
|
||||
|
||||
if (mc_lseek (fd, begin + FH->pos, SEEK_SET) !=
|
||||
begin + FH->pos) ERRNOR (EIO, -1);
|
||||
@ -481,7 +481,7 @@ static int tar_read (void *fh, char *buffer, int count)
|
||||
return count;
|
||||
}
|
||||
|
||||
static int tar_ungetlocalcopy (vfs *me, char *path, char *local, int has_changed)
|
||||
static int tar_ungetlocalcopy (struct vfs_class *me, char *path, char *local, int has_changed)
|
||||
{
|
||||
/* We do just nothing. (We are read only and do not need to free local,
|
||||
since it will be freed when tar archive will be freed */
|
||||
@ -489,7 +489,7 @@ static int tar_ungetlocalcopy (vfs *me, char *path, char *local, int has_changed
|
||||
ERRNOR (EROFS, -has_changed);
|
||||
}
|
||||
|
||||
static int tar_fh_open (vfs *me, vfs_s_fh *fh, int flags, int mode)
|
||||
static int tar_fh_open (struct vfs_class *me, vfs_s_fh *fh, int flags, int mode)
|
||||
{
|
||||
if ((flags & O_ACCMODE) != O_RDONLY) ERRNOR (EROFS, -1);
|
||||
return 0;
|
||||
|
@ -269,7 +269,7 @@ void com_err (const char *str, long err_code, const char *s2, ...)
|
||||
}
|
||||
|
||||
static void *
|
||||
undelfs_opendir (vfs *me, char *dirname)
|
||||
undelfs_opendir (struct vfs_class *me, char *dirname)
|
||||
{
|
||||
char *file, *f;
|
||||
|
||||
@ -370,7 +370,7 @@ typedef struct {
|
||||
|
||||
/* We do not support lseek */
|
||||
static void *
|
||||
undelfs_open (vfs *me, char *fname, int flags, int mode)
|
||||
undelfs_open (struct vfs_class *me, char *fname, int flags, int mode)
|
||||
{
|
||||
char *file, *f;
|
||||
ext2_ino_t inode, i;
|
||||
@ -544,7 +544,7 @@ do_stat (int inode_index, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
undelfs_lstat(vfs *me, char *path, struct stat *buf)
|
||||
undelfs_lstat(struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
int inode_index;
|
||||
char *file, *f;
|
||||
@ -582,7 +582,7 @@ undelfs_lstat(vfs *me, char *path, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
undelfs_stat(vfs *me, char *path, struct stat *buf)
|
||||
undelfs_stat(struct vfs_class *me, char *path, struct stat *buf)
|
||||
{
|
||||
return undelfs_lstat (me, path, buf);
|
||||
}
|
||||
@ -597,7 +597,7 @@ undelfs_fstat (void *vfs_info, struct stat *buf)
|
||||
}
|
||||
|
||||
static int
|
||||
undelfs_chdir(vfs *me, char *path)
|
||||
undelfs_chdir(struct vfs_class *me, char *path)
|
||||
{
|
||||
char *file, *f;
|
||||
int fd;
|
||||
@ -629,7 +629,7 @@ undelfs_lseek(void *vfs_info, off_t offset, int whence)
|
||||
}
|
||||
|
||||
static vfsid
|
||||
undelfs_getid(vfs *me, const char *path, struct vfs_stamping **parent)
|
||||
undelfs_getid(struct vfs_class *me, const char *path, struct vfs_stamping **parent)
|
||||
{
|
||||
char *ext2_fname, *file;
|
||||
|
||||
@ -658,7 +658,7 @@ undelfs_free(vfsid id)
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
static int
|
||||
undelfs_init(vfs *me) {
|
||||
undelfs_init(struct vfs_class *me) {
|
||||
undelfserr = _(undelfserr);
|
||||
return 1;
|
||||
}
|
||||
@ -666,7 +666,7 @@ undelfs_init(vfs *me) {
|
||||
#define undelfs_init NULL
|
||||
#endif
|
||||
|
||||
vfs vfs_undelfs_ops = {
|
||||
struct vfs_class vfs_undelfs_ops = {
|
||||
NULL, /* This is place of next pointer */
|
||||
"undelfs",
|
||||
0, /* flags */
|
||||
|
92
vfs/vfs.c
92
vfs/vfs.c
@ -72,7 +72,7 @@ static int current_year;
|
||||
|
||||
static struct {
|
||||
void *fs_info;
|
||||
vfs *operations;
|
||||
struct vfs_class *operations;
|
||||
} vfs_file_table [MAX_VFS_FILES];
|
||||
|
||||
static int
|
||||
@ -90,7 +90,7 @@ get_bucket (void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static vfs *vfs_list;
|
||||
static struct vfs_class *vfs_list;
|
||||
|
||||
int
|
||||
vfs_register_class (struct vfs_class *vfs)
|
||||
@ -174,12 +174,12 @@ path_magic (const char *path)
|
||||
* What is left in path is p1. You still want to g_free(path), you DON'T
|
||||
* want to free neither *inpath nor *op
|
||||
*/
|
||||
vfs *
|
||||
struct vfs_class *
|
||||
vfs_split (const char *path, char **inpath, char **op)
|
||||
{
|
||||
char *semi;
|
||||
char *slash;
|
||||
vfs *ret;
|
||||
struct vfs_class *ret;
|
||||
|
||||
if (!path)
|
||||
vfs_die("Cannot split NULL");
|
||||
@ -216,12 +216,12 @@ vfs_split (const char *path, char **inpath, char **op)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static vfs *
|
||||
static struct vfs_class *
|
||||
_vfs_get_class (const char *path)
|
||||
{
|
||||
char *semi;
|
||||
char *slash;
|
||||
vfs *ret;
|
||||
struct vfs_class *ret;
|
||||
|
||||
g_return_val_if_fail(path, NULL);
|
||||
|
||||
@ -245,10 +245,10 @@ _vfs_get_class (const char *path)
|
||||
return ret;
|
||||
}
|
||||
|
||||
vfs *
|
||||
struct vfs_class *
|
||||
vfs_get_class (const char *path)
|
||||
{
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
|
||||
vfs = _vfs_get_class(path);
|
||||
|
||||
@ -272,7 +272,7 @@ vfs_timeouts ()
|
||||
}
|
||||
|
||||
static void
|
||||
vfs_addstamp (vfs *v, vfsid id, struct vfs_stamping *parent)
|
||||
vfs_addstamp (struct vfs_class *v, vfsid id, struct vfs_stamping *parent)
|
||||
{
|
||||
if (!(v->flags & VFSF_LOCAL) && id != (vfsid)-1){
|
||||
struct vfs_stamping *stamp;
|
||||
@ -315,7 +315,7 @@ vfs_addstamp (vfs *v, vfsid id, struct vfs_stamping *parent)
|
||||
}
|
||||
|
||||
void
|
||||
vfs_stamp (vfs *v, vfsid id)
|
||||
vfs_stamp (struct vfs_class *v, vfsid id)
|
||||
{
|
||||
struct vfs_stamping *stamp;
|
||||
|
||||
@ -343,7 +343,7 @@ vfs_rm_parents (struct vfs_stamping *stamp)
|
||||
}
|
||||
|
||||
void
|
||||
vfs_rmstamp (vfs *v, vfsid id, int removeparents)
|
||||
vfs_rmstamp (struct vfs_class *v, vfsid id, int removeparents)
|
||||
{
|
||||
struct vfs_stamping *stamp, *st1;
|
||||
|
||||
@ -366,7 +366,7 @@ vfs_rmstamp (vfs *v, vfsid id, int removeparents)
|
||||
}
|
||||
|
||||
static int
|
||||
ferrno (vfs *vfs)
|
||||
ferrno (struct vfs_class *vfs)
|
||||
{
|
||||
return vfs->ferrno ? (*vfs->ferrno)(vfs) : E_UNKNOWN;
|
||||
/* Hope that error message is obscure enough ;-) */
|
||||
@ -381,7 +381,7 @@ mc_open (const char *filename, int flags, ...)
|
||||
va_list ap;
|
||||
|
||||
char *file = vfs_canon (filename);
|
||||
vfs *vfs = vfs_get_class (file);
|
||||
struct vfs_class *vfs = vfs_get_class (file);
|
||||
|
||||
/* Get the mode flag */ /* FIXME: should look if O_CREAT is present */
|
||||
va_start (ap, flags);
|
||||
@ -413,7 +413,7 @@ mc_open (const char *filename, int flags, ...)
|
||||
#define MC_OP(name, inarg, callarg, pre, post) \
|
||||
int mc_##name inarg \
|
||||
{ \
|
||||
vfs *vfs; \
|
||||
struct vfs_class *vfs; \
|
||||
int result; \
|
||||
\
|
||||
pre \
|
||||
@ -434,7 +434,7 @@ MC_HANDLEOP(read, (int handle, char *buffer, int count), (vfs_info (handle), buf
|
||||
int
|
||||
mc_ctl (int handle, int ctlop, int arg)
|
||||
{
|
||||
vfs *vfs = vfs_op (handle);
|
||||
struct vfs_class *vfs = vfs_op (handle);
|
||||
|
||||
return vfs->ctl ? (*vfs->ctl)(vfs_info (handle), ctlop, arg) : 0;
|
||||
}
|
||||
@ -442,7 +442,7 @@ mc_ctl (int handle, int ctlop, int arg)
|
||||
int
|
||||
mc_setctl (char *path, int ctlop, char *arg)
|
||||
{
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
int result;
|
||||
|
||||
if (!path)
|
||||
@ -458,7 +458,7 @@ mc_setctl (char *path, int ctlop, char *arg)
|
||||
int
|
||||
mc_close (int handle)
|
||||
{
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
int result;
|
||||
|
||||
if (handle == -1 || !vfs_info (handle))
|
||||
@ -483,7 +483,7 @@ mc_opendir (char *dirname)
|
||||
{
|
||||
int handle, *handlep;
|
||||
void *info;
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
|
||||
dirname = vfs_canon (dirname);
|
||||
vfs = vfs_get_class (dirname);
|
||||
@ -507,7 +507,7 @@ void
|
||||
mc_seekdir (DIR *dirp, int offset)
|
||||
{
|
||||
int handle;
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
|
||||
if (!dirp){
|
||||
errno = EFAULT;
|
||||
@ -525,7 +525,7 @@ mc_seekdir (DIR *dirp, int offset)
|
||||
type mc_##name (DIR *dirp) \
|
||||
{ \
|
||||
int handle; \
|
||||
vfs *vfs; \
|
||||
struct vfs_class *vfs; \
|
||||
type result; \
|
||||
\
|
||||
if (!dirp){ \
|
||||
@ -547,7 +547,7 @@ int
|
||||
mc_closedir (DIR *dirp)
|
||||
{
|
||||
int handle = *(int *) dirp;
|
||||
vfs *vfs = vfs_op (handle);
|
||||
struct vfs_class *vfs = vfs_op (handle);
|
||||
int result;
|
||||
|
||||
result = vfs->closedir ? (*vfs->closedir)(vfs_info (handle)) : -1;
|
||||
@ -557,7 +557,7 @@ mc_closedir (DIR *dirp)
|
||||
}
|
||||
|
||||
int mc_stat (const char *filename, struct stat *buf) {
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
int result;
|
||||
char *path;
|
||||
path = vfs_canon (filename); vfs = vfs_get_class (path);
|
||||
@ -569,7 +569,7 @@ int mc_stat (const char *filename, struct stat *buf) {
|
||||
}
|
||||
|
||||
int mc_lstat (const char *filename, struct stat *buf) {
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
int result;
|
||||
char *path;
|
||||
path = vfs_canon (filename); vfs = vfs_get_class (path);
|
||||
@ -581,7 +581,7 @@ int mc_lstat (const char *filename, struct stat *buf) {
|
||||
}
|
||||
|
||||
int mc_fstat (int handle, struct stat *buf) {
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
int result;
|
||||
|
||||
if (handle == -1)
|
||||
@ -667,7 +667,7 @@ MC_NAMEOP (symlink, (char *name1, char *path), (vfs, name1, path))
|
||||
#define MC_RENAMEOP(name) \
|
||||
int mc_##name (const char *fname1, const char *fname2) \
|
||||
{ \
|
||||
vfs *vfs; \
|
||||
struct vfs_class *vfs; \
|
||||
int result; \
|
||||
\
|
||||
char *name2, *name1 = vfs_canon (fname1); \
|
||||
@ -695,7 +695,7 @@ MC_HANDLEOP (write, (int handle, char *buf, int nbyte), (vfs_info (handle), buf,
|
||||
|
||||
off_t mc_lseek (int fd, off_t offset, int whence)
|
||||
{
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
int result;
|
||||
|
||||
if (fd == -1)
|
||||
@ -743,7 +743,7 @@ vfs_canon (const char *path)
|
||||
}
|
||||
|
||||
static vfsid
|
||||
vfs_ncs_getid (vfs *nvfs, const char *dir, struct vfs_stamping **par)
|
||||
vfs_ncs_getid (struct vfs_class *nvfs, const char *dir, struct vfs_stamping **par)
|
||||
{
|
||||
vfsid nvfsid;
|
||||
char *dir1;
|
||||
@ -755,7 +755,7 @@ vfs_ncs_getid (vfs *nvfs, const char *dir, struct vfs_stamping **par)
|
||||
}
|
||||
|
||||
static int
|
||||
is_parent (vfs * nvfs, vfsid nvfsid, struct vfs_stamping *parent)
|
||||
is_parent (struct vfs_class * nvfs, vfsid nvfsid, struct vfs_stamping *parent)
|
||||
{
|
||||
struct vfs_stamping *stamp;
|
||||
|
||||
@ -767,9 +767,9 @@ is_parent (vfs * nvfs, vfsid nvfsid, struct vfs_stamping *parent)
|
||||
}
|
||||
|
||||
static void
|
||||
_vfs_add_noncurrent_stamps (vfs *oldvfs, vfsid oldvfsid, struct vfs_stamping *parent)
|
||||
_vfs_add_noncurrent_stamps (struct vfs_class *oldvfs, vfsid oldvfsid, struct vfs_stamping *parent)
|
||||
{
|
||||
vfs *nvfs, *n2vfs, *n3vfs;
|
||||
struct vfs_class *nvfs, *n2vfs, *n3vfs;
|
||||
vfsid nvfsid, n2vfsid, n3vfsid;
|
||||
struct vfs_stamping *par, *stamp;
|
||||
int f;
|
||||
@ -807,8 +807,8 @@ _vfs_add_noncurrent_stamps (vfs *oldvfs, vfsid oldvfsid, struct vfs_stamping *pa
|
||||
if ((n2vfs == oldvfs && n2vfsid == oldvfsid) || f)
|
||||
return;
|
||||
} else {
|
||||
n2vfs = (vfs *) -1;
|
||||
n2vfsid = (vfs *) -1;
|
||||
n2vfs = (struct vfs_class *) -1;
|
||||
n2vfsid = (struct vfs_class *) -1;
|
||||
}
|
||||
|
||||
if (get_other_type () == view_listing){
|
||||
@ -819,8 +819,8 @@ _vfs_add_noncurrent_stamps (vfs *oldvfs, vfsid oldvfsid, struct vfs_stamping *pa
|
||||
if ((n3vfs == oldvfs && n3vfsid == oldvfsid) || f)
|
||||
return;
|
||||
} else {
|
||||
n3vfs = (vfs *)-1;
|
||||
n3vfsid = (vfs *)-1;
|
||||
n3vfs = (struct vfs_class *)-1;
|
||||
n3vfsid = (struct vfs_class *)-1;
|
||||
}
|
||||
|
||||
if ((*oldvfs->nothingisopen) (oldvfsid)){
|
||||
@ -847,7 +847,7 @@ _vfs_add_noncurrent_stamps (vfs *oldvfs, vfsid oldvfsid, struct vfs_stamping *pa
|
||||
}
|
||||
|
||||
void
|
||||
vfs_add_noncurrent_stamps (vfs *oldvfs, vfsid oldvfsid,
|
||||
vfs_add_noncurrent_stamps (struct vfs_class *oldvfs, vfsid oldvfsid,
|
||||
struct vfs_stamping *parent)
|
||||
{
|
||||
_vfs_add_noncurrent_stamps (oldvfs, oldvfsid, parent);
|
||||
@ -857,7 +857,7 @@ vfs_add_noncurrent_stamps (vfs *oldvfs, vfsid oldvfsid,
|
||||
static void
|
||||
vfs_stamp_path (char *path)
|
||||
{
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
vfsid id;
|
||||
struct vfs_stamping *par, *stamp;
|
||||
|
||||
@ -894,7 +894,7 @@ int
|
||||
mc_chdir (char *path)
|
||||
{
|
||||
char *new_dir, *new_dir_copy;
|
||||
vfs *old_vfs, *new_vfs;
|
||||
struct vfs_class *old_vfs, *new_vfs;
|
||||
vfsid old_vfsid;
|
||||
struct vfs_stamping *parent;
|
||||
int result;
|
||||
@ -962,7 +962,7 @@ vfs_file_is_smb (const char *filename)
|
||||
{
|
||||
#ifdef WITH_SMBFS
|
||||
#ifdef USE_NETCODE
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
char *fname = vfs_canon (filename);
|
||||
vfs = vfs_get_class (fname);
|
||||
g_free (fname);
|
||||
@ -980,14 +980,14 @@ MC_NAMEOP (mknod, (char *path, int mode, int dev), (vfs, path, mode, dev))
|
||||
static struct mc_mmapping {
|
||||
caddr_t addr;
|
||||
void *vfs_info;
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
struct mc_mmapping *next;
|
||||
} *mc_mmaparray = NULL;
|
||||
|
||||
caddr_t
|
||||
mc_mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||
{
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
caddr_t result;
|
||||
struct mc_mmapping *mcm;
|
||||
|
||||
@ -1032,7 +1032,7 @@ mc_munmap (caddr_t addr, size_t len)
|
||||
#endif
|
||||
|
||||
char *
|
||||
mc_def_getlocalcopy (vfs *vfs, char *filename)
|
||||
mc_def_getlocalcopy (struct vfs_class *vfs, char *filename)
|
||||
{
|
||||
char *tmp, *suffix, *basename;
|
||||
int fdin, fdout, i;
|
||||
@ -1092,7 +1092,7 @@ mc_getlocalcopy (const char *pathname)
|
||||
{
|
||||
char *result;
|
||||
char *path = vfs_canon (pathname);
|
||||
vfs *vfs = vfs_get_class (path);
|
||||
struct vfs_class *vfs = vfs_get_class (path);
|
||||
|
||||
result = vfs->getlocalcopy ? (*vfs->getlocalcopy)(vfs, path) :
|
||||
mc_def_getlocalcopy (vfs, path);
|
||||
@ -1103,7 +1103,7 @@ mc_getlocalcopy (const char *pathname)
|
||||
}
|
||||
|
||||
int
|
||||
mc_def_ungetlocalcopy (vfs *vfs, char *filename, char *local, int has_changed)
|
||||
mc_def_ungetlocalcopy (struct vfs_class *vfs, char *filename, char *local, int has_changed)
|
||||
{ /* Dijkstra probably hates me... But he should teach me how to do this nicely. */
|
||||
int fdin = -1, fdout = -1, i;
|
||||
if (has_changed){
|
||||
@ -1150,7 +1150,7 @@ mc_ungetlocalcopy (const char *pathname, char *local, int has_changed)
|
||||
{
|
||||
int return_value = 0;
|
||||
char *path = vfs_canon (pathname);
|
||||
vfs *vfs = vfs_get_class (path);
|
||||
struct vfs_class *vfs = vfs_get_class (path);
|
||||
|
||||
return_value = vfs->ungetlocalcopy ?
|
||||
(*vfs->ungetlocalcopy)(vfs, path, local, has_changed) :
|
||||
@ -1250,7 +1250,7 @@ void
|
||||
vfs_shut (void)
|
||||
{
|
||||
struct vfs_stamping *stamp, *st;
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
|
||||
for (stamp = stamps, stamps = 0; stamp != NULL;){
|
||||
(*stamp->v->free)(stamp->id);
|
||||
@ -1277,7 +1277,7 @@ vfs_shut (void)
|
||||
void
|
||||
vfs_fill_names (void (*func)(char *))
|
||||
{
|
||||
vfs *vfs;
|
||||
struct vfs_class *vfs;
|
||||
|
||||
for (vfs=vfs_list; vfs; vfs=vfs->next)
|
||||
if (vfs->fill_names)
|
||||
|
100
vfs/vfs.h
100
vfs/vfs.h
@ -6,9 +6,15 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* Our virtual file system layer */
|
||||
typedef void *vfsid;
|
||||
struct vfs_stamping;
|
||||
|
||||
struct vfs_stamping {
|
||||
struct vfs_class *v;
|
||||
vfsid id;
|
||||
struct vfs_stamping *parent; /* At the moment applies to tarfs only */
|
||||
struct vfs_stamping *next;
|
||||
struct timeval time;
|
||||
};
|
||||
|
||||
/*
|
||||
* Notice: Andrej Borsenkow <borsenkow.msk@sni.de> reports system
|
||||
@ -20,70 +26,68 @@ struct vfs_stamping;
|
||||
#define VFSF_LOCAL 1 /* Class is local (not virtual) filesystem */
|
||||
#define VFSF_NOLINKS 2 /* Hard links not supported */
|
||||
|
||||
typedef struct vfs_class vfs;
|
||||
|
||||
struct vfs_class {
|
||||
vfs *next;
|
||||
struct vfs_class *next;
|
||||
char *name; /* "FIles over SHell" */
|
||||
int flags;
|
||||
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) (vfs *me);
|
||||
void (*done) (vfs *me);
|
||||
void (*fill_names) (vfs *me, void (*)(char *));
|
||||
int (*init) (struct vfs_class *me);
|
||||
void (*done) (struct vfs_class *me);
|
||||
void (*fill_names) (struct vfs_class *me, void (*)(char *));
|
||||
|
||||
int (*which) (vfs *me, char *path);
|
||||
int (*which) (struct vfs_class *me, char *path);
|
||||
|
||||
void *(*open) (vfs *me, char *fname, int flags, int mode);
|
||||
void *(*open) (struct vfs_class *me, char *fname, int flags, int mode);
|
||||
int (*close) (void *vfs_info);
|
||||
int (*read) (void *vfs_info, char *buffer, int count);
|
||||
int (*write) (void *vfs_info, char *buf, int count);
|
||||
|
||||
void *(*opendir) (vfs *me, char *dirname);
|
||||
void *(*opendir) (struct vfs_class *me, char *dirname);
|
||||
void *(*readdir) (void *vfs_info);
|
||||
int (*closedir) (void *vfs_info);
|
||||
int (*telldir) (void *vfs_info);
|
||||
void (*seekdir) (void *vfs_info, int offset);
|
||||
|
||||
int (*stat) (vfs *me, char *path, struct stat * buf);
|
||||
int (*lstat) (vfs *me, char *path, struct stat * buf);
|
||||
int (*stat) (struct vfs_class *me, char *path, struct stat * buf);
|
||||
int (*lstat) (struct vfs_class *me, char *path, struct stat * buf);
|
||||
int (*fstat) (void *vfs_info, struct stat * buf);
|
||||
|
||||
int (*chmod) (vfs *me, char *path, int mode);
|
||||
int (*chown) (vfs *me, char *path, int owner, int group);
|
||||
int (*utime) (vfs *me, char *path, struct utimbuf * times);
|
||||
int (*chmod) (struct vfs_class *me, char *path, int mode);
|
||||
int (*chown) (struct vfs_class *me, char *path, int owner, int group);
|
||||
int (*utime) (struct vfs_class *me, char *path, struct utimbuf * times);
|
||||
|
||||
int (*readlink) (vfs *me, char *path, char *buf, int size);
|
||||
int (*symlink) (vfs *me, char *n1, char *n2);
|
||||
int (*link) (vfs *me, char *p1, char *p2);
|
||||
int (*unlink) (vfs *me, char *path);
|
||||
int (*rename) (vfs *me, char *p1, char *p2);
|
||||
int (*chdir) (vfs *me, char *path);
|
||||
int (*ferrno) (vfs *me);
|
||||
int (*readlink) (struct vfs_class *me, char *path, char *buf, int size);
|
||||
int (*symlink) (struct vfs_class *me, char *n1, char *n2);
|
||||
int (*link) (struct vfs_class *me, char *p1, char *p2);
|
||||
int (*unlink) (struct vfs_class *me, char *path);
|
||||
int (*rename) (struct vfs_class *me, char *p1, char *p2);
|
||||
int (*chdir) (struct vfs_class *me, char *path);
|
||||
int (*ferrno) (struct vfs_class *me);
|
||||
int (*lseek) (void *vfs_info, off_t offset, int whence);
|
||||
int (*mknod) (vfs *me, char *path, int mode, int dev);
|
||||
int (*mknod) (struct vfs_class *me, char *path, int mode, int dev);
|
||||
|
||||
vfsid (*getid) (vfs *me, const char *path,
|
||||
vfsid (*getid) (struct vfs_class *me, const char *path,
|
||||
struct vfs_stamping ** parent);
|
||||
|
||||
int (*nothingisopen) (vfsid id);
|
||||
void (*free) (vfsid id);
|
||||
|
||||
char *(*getlocalcopy) (vfs *me, char *filename);
|
||||
int (*ungetlocalcopy) (vfs *me, char *filename, char *local,
|
||||
char *(*getlocalcopy) (struct vfs_class *me, char *filename);
|
||||
int (*ungetlocalcopy) (struct vfs_class *me, char *filename, char *local,
|
||||
int has_changed);
|
||||
|
||||
int (*mkdir) (vfs *me, char *path, mode_t mode);
|
||||
int (*rmdir) (vfs *me, char *path);
|
||||
int (*mkdir) (struct vfs_class *me, char *path, mode_t mode);
|
||||
int (*rmdir) (struct vfs_class *me, char *path);
|
||||
|
||||
int (*ctl) (void *vfs_info, int ctlop, int arg);
|
||||
int (*setctl) (vfs *me, char *path, int ctlop, char *arg);
|
||||
int (*setctl) (struct vfs_class *me, char *path, int ctlop, char *arg);
|
||||
#ifdef HAVE_MMAP
|
||||
caddr_t (*mmap) (vfs *me, caddr_t addr, size_t len, int prot,
|
||||
caddr_t (*mmap) (struct vfs_class *me, caddr_t addr, size_t len, int prot,
|
||||
int flags, void *vfs_info, off_t offset);
|
||||
int (*munmap) (vfs *me, caddr_t addr, size_t len, void *vfs_info);
|
||||
int (*munmap) (struct vfs_class *me, caddr_t addr, size_t len, void *vfs_info);
|
||||
#endif
|
||||
};
|
||||
|
||||
@ -105,26 +109,18 @@ void init_fish (void);
|
||||
void init_ftpfs (void);
|
||||
void init_tarfs (void);
|
||||
|
||||
extern vfs vfs_local_ops;
|
||||
extern vfs vfs_smbfs_ops;
|
||||
extern vfs vfs_mcfs_ops;
|
||||
extern vfs vfs_extfs_ops;
|
||||
extern vfs vfs_sfs_ops;
|
||||
extern vfs vfs_undelfs_ops;
|
||||
|
||||
struct vfs_stamping {
|
||||
vfs *v;
|
||||
vfsid id;
|
||||
struct vfs_stamping *parent; /* At the moment applies to tarfs only */
|
||||
struct vfs_stamping *next;
|
||||
struct timeval time;
|
||||
};
|
||||
extern struct vfs_class vfs_local_ops;
|
||||
extern struct vfs_class vfs_smbfs_ops;
|
||||
extern struct vfs_class vfs_mcfs_ops;
|
||||
extern struct vfs_class vfs_extfs_ops;
|
||||
extern struct vfs_class vfs_sfs_ops;
|
||||
extern struct vfs_class vfs_undelfs_ops;
|
||||
|
||||
void vfs_init (void);
|
||||
void vfs_shut (void);
|
||||
|
||||
struct vfs_class *vfs_get_class (const char *path);
|
||||
vfs *vfs_split (const char *path, char **inpath, char **op);
|
||||
struct vfs_class *vfs_split (const char *path, char **inpath, char **op);
|
||||
char *vfs_path (const char *path);
|
||||
char *vfs_strip_suffix_from_filename (const char *filename);
|
||||
char *vfs_canon (const char *path);
|
||||
@ -141,9 +137,9 @@ vfs_file_is_local (const char *filename)
|
||||
|
||||
extern int vfs_timeout;
|
||||
|
||||
void vfs_stamp (vfs *, vfsid);
|
||||
void vfs_rmstamp (vfs *, vfsid, int);
|
||||
void vfs_add_noncurrent_stamps (vfs *, vfsid, struct vfs_stamping *);
|
||||
void vfs_stamp (struct vfs_class *, vfsid);
|
||||
void vfs_rmstamp (struct vfs_class *, vfsid, int);
|
||||
void vfs_add_noncurrent_stamps (struct vfs_class *, vfsid, struct vfs_stamping *);
|
||||
void vfs_add_current_stamps (void);
|
||||
void vfs_timeout_handler (void);
|
||||
void vfs_expire (int);
|
||||
@ -194,8 +190,8 @@ int mc_mkdir (char *path, mode_t mode);
|
||||
|
||||
char *mc_getlocalcopy (const char *pathname);
|
||||
int mc_ungetlocalcopy (const char *pathname, char *local, int has_changed);
|
||||
char *mc_def_getlocalcopy (vfs *vfs, char *filename);
|
||||
int mc_def_ungetlocalcopy (vfs *vfs, char *filename, char *local,
|
||||
char *mc_def_getlocalcopy (struct vfs_class *vfs, char *filename);
|
||||
int mc_def_ungetlocalcopy (struct vfs_class *vfs, char *filename, char *local,
|
||||
int has_changed);
|
||||
int mc_ctl (int fd, int ctlop, int arg);
|
||||
int mc_setctl (char *path, int ctlop, char *arg);
|
||||
|
@ -72,7 +72,7 @@ typedef struct vfs_s_inode {
|
||||
|
||||
typedef struct vfs_s_super {
|
||||
struct vfs_s_super **prevp, *next;
|
||||
vfs *me;
|
||||
struct vfs_class *me;
|
||||
vfs_s_inode *root;
|
||||
char *name; /* My name, whatever it means */
|
||||
int fd_usage; /* Number of open files */
|
||||
@ -150,63 +150,63 @@ struct vfs_s_data {
|
||||
dev_t rdev;
|
||||
FILE *logfile;
|
||||
|
||||
int (*init_inode) (vfs *me, vfs_s_inode *ino); /* optional */
|
||||
void (*free_inode) (vfs *me, vfs_s_inode *ino); /* optional */
|
||||
int (*init_entry) (vfs *me, vfs_s_entry *entry); /* optional */
|
||||
int (*init_inode) (struct vfs_class *me, vfs_s_inode *ino); /* optional */
|
||||
void (*free_inode) (struct vfs_class *me, vfs_s_inode *ino); /* optional */
|
||||
int (*init_entry) (struct vfs_class *me, vfs_s_entry *entry); /* optional */
|
||||
|
||||
void* (*archive_check) (vfs *me, char *name, char *op); /* optional */
|
||||
int (*archive_same) (vfs *me, vfs_s_super *psup, char *archive_name, char *op, void *cookie);
|
||||
int (*open_archive) (vfs *me, vfs_s_super *psup, char *archive_name, char *op);
|
||||
void (*free_archive) (vfs *me, vfs_s_super *psup);
|
||||
void* (*archive_check) (struct vfs_class *me, char *name, char *op); /* optional */
|
||||
int (*archive_same) (struct vfs_class *me, vfs_s_super *psup, char *archive_name, char *op, void *cookie);
|
||||
int (*open_archive) (struct vfs_class *me, vfs_s_super *psup, char *archive_name, char *op);
|
||||
void (*free_archive) (struct vfs_class *me, vfs_s_super *psup);
|
||||
|
||||
int (*fh_open) (vfs *me, vfs_s_fh *fh, int flags, int mode);
|
||||
int (*fh_close) (vfs *me, vfs_s_fh *fh);
|
||||
int (*fh_open) (struct vfs_class *me, vfs_s_fh *fh, int flags, int mode);
|
||||
int (*fh_close) (struct vfs_class *me, vfs_s_fh *fh);
|
||||
|
||||
vfs_s_entry* (*find_entry) (vfs *me, vfs_s_inode *root, char *path, int follow, int flags);
|
||||
int (*dir_load) (vfs *me, vfs_s_inode *ino, char *path);
|
||||
int (*dir_uptodate) (vfs *me, vfs_s_inode *ino);
|
||||
int (*file_store) (vfs *me, vfs_s_fh *fh, char *path, char *localname);
|
||||
vfs_s_entry* (*find_entry) (struct vfs_class *me, vfs_s_inode *root, char *path, int follow, int flags);
|
||||
int (*dir_load) (struct vfs_class *me, vfs_s_inode *ino, char *path);
|
||||
int (*dir_uptodate) (struct vfs_class *me, vfs_s_inode *ino);
|
||||
int (*file_store) (struct vfs_class *me, vfs_s_fh *fh, char *path, char *localname);
|
||||
|
||||
int (*linear_start) (vfs *me, vfs_s_fh *fh, int from);
|
||||
int (*linear_read) (vfs *me, vfs_s_fh *fh, void *buf, int len);
|
||||
void (*linear_close) (vfs *me, vfs_s_fh *fh);
|
||||
int (*linear_start) (struct vfs_class *me, vfs_s_fh *fh, int from);
|
||||
int (*linear_read) (struct vfs_class *me, vfs_s_fh *fh, void *buf, int len);
|
||||
void (*linear_close) (struct vfs_class *me, vfs_s_fh *fh);
|
||||
};
|
||||
|
||||
/* entries and inodes */
|
||||
vfs_s_inode *vfs_s_new_inode (vfs *me, vfs_s_super *super,
|
||||
vfs_s_inode *vfs_s_new_inode (struct vfs_class *me, vfs_s_super *super,
|
||||
struct stat *initstat);
|
||||
vfs_s_entry *vfs_s_new_entry (vfs *me, char *name, vfs_s_inode *inode);
|
||||
void vfs_s_free_entry (vfs *me, vfs_s_entry *ent);
|
||||
void vfs_s_insert_entry (vfs *me, vfs_s_inode *dir,
|
||||
vfs_s_entry *vfs_s_new_entry (struct vfs_class *me, char *name, vfs_s_inode *inode);
|
||||
void vfs_s_free_entry (struct vfs_class *me, vfs_s_entry *ent);
|
||||
void vfs_s_insert_entry (struct vfs_class *me, vfs_s_inode *dir,
|
||||
vfs_s_entry *ent);
|
||||
struct stat *vfs_s_default_stat (vfs *me, mode_t mode);
|
||||
struct stat *vfs_s_default_stat (struct vfs_class *me, mode_t mode);
|
||||
|
||||
void vfs_s_add_dots (vfs *me, vfs_s_inode *dir,
|
||||
void vfs_s_add_dots (struct vfs_class *me, vfs_s_inode *dir,
|
||||
vfs_s_inode *parent);
|
||||
vfs_s_entry *vfs_s_generate_entry (vfs *me, char *name,
|
||||
vfs_s_entry *vfs_s_generate_entry (struct vfs_class *me, char *name,
|
||||
struct vfs_s_inode *parent, mode_t mode);
|
||||
vfs_s_entry *vfs_s_find_entry_tree (vfs *me, vfs_s_inode *root, char *path,
|
||||
vfs_s_entry *vfs_s_find_entry_tree (struct vfs_class *me, vfs_s_inode *root, char *path,
|
||||
int follow, int flags);
|
||||
vfs_s_entry *vfs_s_find_entry_linear (vfs *me, vfs_s_inode *root, char *path,
|
||||
vfs_s_entry *vfs_s_find_entry_linear (struct vfs_class *me, vfs_s_inode *root, char *path,
|
||||
int follow, int flags);
|
||||
vfs_s_inode *vfs_s_find_inode (vfs *me, vfs_s_inode *root, char *path,
|
||||
vfs_s_inode *vfs_s_find_inode (struct vfs_class *me, vfs_s_inode *root, char *path,
|
||||
int follow, int flags);
|
||||
vfs_s_inode *vfs_s_find_root (vfs *me, vfs_s_entry *entry);
|
||||
vfs_s_inode *vfs_s_find_root (struct vfs_class *me, vfs_s_entry *entry);
|
||||
|
||||
/* outside interface */
|
||||
void vfs_s_init_class (struct vfs_class *vclass);
|
||||
char *vfs_s_get_path_mangle (vfs *me, char *inname, vfs_s_super **archive,
|
||||
char *vfs_s_get_path_mangle (struct vfs_class *me, char *inname, vfs_s_super **archive,
|
||||
int flags);
|
||||
void vfs_s_invalidate (vfs *me, vfs_s_super *super);
|
||||
char *vfs_s_fullpath (vfs *me, vfs_s_inode *ino);
|
||||
void vfs_s_invalidate (struct vfs_class *me, vfs_s_super *super);
|
||||
char *vfs_s_fullpath (struct vfs_class *me, vfs_s_inode *ino);
|
||||
|
||||
/* network filesystems support */
|
||||
int vfs_s_select_on_two (int fd1, int fd2);
|
||||
int vfs_s_get_line (vfs *me, int sock, char *buf, int buf_len, char term);
|
||||
int vfs_s_get_line_interruptible (vfs *me, char *buffer, int size, int fd);
|
||||
int vfs_s_get_line (struct vfs_class *me, int sock, char *buf, int buf_len, char term);
|
||||
int vfs_s_get_line_interruptible (struct vfs_class *me, char *buffer, int size, int fd);
|
||||
|
||||
/* misc */
|
||||
int vfs_s_retrieve_file (vfs *me, struct vfs_s_inode *ino);
|
||||
int vfs_s_retrieve_file (struct vfs_class *me, struct vfs_s_inode *ino);
|
||||
|
||||
#define ERRNOR(a, b) do { me->verrno = a; return b; } while (0)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user