mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 12:56:51 +03:00
Sat Jan 9 19:15:00 1999 Norbert Warmuth <nwarmuth@privat.circular.de>
* vfs/vfs.c (vfs_timeout_handler): Guard from recursive invocation. Sat Jan 9 19:13:28 1999 Norbert Warmuth <nwarmuth@privat.circular.de> * vfs/sfs.c (sfs_free): Fixed wrong linked list handling (head was lost after the first iteration). (sfs_getid): dito, return value was wrong.
This commit is contained in:
parent
23155b3f8b
commit
749d16ba30
@ -1,3 +1,14 @@
|
|||||||
|
Sat Jan 9 19:15:00 1999 Norbert Warmuth <nwarmuth@privat.circular.de>
|
||||||
|
|
||||||
|
* vfs.c (vfs_timeout_handler): Guard from recursive invocation.
|
||||||
|
|
||||||
|
Sat Jan 9 19:13:28 1999 Norbert Warmuth <nwarmuth@privat.circular.de>
|
||||||
|
|
||||||
|
* sfs.c (sfs_free): Fixed wrong linked list handling (head was
|
||||||
|
lost after the first iteration).
|
||||||
|
|
||||||
|
(sfs_getid): dito, return value was wrong.
|
||||||
|
|
||||||
Sat Jan 9 22:49:02 1999 Timur I. Bakeyev <timur@com.bat.ru>
|
Sat Jan 9 22:49:02 1999 Timur I. Bakeyev <timur@com.bat.ru>
|
||||||
|
|
||||||
* vfs.c (parse_ls_lga): Rewrite function to make it more stright.
|
* vfs.c (parse_ls_lga): Rewrite function to make it more stright.
|
||||||
|
33
vfs/sfs.c
33
vfs/sfs.c
@ -201,21 +201,20 @@ static int sfs_readlink (vfs *me, char *path, char *buf, int size)
|
|||||||
return readlink (path, buf, size);
|
return readlink (path, buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CUR (*cur)
|
|
||||||
static vfsid sfs_getid (vfs *me, char *path, struct vfs_stamping **parent)
|
static vfsid sfs_getid (vfs *me, char *path, struct vfs_stamping **parent)
|
||||||
{ /* FIXME: what should I do? */
|
{ /* FIXME: what should I do? */
|
||||||
vfs *v;
|
vfs *v;
|
||||||
vfsid id;
|
vfsid id;
|
||||||
struct vfs_stamping *par;
|
struct vfs_stamping *par;
|
||||||
struct cachedfile **cur = &head;
|
struct cachedfile *cur = head;
|
||||||
|
|
||||||
while (CUR) {
|
while (cur) {
|
||||||
if ((!strcmp( path, CUR->name )) &&
|
if ((!strcmp( path, cur->name )) &&
|
||||||
(vfs_uid == CUR->uid))
|
(vfs_uid == cur->uid))
|
||||||
break;
|
break;
|
||||||
CUR = CUR->next;
|
cur = cur->next;
|
||||||
}
|
}
|
||||||
if (!CUR)
|
if (!cur)
|
||||||
vfs_die( "sfs_getid of noncached thingie?" );
|
vfs_die( "sfs_getid of noncached thingie?" );
|
||||||
|
|
||||||
*parent = NULL;
|
*parent = NULL;
|
||||||
@ -240,19 +239,19 @@ static vfsid sfs_getid (vfs *me, char *path, struct vfs_stamping **parent)
|
|||||||
static void sfs_free (vfsid id)
|
static void sfs_free (vfsid id)
|
||||||
{
|
{
|
||||||
struct cachedfile *which = (struct cachedfile *) id;
|
struct cachedfile *which = (struct cachedfile *) id;
|
||||||
struct cachedfile **cur = &head;
|
struct cachedfile *cur, *prev;
|
||||||
|
|
||||||
unlink( CUR->cache );
|
for (cur = head, prev = 0; cur && cur != which; prev = cur, cur = cur->next)
|
||||||
while (CUR) {
|
;
|
||||||
if (CUR == which)
|
if (!cur)
|
||||||
break;
|
|
||||||
CUR = CUR->next;
|
|
||||||
}
|
|
||||||
if (!CUR)
|
|
||||||
vfs_die( "Free of thing which is unknown to me\n" );
|
vfs_die( "Free of thing which is unknown to me\n" );
|
||||||
*cur = CUR->next;
|
unlink (cur->cache);
|
||||||
|
|
||||||
|
if (prev)
|
||||||
|
prev->next = cur->next;
|
||||||
|
else
|
||||||
|
head = cur->next;
|
||||||
}
|
}
|
||||||
#undef CUR
|
|
||||||
|
|
||||||
static void sfs_fill_names (vfs *me, void (*func)(char *))
|
static void sfs_fill_names (vfs *me, void (*func)(char *))
|
||||||
{
|
{
|
||||||
|
@ -1150,9 +1150,16 @@ timeoutcmp (struct timeval *t1, struct timeval *t2)
|
|||||||
void
|
void
|
||||||
vfs_timeout_handler (void)
|
vfs_timeout_handler (void)
|
||||||
{
|
{
|
||||||
|
static int locked;
|
||||||
struct timeval time;
|
struct timeval time;
|
||||||
struct vfs_stamping *stamp, *st;
|
struct vfs_stamping *stamp, *st;
|
||||||
|
|
||||||
|
/* Avoid recursive invocation, e.g. when one of the free functions
|
||||||
|
calls message_1s */
|
||||||
|
if (locked)
|
||||||
|
return;
|
||||||
|
locked = 1;
|
||||||
|
|
||||||
gettimeofday (&time, NULL);
|
gettimeofday (&time, NULL);
|
||||||
time.tv_sec -= vfs_timeout;
|
time.tv_sec -= vfs_timeout;
|
||||||
|
|
||||||
@ -1165,6 +1172,7 @@ vfs_timeout_handler (void)
|
|||||||
} else
|
} else
|
||||||
stamp = stamp->next;
|
stamp = stamp->next;
|
||||||
}
|
}
|
||||||
|
locked = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user