From b9c6a9b3d116fd7578954d244e3ffee8bf74177f Mon Sep 17 00:00:00 2001 From: Pavel Roskin Date: Fri, 6 Dec 2002 02:14:28 +0000 Subject: [PATCH] * vfs.h: Remove vfs_uid and vfs_gid. Fix all dependencies. --- vfs/ChangeLog | 4 ++++ vfs/cpio.c | 18 ++++++++-------- vfs/extfs.c | 60 ++++++++++++++++++++++++--------------------------- vfs/sfs.c | 55 ++++++++++++++++++++++++---------------------- vfs/tar.c | 18 ++++++++-------- vfs/vfs.h | 3 --- 6 files changed, 79 insertions(+), 79 deletions(-) diff --git a/vfs/ChangeLog b/vfs/ChangeLog index 14374b141..7aaeecb25 100644 --- a/vfs/ChangeLog +++ b/vfs/ChangeLog @@ -1,3 +1,7 @@ +2002-12-05 Pavel Roskin + + * vfs.h: Remove vfs_uid and vfs_gid. Fix all dependencies. + 2002-12-05 Andrew V. Samoilov * extfs.c (open_archive): Use open_error_pipe before popen() and diff --git a/vfs/cpio.c b/vfs/cpio.c index a3b91bf2d..b228c3db8 100644 --- a/vfs/cpio.c +++ b/vfs/cpio.c @@ -541,18 +541,18 @@ static void *cpio_super_check(vfs *me, char *archive_name, char *op) return &sb; } -static int cpio_super_same(vfs *me, struct vfs_s_super *parc, char *archive_name, char *op, void *cookie) -{ +static int +cpio_super_same (vfs *me, struct vfs_s_super *parc, char *archive_name, + char *op, void *cookie) +{ struct stat *archive_stat = cookie; /* stat of main archive */ - if(strcmp(parc->name, archive_name)) return 0; + if (strcmp (parc->name, archive_name)) + return 0; - if(vfs_uid && (!(archive_stat->st_mode & 0004))) - if((archive_stat->st_gid != vfs_gid) || !(archive_stat->st_mode & 0040)) - if((archive_stat->st_uid != vfs_uid) || !(archive_stat->st_mode & 0400)) - return 0; -/* Has the cached archive been changed on the disk? */ - if(parc->u.cpio.stat.st_mtime < archive_stat->st_mtime) { /* Yes, reload! */ + /* Has the cached archive been changed on the disk? */ + if (parc->u.cpio.stat.st_mtime < archive_stat->st_mtime) { + /* Yes, reload! */ (*vfs_cpiofs_ops.free) ((vfsid) parc); vfs_rmstamp (&vfs_cpiofs_ops, (vfsid) parc, 0); return 2; diff --git a/vfs/extfs.c b/vfs/extfs.c index 1ca5303f7..60fdac627 100644 --- a/vfs/extfs.c +++ b/vfs/extfs.c @@ -398,11 +398,13 @@ static int read_archive (int fstype, char *name, struct archive **pparc) static char *get_path (char *inname, struct archive **archive, int is_dir, int do_not_open); -/* Returns path inside argument. Returned char* is inside inname, which is mangled - * by this operation (so you must not free it's return value) +/* + * Return path inside argument. Returned char* is inside inname, which is mangled + * by this operation, so don't free the return value. */ -static char *get_path_mangle (char *inname, struct archive **archive, int is_dir, - int do_not_open) +static char * +get_path_mangle (char *inname, struct archive **archive, int is_dir, + int do_not_open) { char *local, *archive_name, *op; int result = -1; @@ -410,44 +412,38 @@ static char *get_path_mangle (char *inname, struct archive **archive, int is_dir struct vfs_stamping *parent; vfs *v; int fstype; - - archive_name = inname; - vfs_split( inname, &local, &op ); - fstype = extfs_which( NULL, op ); /* 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 */ - if (fstype == -1) - return NULL; - if (!local) - local = ""; - /* All filesystems should have some local archive, at least + archive_name = inname; + vfs_split (inname, &local, &op); + + /* + * 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 + */ + fstype = extfs_which (NULL, op); + + if (fstype == -1) + return NULL; + if (!local) + local = ""; + + /* + * All filesystems should have some local archive, at least * it can be '/'. - * - * Actually, we should implement an alias mechanism that would - * translate: "a:" to "dos:a. - * */ for (parc = first_archive; parc != NULL; parc = parc->next) - if (parc->name) { + if (parc->name) { if (!strcmp (parc->name, archive_name)) { - struct stat *s=&(parc->extfsstat); - if (vfs_uid && (!(s->st_mode & 0004))) - if ((s->st_gid != vfs_gid) || !(s->st_mode & 0040)) - if ((s->st_uid != vfs_uid) || !(s->st_mode & 0400)) - return NULL; - /* This is not too secure - in some cases (/#mtools) files created - under user a are probably visible to everyone else since / usually - has permissions 755 */ - vfs_stamp (&vfs_extfs_ops, (vfsid) parc); + vfs_stamp (&vfs_extfs_ops, (vfsid) parc); goto return_success; } } result = do_not_open ? -1 : read_archive (fstype, archive_name, &parc); - if (result == -1) ERRNOR (EIO, NULL); + if (result == -1) + ERRNOR (EIO, NULL); - if (archive_name){ + if (archive_name) { v = vfs_type (archive_name); if (v == &vfs_local_ops) { parent = NULL; @@ -460,7 +456,7 @@ static char *get_path_mangle (char *inname, struct archive **archive, int is_dir vfs_add_noncurrent_stamps (&vfs_extfs_ops, (vfsid) parc, parent); vfs_rm_parents (parent); } - return_success: + return_success: *archive = parc; return local; } diff --git a/vfs/sfs.c b/vfs/sfs.c index 8adb31fcb..56ac7b383 100644 --- a/vfs/sfs.c +++ b/vfs/sfs.c @@ -107,18 +107,16 @@ static char * redirect (vfs *me, char *name) { struct cachedfile *cur = head; - uid_t uid = vfs_uid; char *cache; int handle; - while (cur){ - if ((!strcmp (name, cur->name)) && - (uid == cur->uid) && - (uptodate (cur->name, cur->cache))) - /* FIXME: when not uptodate, we might want to kill cache - * file immediately, not to wait until timeout. */ { - vfs_stamp (&vfs_sfs_ops, cur); - return cur->cache; + while (cur) { + /* FIXME: when not uptodate, we might want to kill cache + * file immediately, not to wait until timeout. */ + if ((!strcmp (name, cur->name)) && (cur->uid == 0) + && (uptodate (cur->name, cur->cache))) { + vfs_stamp (&vfs_sfs_ops, cur); + return cur->cache; } cur = cur->next; } @@ -131,11 +129,11 @@ redirect (vfs *me, char *name) close (handle); - if (!vfmake (me, name, cache)){ + if (!vfmake (me, name, cache)) { cur = g_new (struct cachedfile, 1); cur->name = g_strdup (name); cur->cache = cache; - cur->uid = uid; + cur->uid = 0; cur->next = head; head = cur; @@ -144,7 +142,7 @@ redirect (vfs *me, char *name) return cache; } - + unlink (cache); g_free (cache); return "/I_MUST_NOT_EXIST"; @@ -207,16 +205,16 @@ static int sfs_readlink (vfs *me, char *path, char *buf, int size) return readlink (path, buf, size); } -static vfsid sfs_getid (vfs *me, char *path, struct vfs_stamping **parent) -{ /* FIXME: what should I do? */ +static vfsid +sfs_getid (vfs *me, char *path, struct vfs_stamping **parent) +{ /* FIXME: what should I do? */ vfs *v; vfsid id; struct vfs_stamping *par; struct cachedfile *cur = head; while (cur) { - if ((!strcmp( path, cur->name )) && - (vfs_uid == cur->uid)) + if ((!strcmp (path, cur->name)) && (cur->uid == 0)) break; cur = cur->next; } @@ -224,22 +222,27 @@ static vfsid sfs_getid (vfs *me, char *path, struct vfs_stamping **parent) *parent = NULL; if (!cur) - return (vfsid)(-1); + return (vfsid) (-1); { - char *path2 = g_strdup (path); - v = vfs_split (path2, NULL, NULL); /* Strip suffix which led to this being sfs */ - v = vfs_split (path2, NULL, NULL); /* ... and learn whoever was the parent system */ + char *path2 = g_strdup (path); + + /* Strip suffix which led to this being sfs */ + v = vfs_split (path2, NULL, NULL); + + /* ... and learn whoever was the parent system */ + v = vfs_split (path2, NULL, NULL); + id = (*v->getid) (v, path2, &par); g_free (path2); } - if (id != (vfsid)-1) { - *parent = g_new (struct vfs_stamping, 1); - (*parent)->v = v; - (*parent)->id = id; - (*parent)->parent = par; - (*parent)->next = NULL; + if (id != (vfsid) - 1) { + *parent = g_new (struct vfs_stamping, 1); + (*parent)->v = v; + (*parent)->id = id; + (*parent)->parent = par; + (*parent)->next = NULL; } return (vfsid) cur; } diff --git a/vfs/tar.c b/vfs/tar.c index c1b16ae9d..db8b76880 100644 --- a/vfs/tar.c +++ b/vfs/tar.c @@ -441,18 +441,18 @@ static void *tar_super_check(vfs *me, char *archive_name, char *op) return &stat_buf; } -static int tar_super_same(vfs *me, struct vfs_s_super *parc, char *archive_name, char *op, void *cookie) -{ +static int +tar_super_same (vfs *me, struct vfs_s_super *parc, char *archive_name, + char *op, void *cookie) +{ struct stat *archive_stat = cookie; /* stat of main archive */ - if (strcmp (parc->name, archive_name)) return 0; + if (strcmp (parc->name, archive_name)) + return 0; - if (vfs_uid && (!(archive_stat->st_mode & 0004))) - if ((archive_stat->st_gid != vfs_gid) || !(archive_stat->st_mode & 0040)) - if ((archive_stat->st_uid != vfs_uid) || !(archive_stat->st_mode & 0400)) - return 0; -/* Has the cached archive been changed on the disk? */ - if (parc->u.tar.tarstat.st_mtime < archive_stat->st_mtime) { /* Yes, reload! */ + /* Has the cached archive been changed on the disk? */ + if (parc->u.tar.tarstat.st_mtime < archive_stat->st_mtime) { + /* Yes, reload! */ (*vfs_tarfs_ops.free) ((vfsid) parc); vfs_rmstamp (&vfs_tarfs_ops, (vfsid) parc, 0); return 2; diff --git a/vfs/vfs.h b/vfs/vfs.h index ab10dd22a..62586cbf0 100644 --- a/vfs/vfs.h +++ b/vfs/vfs.h @@ -355,9 +355,6 @@ extern void vfs_print_stats (const char *fs_name, const char *action, #define MCCTL_WANT_STALE_DATA 9 #define MCCTL_NO_STALE_DATA 10 -#define vfs_uid 0 -#define vfs_gid 0 - #define FL_ALWAYS_MAGIC 1 #define FL_NO_MCFS 2 #define FL_NO_FTPFS 4