projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 't/generic_match_count'
[paraslash.git]
/
close_on_fork.c
diff --git
a/close_on_fork.c
b/close_on_fork.c
index 4f7c2b955a4d9f1404386f57b8246b803115a2bf..92517134e237697b49e6956d352b906a7e4f9d57 100644
(file)
--- a/
close_on_fork.c
+++ b/
close_on_fork.c
@@
-1,10
+1,13
@@
/*
/*
- * Copyright (C) 2005-20
08
Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-20
11
Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file close_on_fork.c Manage a list of fds that should be closed on fork. */
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file close_on_fork.c Manage a list of fds that should be closed on fork. */
+
+#include <regex.h>
+
#include "para.h"
#include "list.h"
#include "string.h"
#include "para.h"
#include "list.h"
#include "string.h"
@@
-63,16
+66,21
@@
void del_close_on_fork_list(int fd)
}
/**
}
/**
- * Call close(3) for each fd in the close-on-fork list.
+ * Close all fds in the list and destroy all list entries.
+ *
+ * This function calls close(3) for each fd in the close-on-fork list
+ * and empties the list afterwards.
*/
void close_listed_fds(void)
{
*/
void close_listed_fds(void)
{
- struct close_on_fork *cof;
+ struct close_on_fork *cof
, *tmp
;
if (!initialized)
return;
if (!initialized)
return;
- list_for_each_entry
(cof
, &close_on_fork_list, node) {
+ list_for_each_entry
_safe(cof, tmp
, &close_on_fork_list, node) {
PARA_DEBUG_LOG("closing fd %d\n", cof->fd);
close(cof->fd);
PARA_DEBUG_LOG("closing fd %d\n", cof->fd);
close(cof->fd);
+ list_del(&cof->node);
+ free(cof);
}
}
}
}