[lib] Add close_fd() & close_file()
These functions are aimed to be used with pthread_cleanup_push().
This commit is contained in:
parent
ddd4e16b70
commit
2289e0ef9f
|
@ -444,3 +444,48 @@ void owl_sigterm_handler(int num)
|
||||||
|
|
||||||
owl_sigint_handler(SIGINT) ;
|
owl_sigint_handler(SIGINT) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Closes the file descriptor 'fd'.
|
||||||
|
* 'fd' must be passed as an int pointer (int*).
|
||||||
|
*/
|
||||||
|
void owl_close_fd(void *fd)
|
||||||
|
{
|
||||||
|
if (fd == NULL)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
int *file_desc = fd ;
|
||||||
|
if (close(*file_desc) != 0)
|
||||||
|
perror("Error closing file descriptor") ;
|
||||||
|
#ifdef DEBUG
|
||||||
|
else
|
||||||
|
fprintf(stderr, "File descriptor %d closed successfully.\n",
|
||||||
|
*file_desc) ;
|
||||||
|
#endif // DEBUG
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Closes the stream 'file'.
|
||||||
|
* 'file' must be passed as a pointer on a pointer of FILE (FILE**).
|
||||||
|
* If *file either stdout, stderr or stdin, it will not be closed.
|
||||||
|
*/
|
||||||
|
void owl_close_file(void *file)
|
||||||
|
{
|
||||||
|
if (file == NULL)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
FILE **stream = file ;
|
||||||
|
if (*stream == stdout || *stream == stderr || *stream == stdin)
|
||||||
|
return ;
|
||||||
|
|
||||||
|
if (fclose(*stream) != 0)
|
||||||
|
perror("Error closing stream") ;
|
||||||
|
#ifdef DEBUG
|
||||||
|
else
|
||||||
|
fprintf(stderr, "Stream closed successfully.\n") ;
|
||||||
|
#endif // DEBUG
|
||||||
|
}
|
||||||
|
|
|
@ -271,6 +271,10 @@ int owl_iface_channel_hop(char *iface) ;
|
||||||
void owl_sigint_handler(int num) ;
|
void owl_sigint_handler(int num) ;
|
||||||
void owl_sigterm_handler(int num) ;
|
void owl_sigterm_handler(int num) ;
|
||||||
|
|
||||||
|
// Threads
|
||||||
|
void owl_close_fd(void *fd) ;
|
||||||
|
void owl_close_file(void *file) ;
|
||||||
|
|
||||||
|
|
||||||
/* Macros */
|
/* Macros */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue