mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
support: Delete temporary files in LIFO order
This is required to remove temporary directories which contain temporary files. Previously, FIFO order meant that directory removal was attempted when the directory still contained files, which meant that temporary directory cleanup was essentially unsupported.
This commit is contained in:
parent
cd354a3849
commit
706256afb6
2 changed files with 14 additions and 11 deletions
|
@ -1,3 +1,12 @@
|
|||
2017-05-08 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
Delete temporary files in LIFO order.
|
||||
* support/temp_file.c (struct temp_name_list): Replace q member
|
||||
with next.
|
||||
(add_temp_file): Add new file to front of linked list.
|
||||
(support_delete_temp_files): Use next member.
|
||||
(support_print_temp_files): Likewise.
|
||||
|
||||
2017-05-08 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Remove
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include <support/support.h>
|
||||
|
||||
#include <paths.h>
|
||||
#include <search.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@ -33,7 +32,7 @@
|
|||
/* List of temporary files. */
|
||||
static struct temp_name_list
|
||||
{
|
||||
struct qelem q;
|
||||
struct temp_name_list *next;
|
||||
char *name;
|
||||
} *temp_name_list;
|
||||
|
||||
|
@ -50,10 +49,8 @@ add_temp_file (const char *name)
|
|||
if (newname != NULL)
|
||||
{
|
||||
newp->name = newname;
|
||||
if (temp_name_list == NULL)
|
||||
temp_name_list = (struct temp_name_list *) &newp->q;
|
||||
else
|
||||
insque (newp, temp_name_list);
|
||||
newp->next = temp_name_list;
|
||||
temp_name_list = newp;
|
||||
}
|
||||
else
|
||||
free (newp);
|
||||
|
@ -105,8 +102,7 @@ support_delete_temp_files (void)
|
|||
(void) remove (temp_name_list->name);
|
||||
free (temp_name_list->name);
|
||||
|
||||
struct temp_name_list *next
|
||||
= (struct temp_name_list *) temp_name_list->q.q_forw;
|
||||
struct temp_name_list *next = temp_name_list->next;
|
||||
free (temp_name_list);
|
||||
temp_name_list = next;
|
||||
}
|
||||
|
@ -119,9 +115,7 @@ support_print_temp_files (FILE *f)
|
|||
{
|
||||
struct temp_name_list *n;
|
||||
fprintf (f, "temp_files=(\n");
|
||||
for (n = temp_name_list;
|
||||
n != NULL;
|
||||
n = (struct temp_name_list *) n->q.q_forw)
|
||||
for (n = temp_name_list; n != NULL; n = n->next)
|
||||
fprintf (f, " '%s'\n", n->name);
|
||||
fprintf (f, ")\n");
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue