aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--support/temp_file.c16
2 files changed, 14 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 4f09eeca9f..603587bc80 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
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
sys/ultrasound.h.
* sysdeps/unix/sysv/linux/sys/ultrasound.h: Remove file.
diff --git a/support/temp_file.c b/support/temp_file.c
index 5950aec06b..50cbae606b 100644
--- a/support/temp_file.c
+++ b/support/temp_file.c
@@ -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");
}