mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
extfs: refactoring: rename structures...
to unify it with standard VFS ones. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
81945d32ce
commit
c29f068457
@ -74,35 +74,48 @@
|
|||||||
|
|
||||||
#define RECORDSIZE 512
|
#define RECORDSIZE 512
|
||||||
|
|
||||||
|
#define EXTFS_SUPER(a) ((extfs_super_t *) (a))
|
||||||
|
#define EXTFS_ENTRY(a) ((extfs_entry_t *) (a))
|
||||||
|
#define EXTFS_INODE(a) ((extfs_inode_t *) (a))
|
||||||
|
|
||||||
/*** file scope type declarations ****************************************************************/
|
/*** file scope type declarations ****************************************************************/
|
||||||
|
|
||||||
struct inode
|
struct extfs_super_t;
|
||||||
|
typedef struct extfs_super_t extfs_super_t;
|
||||||
|
|
||||||
|
struct extfs_entry_t;
|
||||||
|
typedef struct extfs_entry_t extfs_entry_t;
|
||||||
|
|
||||||
|
struct extfs_inode_t;
|
||||||
|
typedef struct extfs_inode_t extfs_inode_t;
|
||||||
|
|
||||||
|
struct extfs_inode_t
|
||||||
{
|
{
|
||||||
struct entry *first_in_subdir; /* only used if this is a directory */
|
extfs_entry_t *first_in_subdir; /* only used if this is a directory */
|
||||||
struct entry *last_in_subdir;
|
extfs_entry_t *last_in_subdir;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
struct archive *archive; /* And this is an archive structure */
|
extfs_super_t *archive; /* And this is an archive structure */
|
||||||
char *linkname;
|
char *linkname;
|
||||||
char *localname;
|
char *localname;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct entry
|
struct extfs_entry_t
|
||||||
{
|
{
|
||||||
struct entry *next_in_dir;
|
extfs_entry_t *next_in_dir;
|
||||||
struct entry *dir;
|
extfs_entry_t *dir;
|
||||||
char *name;
|
char *name;
|
||||||
struct inode *ino;
|
extfs_inode_t *ino;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct pseudofile
|
struct pseudofile
|
||||||
{
|
{
|
||||||
struct archive *archive;
|
extfs_super_t *archive;
|
||||||
gboolean changed;
|
gboolean changed;
|
||||||
int handle;
|
int handle;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct archive
|
struct extfs_super_t
|
||||||
{
|
{
|
||||||
int fstype;
|
int fstype;
|
||||||
char *name;
|
char *name;
|
||||||
@ -111,7 +124,7 @@ struct archive
|
|||||||
dev_t rdev;
|
dev_t rdev;
|
||||||
int fd_usage;
|
int fd_usage;
|
||||||
ino_t ino_usage;
|
ino_t ino_usage;
|
||||||
struct entry *root_entry;
|
extfs_entry_t *root_entry;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -138,17 +151,17 @@ static int my_errno = 0;
|
|||||||
/*** file scope functions ************************************************************************/
|
/*** file scope functions ************************************************************************/
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void extfs_remove_entry (struct entry *e);
|
static void extfs_remove_entry (extfs_entry_t * e);
|
||||||
static void extfs_free (vfsid id);
|
static void extfs_free (vfsid id);
|
||||||
static void extfs_free_entry (struct entry *e);
|
static void extfs_free_entry (extfs_entry_t * e);
|
||||||
static struct entry *extfs_resolve_symlinks_int (struct entry *entry, GSList * list);
|
static extfs_entry_t *extfs_resolve_symlinks_int (extfs_entry_t * entry, GSList * list);
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
extfs_fill_name (void *data, void *user_data)
|
extfs_fill_name (void *data, void *user_data)
|
||||||
{
|
{
|
||||||
struct archive *a = (struct archive *) data;
|
extfs_super_t *a = EXTFS_SUPER (data);
|
||||||
fill_names_f func = (fill_names_f) user_data;
|
fill_names_f func = (fill_names_f) user_data;
|
||||||
extfs_plugin_info_t *info;
|
extfs_plugin_info_t *info;
|
||||||
char *name;
|
char *name;
|
||||||
@ -166,7 +179,7 @@ extfs_fill_name (void *data, void *user_data)
|
|||||||
static gint
|
static gint
|
||||||
extfs_cmp_archive (const void *a, const void *b)
|
extfs_cmp_archive (const void *a, const void *b)
|
||||||
{
|
{
|
||||||
const struct archive *ar = (const struct archive *) a;
|
const extfs_super_t *ar = (const extfs_super_t *) a;
|
||||||
const char *archive_name = (const char *) b;
|
const char *archive_name = (const char *) b;
|
||||||
|
|
||||||
return (ar->name != NULL && strcmp (ar->name, archive_name) == 0) ? 0 : 1;
|
return (ar->name != NULL && strcmp (ar->name, archive_name) == 0) ? 0 : 1;
|
||||||
@ -175,11 +188,11 @@ extfs_cmp_archive (const void *a, const void *b)
|
|||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
extfs_make_dots (struct entry *ent)
|
extfs_make_dots (extfs_entry_t * ent)
|
||||||
{
|
{
|
||||||
struct entry *entry = g_new (struct entry, 1);
|
extfs_entry_t *entry = g_new (extfs_entry_t, 1);
|
||||||
struct entry *parentry = ent->dir;
|
extfs_entry_t *parentry = ent->dir;
|
||||||
struct inode *inode = ent->ino, *parent;
|
extfs_inode_t *inode = ent->ino, *parent;
|
||||||
|
|
||||||
parent = (parentry != NULL) ? parentry->ino : NULL;
|
parent = (parentry != NULL) ? parentry->ino : NULL;
|
||||||
entry->name = g_strdup (".");
|
entry->name = g_strdup (".");
|
||||||
@ -189,7 +202,7 @@ extfs_make_dots (struct entry *ent)
|
|||||||
inode->first_in_subdir = entry;
|
inode->first_in_subdir = entry;
|
||||||
inode->st.st_nlink++;
|
inode->st.st_nlink++;
|
||||||
|
|
||||||
entry->next_in_dir = g_new (struct entry, 1);
|
entry->next_in_dir = g_new (extfs_entry_t, 1);
|
||||||
entry = entry->next_in_dir;
|
entry = entry->next_in_dir;
|
||||||
entry->name = g_strdup ("..");
|
entry->name = g_strdup ("..");
|
||||||
inode->last_in_subdir = entry;
|
inode->last_in_subdir = entry;
|
||||||
@ -210,16 +223,16 @@ extfs_make_dots (struct entry *ent)
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static struct entry *
|
static extfs_entry_t *
|
||||||
extfs_generate_entry (struct archive *archive,
|
extfs_generate_entry (extfs_super_t * archive,
|
||||||
const char *name, struct entry *parentry, mode_t mode)
|
const char *name, extfs_entry_t * parentry, mode_t mode)
|
||||||
{
|
{
|
||||||
mode_t myumask;
|
mode_t myumask;
|
||||||
struct inode *inode, *parent;
|
extfs_inode_t *inode, *parent;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
|
|
||||||
parent = (parentry != NULL) ? parentry->ino : NULL;
|
parent = (parentry != NULL) ? parentry->ino : NULL;
|
||||||
entry = g_new (struct entry, 1);
|
entry = g_new (extfs_entry_t, 1);
|
||||||
|
|
||||||
entry->name = g_strdup (name);
|
entry->name = g_strdup (name);
|
||||||
entry->next_in_dir = NULL;
|
entry->next_in_dir = NULL;
|
||||||
@ -229,7 +242,7 @@ extfs_generate_entry (struct archive *archive,
|
|||||||
parent->last_in_subdir->next_in_dir = entry;
|
parent->last_in_subdir->next_in_dir = entry;
|
||||||
parent->last_in_subdir = entry;
|
parent->last_in_subdir = entry;
|
||||||
}
|
}
|
||||||
inode = g_new (struct inode, 1);
|
inode = g_new (extfs_inode_t, 1);
|
||||||
entry->ino = inode;
|
entry->ino = inode;
|
||||||
inode->localname = NULL;
|
inode->localname = NULL;
|
||||||
inode->linkname = NULL;
|
inode->linkname = NULL;
|
||||||
@ -256,11 +269,11 @@ extfs_generate_entry (struct archive *archive,
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static struct entry *
|
static extfs_entry_t *
|
||||||
extfs_find_entry_int (struct entry *dir, const char *name, GSList * list,
|
extfs_find_entry_int (extfs_entry_t * dir, const char *name, GSList * list,
|
||||||
gboolean make_dirs, gboolean make_file)
|
gboolean make_dirs, gboolean make_file)
|
||||||
{
|
{
|
||||||
struct entry *pent, *pdir;
|
extfs_entry_t *pent, *pdir;
|
||||||
const char *p, *name_end;
|
const char *p, *name_end;
|
||||||
char *q;
|
char *q;
|
||||||
char c = PATH_SEP;
|
char c = PATH_SEP;
|
||||||
@ -344,10 +357,10 @@ extfs_find_entry_int (struct entry *dir, const char *name, GSList * list,
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static struct entry *
|
static extfs_entry_t *
|
||||||
extfs_find_entry (struct entry *dir, const char *name, gboolean make_dirs, gboolean make_file)
|
extfs_find_entry (extfs_entry_t * dir, const char *name, gboolean make_dirs, gboolean make_file)
|
||||||
{
|
{
|
||||||
struct entry *res;
|
extfs_entry_t *res;
|
||||||
|
|
||||||
errloop = FALSE;
|
errloop = FALSE;
|
||||||
notadir = FALSE;
|
notadir = FALSE;
|
||||||
@ -376,7 +389,7 @@ extfs_fill_names (struct vfs_class *me, fill_names_f func)
|
|||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
extfs_free_archive (struct archive *archive)
|
extfs_free_archive (extfs_super_t * archive)
|
||||||
{
|
{
|
||||||
extfs_free_entry (archive->root_entry);
|
extfs_free_entry (archive->root_entry);
|
||||||
|
|
||||||
@ -401,7 +414,7 @@ extfs_free_archive (struct archive *archive)
|
|||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static FILE *
|
static FILE *
|
||||||
extfs_open_archive (int fstype, const char *name, struct archive **pparc)
|
extfs_open_archive (int fstype, const char *name, extfs_super_t ** pparc)
|
||||||
{
|
{
|
||||||
const extfs_plugin_info_t *info;
|
const extfs_plugin_info_t *info;
|
||||||
static dev_t archive_counter = 0;
|
static dev_t archive_counter = 0;
|
||||||
@ -409,8 +422,8 @@ extfs_open_archive (int fstype, const char *name, struct archive **pparc)
|
|||||||
mode_t mode;
|
mode_t mode;
|
||||||
char *cmd;
|
char *cmd;
|
||||||
struct stat mystat;
|
struct stat mystat;
|
||||||
struct archive *current_archive;
|
extfs_super_t *current_archive;
|
||||||
struct entry *root_entry;
|
extfs_entry_t *root_entry;
|
||||||
char *tmp = NULL;
|
char *tmp = NULL;
|
||||||
vfs_path_t *local_name_vpath = NULL;
|
vfs_path_t *local_name_vpath = NULL;
|
||||||
vfs_path_t *name_vpath;
|
vfs_path_t *name_vpath;
|
||||||
@ -456,7 +469,7 @@ extfs_open_archive (int fstype, const char *name, struct archive **pparc)
|
|||||||
setvbuf (result, NULL, _IONBF, 0);
|
setvbuf (result, NULL, _IONBF, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
current_archive = g_new (struct archive, 1);
|
current_archive = g_new (extfs_super_t, 1);
|
||||||
current_archive->fstype = fstype;
|
current_archive->fstype = fstype;
|
||||||
current_archive->name = g_strdup (name);
|
current_archive->name = g_strdup (name);
|
||||||
current_archive->local_name = g_strdup (vfs_path_get_last_path_str (local_name_vpath));
|
current_archive->local_name = g_strdup (vfs_path_get_last_path_str (local_name_vpath));
|
||||||
@ -500,12 +513,12 @@ extfs_open_archive (int fstype, const char *name, struct archive **pparc)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
extfs_read_archive (int fstype, const char *name, struct archive **pparc)
|
extfs_read_archive (int fstype, const char *name, extfs_super_t ** pparc)
|
||||||
{
|
{
|
||||||
FILE *extfsd;
|
FILE *extfsd;
|
||||||
const extfs_plugin_info_t *info;
|
const extfs_plugin_info_t *info;
|
||||||
char *buffer;
|
char *buffer;
|
||||||
struct archive *current_archive;
|
extfs_super_t *current_archive;
|
||||||
char *current_file_name, *current_link_name;
|
char *current_file_name, *current_link_name;
|
||||||
|
|
||||||
info = &g_array_index (extfs_plugins, extfs_plugin_info_t, fstype);
|
info = &g_array_index (extfs_plugins, extfs_plugin_info_t, fstype);
|
||||||
@ -526,8 +539,8 @@ extfs_read_archive (int fstype, const char *name, struct archive **pparc)
|
|||||||
current_link_name = NULL;
|
current_link_name = NULL;
|
||||||
if (vfs_parse_ls_lga (buffer, &hstat, ¤t_file_name, ¤t_link_name, NULL))
|
if (vfs_parse_ls_lga (buffer, &hstat, ¤t_file_name, ¤t_link_name, NULL))
|
||||||
{
|
{
|
||||||
struct entry *entry, *pent;
|
extfs_entry_t *entry, *pent;
|
||||||
struct inode *inode;
|
extfs_inode_t *inode;
|
||||||
char *p, *q, *cfn = current_file_name;
|
char *p, *q, *cfn = current_file_name;
|
||||||
|
|
||||||
if (*cfn != '\0')
|
if (*cfn != '\0')
|
||||||
@ -559,7 +572,7 @@ extfs_read_archive (int fstype, const char *name, struct archive **pparc)
|
|||||||
close_error_pipe (D_ERROR, _("Inconsistent extfs archive"));
|
close_error_pipe (D_ERROR, _("Inconsistent extfs archive"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
entry = g_new (struct entry, 1);
|
entry = g_new (extfs_entry_t, 1);
|
||||||
entry->name = g_strdup (p);
|
entry->name = g_strdup (p);
|
||||||
entry->next_in_dir = NULL;
|
entry->next_in_dir = NULL;
|
||||||
entry->dir = pent;
|
entry->dir = pent;
|
||||||
@ -586,7 +599,7 @@ extfs_read_archive (int fstype, const char *name, struct archive **pparc)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
inode = g_new (struct inode, 1);
|
inode = g_new (extfs_inode_t, 1);
|
||||||
entry->ino = inode;
|
entry->ino = inode;
|
||||||
inode->localname = NULL;
|
inode->localname = NULL;
|
||||||
inode->st.st_ino = current_archive->ino_usage++;
|
inode->st.st_ino = current_archive->ino_usage++;
|
||||||
@ -672,14 +685,14 @@ extfs_which (struct vfs_class *me, const char *path)
|
|||||||
* Dissect the path and create corresponding superblock.
|
* Dissect the path and create corresponding superblock.
|
||||||
*/
|
*/
|
||||||
static const char *
|
static const char *
|
||||||
extfs_get_path_int (const vfs_path_t * vpath, struct archive **archive, gboolean do_not_open)
|
extfs_get_path_int (const vfs_path_t * vpath, extfs_super_t ** archive, gboolean do_not_open)
|
||||||
{
|
{
|
||||||
char *archive_name;
|
char *archive_name;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
GSList *parc;
|
GSList *parc;
|
||||||
int fstype;
|
int fstype;
|
||||||
const vfs_path_element_t *path_element;
|
const vfs_path_element_t *path_element;
|
||||||
struct archive *a = NULL;
|
extfs_super_t *a = NULL;
|
||||||
|
|
||||||
path_element = vfs_path_get_by_index (vpath, -1);
|
path_element = vfs_path_get_by_index (vpath, -1);
|
||||||
|
|
||||||
@ -696,7 +709,7 @@ extfs_get_path_int (const vfs_path_t * vpath, struct archive **archive, gboolean
|
|||||||
parc = g_slist_find_custom (first_archive, archive_name, extfs_cmp_archive);
|
parc = g_slist_find_custom (first_archive, archive_name, extfs_cmp_archive);
|
||||||
if (parc != NULL)
|
if (parc != NULL)
|
||||||
{
|
{
|
||||||
a = (struct archive *) parc->data;
|
a = EXTFS_SUPER (parc->data);
|
||||||
vfs_stamp (vfs_extfs_ops, (vfsid) a);
|
vfs_stamp (vfs_extfs_ops, (vfsid) a);
|
||||||
g_free (archive_name);
|
g_free (archive_name);
|
||||||
goto return_success;
|
goto return_success;
|
||||||
@ -722,7 +735,7 @@ extfs_get_path_int (const vfs_path_t * vpath, struct archive **archive, gboolean
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
extfs_get_path (const vfs_path_t * vpath, struct archive **archive, gboolean do_not_open)
|
extfs_get_path (const vfs_path_t * vpath, extfs_super_t ** archive, gboolean do_not_open)
|
||||||
{
|
{
|
||||||
return g_strdup (extfs_get_path_int (vpath, archive, do_not_open));
|
return g_strdup (extfs_get_path_int (vpath, archive, do_not_open));
|
||||||
}
|
}
|
||||||
@ -731,7 +744,7 @@ extfs_get_path (const vfs_path_t * vpath, struct archive **archive, gboolean do_
|
|||||||
/* Return allocated path (without leading slash) inside the archive */
|
/* Return allocated path (without leading slash) inside the archive */
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
extfs_get_path_from_entry (struct entry *entry)
|
extfs_get_path_from_entry (extfs_entry_t * entry)
|
||||||
{
|
{
|
||||||
GString *localpath;
|
GString *localpath;
|
||||||
|
|
||||||
@ -750,10 +763,10 @@ extfs_get_path_from_entry (struct entry *entry)
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static struct entry *
|
static extfs_entry_t *
|
||||||
extfs_resolve_symlinks_int (struct entry *entry, GSList * list)
|
extfs_resolve_symlinks_int (extfs_entry_t * entry, GSList * list)
|
||||||
{
|
{
|
||||||
struct entry *pent = NULL;
|
extfs_entry_t *pent = NULL;
|
||||||
|
|
||||||
if (!S_ISLNK (entry->ino->st.st_mode))
|
if (!S_ISLNK (entry->ino->st.st_mode))
|
||||||
return entry;
|
return entry;
|
||||||
@ -780,10 +793,10 @@ extfs_resolve_symlinks_int (struct entry *entry, GSList * list)
|
|||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static struct entry *
|
static extfs_entry_t *
|
||||||
extfs_resolve_symlinks (struct entry *entry)
|
extfs_resolve_symlinks (extfs_entry_t * entry)
|
||||||
{
|
{
|
||||||
struct entry *res;
|
extfs_entry_t *res;
|
||||||
|
|
||||||
errloop = FALSE;
|
errloop = FALSE;
|
||||||
notadir = FALSE;
|
notadir = FALSE;
|
||||||
@ -801,7 +814,7 @@ extfs_resolve_symlinks (struct entry *entry)
|
|||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
extfs_get_archive_name (struct archive *archive)
|
extfs_get_archive_name (extfs_super_t * archive)
|
||||||
{
|
{
|
||||||
const char *archive_name;
|
const char *archive_name;
|
||||||
|
|
||||||
@ -830,8 +843,8 @@ extfs_get_archive_name (struct archive *archive)
|
|||||||
/** Don't pass localname as NULL */
|
/** Don't pass localname as NULL */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
extfs_cmd (const char *str_extfs_cmd, struct archive *archive,
|
extfs_cmd (const char *str_extfs_cmd, extfs_super_t * archive,
|
||||||
struct entry *entry, const char *localname)
|
extfs_entry_t * entry, const char *localname)
|
||||||
{
|
{
|
||||||
char *file;
|
char *file;
|
||||||
char *quoted_file;
|
char *quoted_file;
|
||||||
@ -868,7 +881,7 @@ extfs_cmd (const char *str_extfs_cmd, struct archive *archive,
|
|||||||
static void
|
static void
|
||||||
extfs_run (const vfs_path_t * vpath)
|
extfs_run (const vfs_path_t * vpath)
|
||||||
{
|
{
|
||||||
struct archive *archive = NULL;
|
extfs_super_t *archive = NULL;
|
||||||
char *p, *q, *archive_name, *quoted_archive_name;
|
char *p, *q, *archive_name, *quoted_archive_name;
|
||||||
char *cmd;
|
char *cmd;
|
||||||
const extfs_plugin_info_t *info;
|
const extfs_plugin_info_t *info;
|
||||||
@ -897,9 +910,9 @@ static void *
|
|||||||
extfs_open (const vfs_path_t * vpath, int flags, mode_t mode)
|
extfs_open (const vfs_path_t * vpath, int flags, mode_t mode)
|
||||||
{
|
{
|
||||||
struct pseudofile *extfs_info;
|
struct pseudofile *extfs_info;
|
||||||
struct archive *archive = NULL;
|
extfs_super_t *archive = NULL;
|
||||||
char *q;
|
char *q;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
int local_handle;
|
int local_handle;
|
||||||
gboolean created = FALSE;
|
gboolean created = FALSE;
|
||||||
|
|
||||||
@ -1032,10 +1045,10 @@ extfs_errno (struct vfs_class *me)
|
|||||||
static void *
|
static void *
|
||||||
extfs_opendir (const vfs_path_t * vpath)
|
extfs_opendir (const vfs_path_t * vpath)
|
||||||
{
|
{
|
||||||
struct archive *archive = NULL;
|
extfs_super_t *archive = NULL;
|
||||||
char *q;
|
char *q;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
struct entry **info;
|
extfs_entry_t **info;
|
||||||
|
|
||||||
q = extfs_get_path (vpath, &archive, FALSE);
|
q = extfs_get_path (vpath, &archive, FALSE);
|
||||||
if (q == NULL)
|
if (q == NULL)
|
||||||
@ -1050,7 +1063,7 @@ extfs_opendir (const vfs_path_t * vpath)
|
|||||||
if (!S_ISDIR (entry->ino->st.st_mode))
|
if (!S_ISDIR (entry->ino->st.st_mode))
|
||||||
ERRNOR (ENOTDIR, NULL);
|
ERRNOR (ENOTDIR, NULL);
|
||||||
|
|
||||||
info = g_new (struct entry *, 2);
|
info = g_new (extfs_entry_t *, 2);
|
||||||
info[0] = entry->ino->first_in_subdir;
|
info[0] = entry->ino->first_in_subdir;
|
||||||
info[1] = entry->ino->first_in_subdir;
|
info[1] = entry->ino->first_in_subdir;
|
||||||
|
|
||||||
@ -1063,7 +1076,7 @@ static void *
|
|||||||
extfs_readdir (void *data)
|
extfs_readdir (void *data)
|
||||||
{
|
{
|
||||||
static union vfs_dirent dir;
|
static union vfs_dirent dir;
|
||||||
struct entry **info = (struct entry **) data;
|
extfs_entry_t **info = (extfs_entry_t **) data;
|
||||||
|
|
||||||
if (*info == NULL)
|
if (*info == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -1087,7 +1100,7 @@ extfs_closedir (void *data)
|
|||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
extfs_stat_move (struct stat *buf, const struct inode *inode)
|
extfs_stat_move (struct stat *buf, const extfs_inode_t * inode)
|
||||||
{
|
{
|
||||||
*buf = inode->st;
|
*buf = inode->st;
|
||||||
|
|
||||||
@ -1105,9 +1118,9 @@ extfs_stat_move (struct stat *buf, const struct inode *inode)
|
|||||||
static int
|
static int
|
||||||
extfs_internal_stat (const vfs_path_t * vpath, struct stat *buf, gboolean resolve)
|
extfs_internal_stat (const vfs_path_t * vpath, struct stat *buf, gboolean resolve)
|
||||||
{
|
{
|
||||||
struct archive *archive;
|
extfs_super_t *archive;
|
||||||
const char *q;
|
const char *q;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|
||||||
q = extfs_get_path_int (vpath, &archive, FALSE);
|
q = extfs_get_path_int (vpath, &archive, FALSE);
|
||||||
@ -1160,10 +1173,10 @@ extfs_fstat (void *data, struct stat *buf)
|
|||||||
static int
|
static int
|
||||||
extfs_readlink (const vfs_path_t * vpath, char *buf, size_t size)
|
extfs_readlink (const vfs_path_t * vpath, char *buf, size_t size)
|
||||||
{
|
{
|
||||||
struct archive *archive;
|
extfs_super_t *archive;
|
||||||
const char *q;
|
const char *q;
|
||||||
size_t len;
|
size_t len;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|
||||||
q = extfs_get_path_int (vpath, &archive, FALSE);
|
q = extfs_get_path_int (vpath, &archive, FALSE);
|
||||||
@ -1227,9 +1240,9 @@ extfs_write (void *data, const char *buf, size_t nbyte)
|
|||||||
static int
|
static int
|
||||||
extfs_unlink (const vfs_path_t * vpath)
|
extfs_unlink (const vfs_path_t * vpath)
|
||||||
{
|
{
|
||||||
struct archive *archive;
|
extfs_super_t *archive;
|
||||||
const char *q;
|
const char *q;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|
||||||
q = extfs_get_path_int (vpath, &archive, FALSE);
|
q = extfs_get_path_int (vpath, &archive, FALSE);
|
||||||
@ -1265,9 +1278,9 @@ extfs_unlink (const vfs_path_t * vpath)
|
|||||||
static int
|
static int
|
||||||
extfs_mkdir (const vfs_path_t * vpath, mode_t mode)
|
extfs_mkdir (const vfs_path_t * vpath, mode_t mode)
|
||||||
{
|
{
|
||||||
struct archive *archive;
|
extfs_super_t *archive;
|
||||||
const char *q;
|
const char *q;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
const vfs_path_element_t *path_element;
|
const vfs_path_element_t *path_element;
|
||||||
|
|
||||||
@ -1311,9 +1324,9 @@ extfs_mkdir (const vfs_path_t * vpath, mode_t mode)
|
|||||||
static int
|
static int
|
||||||
extfs_rmdir (const vfs_path_t * vpath)
|
extfs_rmdir (const vfs_path_t * vpath)
|
||||||
{
|
{
|
||||||
struct archive *archive;
|
extfs_super_t *archive;
|
||||||
const char *q;
|
const char *q;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
int result = -1;
|
int result = -1;
|
||||||
|
|
||||||
q = extfs_get_path_int (vpath, &archive, FALSE);
|
q = extfs_get_path_int (vpath, &archive, FALSE);
|
||||||
@ -1350,9 +1363,9 @@ extfs_rmdir (const vfs_path_t * vpath)
|
|||||||
static int
|
static int
|
||||||
extfs_chdir (const vfs_path_t * vpath)
|
extfs_chdir (const vfs_path_t * vpath)
|
||||||
{
|
{
|
||||||
struct archive *archive = NULL;
|
extfs_super_t *archive = NULL;
|
||||||
char *q;
|
char *q;
|
||||||
struct entry *entry;
|
extfs_entry_t *entry;
|
||||||
|
|
||||||
my_errno = ENOTDIR;
|
my_errno = ENOTDIR;
|
||||||
q = extfs_get_path (vpath, &archive, FALSE);
|
q = extfs_get_path (vpath, &archive, FALSE);
|
||||||
@ -1384,7 +1397,7 @@ extfs_lseek (void *data, off_t offset, int whence)
|
|||||||
static vfsid
|
static vfsid
|
||||||
extfs_getid (const vfs_path_t * vpath)
|
extfs_getid (const vfs_path_t * vpath)
|
||||||
{
|
{
|
||||||
struct archive *archive = NULL;
|
extfs_super_t *archive = NULL;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
p = extfs_get_path (vpath, &archive, TRUE);
|
p = extfs_get_path (vpath, &archive, TRUE);
|
||||||
@ -1399,20 +1412,20 @@ extfs_getid (const vfs_path_t * vpath)
|
|||||||
static int
|
static int
|
||||||
extfs_nothingisopen (vfsid id)
|
extfs_nothingisopen (vfsid id)
|
||||||
{
|
{
|
||||||
return (((struct archive *) id)->fd_usage <= 0);
|
return (EXTFS_SUPER (id)->fd_usage <= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
extfs_remove_entry (struct entry *e)
|
extfs_remove_entry (extfs_entry_t * e)
|
||||||
{
|
{
|
||||||
int i = --e->ino->st.st_nlink;
|
int i = --e->ino->st.st_nlink;
|
||||||
struct entry *pe, *ent, *prev;
|
extfs_entry_t *pe, *ent, *prev;
|
||||||
|
|
||||||
if (S_ISDIR (e->ino->st.st_mode) && e->ino->first_in_subdir != NULL)
|
if (S_ISDIR (e->ino->st.st_mode) && e->ino->first_in_subdir != NULL)
|
||||||
{
|
{
|
||||||
struct entry *f = e->ino->first_in_subdir;
|
extfs_entry_t *f = e->ino->first_in_subdir;
|
||||||
e->ino->first_in_subdir = NULL;
|
e->ino->first_in_subdir = NULL;
|
||||||
extfs_remove_entry (f);
|
extfs_remove_entry (f);
|
||||||
}
|
}
|
||||||
@ -1450,13 +1463,13 @@ extfs_remove_entry (struct entry *e)
|
|||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
extfs_free_entry (struct entry *e)
|
extfs_free_entry (extfs_entry_t * e)
|
||||||
{
|
{
|
||||||
int i = --e->ino->st.st_nlink;
|
int i = --e->ino->st.st_nlink;
|
||||||
|
|
||||||
if (S_ISDIR (e->ino->st.st_mode) && e->ino->first_in_subdir != NULL)
|
if (S_ISDIR (e->ino->st.st_mode) && e->ino->first_in_subdir != NULL)
|
||||||
{
|
{
|
||||||
struct entry *f = e->ino->first_in_subdir;
|
extfs_entry_t *f = e->ino->first_in_subdir;
|
||||||
|
|
||||||
e->ino->first_in_subdir = NULL;
|
e->ino->first_in_subdir = NULL;
|
||||||
extfs_free_entry (f);
|
extfs_free_entry (f);
|
||||||
@ -1482,7 +1495,7 @@ extfs_free_entry (struct entry *e)
|
|||||||
static void
|
static void
|
||||||
extfs_free (vfsid id)
|
extfs_free (vfsid id)
|
||||||
{
|
{
|
||||||
struct archive *archive = (struct archive *) id;
|
extfs_super_t *archive = EXTFS_SUPER (id);
|
||||||
|
|
||||||
first_archive = g_slist_remove (first_archive, archive);
|
first_archive = g_slist_remove (first_archive, archive);
|
||||||
extfs_free_archive (archive);
|
extfs_free_archive (archive);
|
||||||
|
Loading…
Reference in New Issue
Block a user