extfs: refactoring: rename structures...

to unify it with standard VFS ones.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2018-03-15 14:16:05 +03:00
parent 81945d32ce
commit c29f068457

View File

@ -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, &current_file_name, &current_link_name, NULL)) if (vfs_parse_ls_lga (buffer, &hstat, &current_file_name, &current_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);