standards-version: 3.9.5
[gnulib.git] / lib / clean-temp.h
index 6e7c3e6..2e01dd7 100644 (file)
@@ -1,11 +1,11 @@
 /* Temporary directories and temporary files with automatic cleanup.
 /* Temporary directories and temporary files with automatic cleanup.
-   Copyright (C) 2006 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2011-2014 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2006.
 
    Written by Bruno Haible <bruno@clisp.org>, 2006.
 
-   This program is free software; you can redistribute it and/or modify
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -13,8 +13,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef _CLEAN_TEMP_H
 #define _CLEAN_TEMP_H
 
 #ifndef _CLEAN_TEMP_H
 #define _CLEAN_TEMP_H
@@ -40,7 +39,16 @@ extern "C" {
 
    This module provides support for temporary directories and temporary files
    inside these temporary directories.  Temporary files without temporary
 
    This module provides support for temporary directories and temporary files
    inside these temporary directories.  Temporary files without temporary
-   directories are not supported here.  */
+   directories are not supported here.  The temporary directories and files
+   are automatically cleaned up (at the latest) when the program exits or
+   dies from a fatal signal such as SIGINT, SIGTERM, SIGHUP, but not if it
+   dies from a fatal signal such as SIGQUIT, SIGKILL, or SIGABRT, SIGSEGV,
+   SIGBUS, SIGILL, SIGFPE.
+
+   For the cleanup in the normal case, programs that use this module need to
+   call 'cleanup_temp_dir' for each successful return of 'create_temp_dir'.
+   The cleanup in the case of a fatal signal such as SIGINT, SIGTERM, SIGHUP,
+   is done entirely automatically by the functions of this module.  */
 
 struct temp_dir
 {
 
 struct temp_dir
 {
@@ -61,43 +69,43 @@ struct temp_dir
    Return a fresh 'struct temp_dir' on success.  Upon error, an error message
    is shown and NULL is returned.  */
 extern struct temp_dir * create_temp_dir (const char *prefix,
    Return a fresh 'struct temp_dir' on success.  Upon error, an error message
    is shown and NULL is returned.  */
 extern struct temp_dir * create_temp_dir (const char *prefix,
-                                         const char *parentdir,
-                                         bool cleanup_verbose);
+                                          const char *parentdir,
+                                          bool cleanup_verbose);
 
 /* Register the given ABSOLUTE_FILE_NAME as being a file inside DIR, that
    needs to be removed before DIR can be removed.
    Should be called before the file ABSOLUTE_FILE_NAME is created.  */
 extern void register_temp_file (struct temp_dir *dir,
 
 /* Register the given ABSOLUTE_FILE_NAME as being a file inside DIR, that
    needs to be removed before DIR can be removed.
    Should be called before the file ABSOLUTE_FILE_NAME is created.  */
 extern void register_temp_file (struct temp_dir *dir,
-                               const char *absolute_file_name);
+                                const char *absolute_file_name);
 
 /* Unregister the given ABSOLUTE_FILE_NAME as being a file inside DIR, that
    needs to be removed before DIR can be removed.
    Should be called when the file ABSOLUTE_FILE_NAME could not be created.  */
 extern void unregister_temp_file (struct temp_dir *dir,
 
 /* Unregister the given ABSOLUTE_FILE_NAME as being a file inside DIR, that
    needs to be removed before DIR can be removed.
    Should be called when the file ABSOLUTE_FILE_NAME could not be created.  */
 extern void unregister_temp_file (struct temp_dir *dir,
-                                 const char *absolute_file_name);
+                                  const char *absolute_file_name);
 
 /* Register the given ABSOLUTE_DIR_NAME as being a subdirectory inside DIR,
    that needs to be removed before DIR can be removed.
    Should be called before the subdirectory ABSOLUTE_DIR_NAME is created.  */
 extern void register_temp_subdir (struct temp_dir *dir,
 
 /* Register the given ABSOLUTE_DIR_NAME as being a subdirectory inside DIR,
    that needs to be removed before DIR can be removed.
    Should be called before the subdirectory ABSOLUTE_DIR_NAME is created.  */
 extern void register_temp_subdir (struct temp_dir *dir,
-                                 const char *absolute_dir_name);
+                                  const char *absolute_dir_name);
 
 /* Unregister the given ABSOLUTE_DIR_NAME as being a subdirectory inside DIR,
    that needs to be removed before DIR can be removed.
    Should be called when the subdirectory ABSOLUTE_DIR_NAME could not be
    created.  */
 extern void unregister_temp_subdir (struct temp_dir *dir,
 
 /* Unregister the given ABSOLUTE_DIR_NAME as being a subdirectory inside DIR,
    that needs to be removed before DIR can be removed.
    Should be called when the subdirectory ABSOLUTE_DIR_NAME could not be
    created.  */
 extern void unregister_temp_subdir (struct temp_dir *dir,
-                                   const char *absolute_dir_name);
+                                    const char *absolute_dir_name);
 
 /* Remove the given ABSOLUTE_FILE_NAME and unregister it.
    Return 0 upon success, or -1 if there was some problem.  */
 extern int cleanup_temp_file (struct temp_dir *dir,
 
 /* Remove the given ABSOLUTE_FILE_NAME and unregister it.
    Return 0 upon success, or -1 if there was some problem.  */
 extern int cleanup_temp_file (struct temp_dir *dir,
-                             const char *absolute_file_name);
+                              const char *absolute_file_name);
 
 /* Remove the given ABSOLUTE_DIR_NAME and unregister it.
    Return 0 upon success, or -1 if there was some problem.  */
 extern int cleanup_temp_subdir (struct temp_dir *dir,
 
 /* Remove the given ABSOLUTE_DIR_NAME and unregister it.
    Return 0 upon success, or -1 if there was some problem.  */
 extern int cleanup_temp_subdir (struct temp_dir *dir,
-                               const char *absolute_dir_name);
+                                const char *absolute_dir_name);
 
 /* Remove all registered files and subdirectories inside DIR.
    Return 0 upon success, or -1 if there was some problem.  */
 
 /* Remove all registered files and subdirectories inside DIR.
    Return 0 upon success, or -1 if there was some problem.  */