mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-09-05 00:35:13 +00:00
Use the gcc cleanup extension attribute to handle closing temp files
While some of these allocations will go away as we convert to C++, some of these need to stay C as the are going to be moved into a library to support loading cache from init daemons etc. For the bits that will eventually be C++ this helps clean things up, in the interim. TODO: apply to libapparmor as well Signed-off-by: John Johansen <john.johansen@canonical.com> Acked-by: Tyler Hicks <tyhicks@canonical.com>
This commit is contained in:
committed by
Tyler Hicks
parent
82904cf0e6
commit
f62cc5c6bf
17
parser/lib.c
17
parser/lib.c
@@ -40,6 +40,23 @@ void __autofree(void *p)
|
||||
free(*_p);
|
||||
}
|
||||
|
||||
void __autoclose(int *fd)
|
||||
{
|
||||
if (*fd != -1) {
|
||||
/* if close was interrupted retry */
|
||||
while(close(*fd) == -1 && errno == EINTR);
|
||||
*fd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void __autofclose(FILE **f)
|
||||
{
|
||||
if (*f) {
|
||||
fclose(*f);
|
||||
*f = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* dirat_for_each: iterate over a directory calling cb for each entry
|
||||
* @dir: already opened directory (MAY BE NULL)
|
||||
|
Reference in New Issue
Block a user