Mercurial > hg > octave-jordi > gnulib-hg
annotate lib/clean-temp.h @ 14379:2330aac2ae54
maint: adjust cpp indentation to reflect nesting depth
I.e., in a block of code that begins with an unnested "#if",
put one space between the "#" in column 1 and following token.
For example,
-#include <sys/vfs.h>
+# include <sys/vfs.h>
Do this only in .c files that are part of a module I maintain.
* lib/linkat.c: Filter through cppi.
* lib/nanosleep.c: Likewise.
* lib/openat.c: Likewise.
* lib/openat-die.c: Likewise.
* lib/dup3.c: Likewise.
* lib/fchownat.c: Likewise.
* lib/flock.c: Likewise.
* lib/fsync.c: Likewise.
* lib/fts.c: Likewise.
* lib/getpass.c: Likewise.
* lib/gettimeofday.c: Likewise.
* lib/userspec.c: Likewise.
* Makefile (sc_cpp_indent_check): New rule, to check this.
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Sun, 20 Feb 2011 23:02:43 +0100 |
parents | 97fc9a21a8fb |
children | e38cec555642 |
rev | line source |
---|---|
7044 | 1 /* Temporary directories and temporary files with automatic cleanup. |
14079
97fc9a21a8fb
maint: update almost all copyright ranges to include 2011
Jim Meyering <meyering@redhat.com>
parents:
12559
diff
changeset
|
2 Copyright (C) 2006, 2009-2011 Free Software Foundation, Inc. |
7044 | 3 Written by Bruno Haible <bruno@clisp.org>, 2006. |
4 | |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7422
diff
changeset
|
5 This program is free software: you can redistribute it and/or modify |
7044 | 6 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7422
diff
changeset
|
7 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7422
diff
changeset
|
8 (at your option) any later version. |
7044 | 9 |
10 This program is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 GNU General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU General Public License | |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
7422
diff
changeset
|
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
7044 | 17 |
18 #ifndef _CLEAN_TEMP_H | |
19 #define _CLEAN_TEMP_H | |
20 | |
21 #include <stdbool.h> | |
7411
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
22 #include <stdio.h> |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
23 #include <sys/types.h> |
7044 | 24 |
25 #ifdef __cplusplus | |
26 extern "C" { | |
27 #endif | |
28 | |
29 | |
30 /* Temporary directories and temporary files should be automatically removed | |
31 when the program exits either normally or through a fatal signal. We can't | |
32 rely on the "unlink before close" idiom, because it works only on Unix and | |
33 also - if no signal blocking is used - leaves a time window where a fatal | |
34 signal would not clean up the temporary file. | |
35 | |
7411
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
36 Also, open file descriptors need to be closed before the temporary files |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
37 and the temporary directories can be removed, because only on Unix |
7422 | 38 (excluding Cygwin) can one remove directories containing open files. |
7411
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
39 |
7044 | 40 This module provides support for temporary directories and temporary files |
41 inside these temporary directories. Temporary files without temporary | |
42 directories are not supported here. */ | |
43 | |
44 struct temp_dir | |
45 { | |
46 /* The absolute pathname of the directory. */ | |
47 const char * const dir_name; | |
48 /* Whether errors during explicit cleanup are reported to standard error. */ | |
49 bool cleanup_verbose; | |
50 /* More fields are present here, but not public. */ | |
51 }; | |
52 | |
53 /* Create a temporary directory. | |
54 PREFIX is used as a prefix for the name of the temporary directory. It | |
55 should be short and still give an indication about the program. | |
56 PARENTDIR can be used to specify the parent directory; if NULL, a default | |
57 parent directory is used (either $TMPDIR or /tmp or similar). | |
58 CLEANUP_VERBOSE determines whether errors during explicit cleanup are | |
59 reported to standard error. | |
60 Return a fresh 'struct temp_dir' on success. Upon error, an error message | |
61 is shown and NULL is returned. */ | |
62 extern struct temp_dir * create_temp_dir (const char *prefix, | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
63 const char *parentdir, |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
64 bool cleanup_verbose); |
7044 | 65 |
66 /* Register the given ABSOLUTE_FILE_NAME as being a file inside DIR, that | |
67 needs to be removed before DIR can be removed. | |
68 Should be called before the file ABSOLUTE_FILE_NAME is created. */ | |
69 extern void register_temp_file (struct temp_dir *dir, | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
70 const char *absolute_file_name); |
7044 | 71 |
72 /* Unregister the given ABSOLUTE_FILE_NAME as being a file inside DIR, that | |
73 needs to be removed before DIR can be removed. | |
74 Should be called when the file ABSOLUTE_FILE_NAME could not be created. */ | |
75 extern void unregister_temp_file (struct temp_dir *dir, | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
76 const char *absolute_file_name); |
7044 | 77 |
78 /* Register the given ABSOLUTE_DIR_NAME as being a subdirectory inside DIR, | |
79 that needs to be removed before DIR can be removed. | |
80 Should be called before the subdirectory ABSOLUTE_DIR_NAME is created. */ | |
81 extern void register_temp_subdir (struct temp_dir *dir, | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
82 const char *absolute_dir_name); |
7044 | 83 |
84 /* Unregister the given ABSOLUTE_DIR_NAME as being a subdirectory inside DIR, | |
85 that needs to be removed before DIR can be removed. | |
86 Should be called when the subdirectory ABSOLUTE_DIR_NAME could not be | |
87 created. */ | |
88 extern void unregister_temp_subdir (struct temp_dir *dir, | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
89 const char *absolute_dir_name); |
7044 | 90 |
7415 | 91 /* Remove the given ABSOLUTE_FILE_NAME and unregister it. |
92 Return 0 upon success, or -1 if there was some problem. */ | |
93 extern int cleanup_temp_file (struct temp_dir *dir, | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
94 const char *absolute_file_name); |
7044 | 95 |
7415 | 96 /* Remove the given ABSOLUTE_DIR_NAME and unregister it. |
97 Return 0 upon success, or -1 if there was some problem. */ | |
98 extern int cleanup_temp_subdir (struct temp_dir *dir, | |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9309
diff
changeset
|
99 const char *absolute_dir_name); |
7044 | 100 |
7415 | 101 /* Remove all registered files and subdirectories inside DIR. |
102 Return 0 upon success, or -1 if there was some problem. */ | |
103 extern int cleanup_temp_dir_contents (struct temp_dir *dir); | |
7044 | 104 |
105 /* Remove all registered files and subdirectories inside DIR and DIR itself. | |
7415 | 106 DIR cannot be used any more after this call. |
107 Return 0 upon success, or -1 if there was some problem. */ | |
108 extern int cleanup_temp_dir (struct temp_dir *dir); | |
7044 | 109 |
7411
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
110 /* Open a temporary file in a temporary directory. |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
111 Registers the resulting file descriptor to be closed. */ |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
112 extern int open_temp (const char *file_name, int flags, mode_t mode); |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
113 extern FILE * fopen_temp (const char *file_name, const char *mode); |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
114 |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
115 /* Close a temporary file in a temporary directory. |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
116 Unregisters the previously registered file descriptor. */ |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
117 extern int close_temp (int fd); |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
118 extern int fclose_temp (FILE *fp); |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
119 |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
120 /* Like fwriteerror. |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
121 Unregisters the previously registered file descriptor. */ |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
122 extern int fwriteerror_temp (FILE *fp); |
67235cf9199a
Have clean-temp register file open descriptors to temporary files.
Bruno Haible <bruno@clisp.org>
parents:
7044
diff
changeset
|
123 |
7417
fa9e9b096831
* clean-temp.h (close_stream_temp): New declaration.
Eric Blake <ebb9@byu.net>
parents:
7415
diff
changeset
|
124 /* Like close_stream. |
fa9e9b096831
* clean-temp.h (close_stream_temp): New declaration.
Eric Blake <ebb9@byu.net>
parents:
7415
diff
changeset
|
125 Unregisters the previously registered file descriptor. */ |
fa9e9b096831
* clean-temp.h (close_stream_temp): New declaration.
Eric Blake <ebb9@byu.net>
parents:
7415
diff
changeset
|
126 extern int close_stream_temp (FILE *fp); |
fa9e9b096831
* clean-temp.h (close_stream_temp): New declaration.
Eric Blake <ebb9@byu.net>
parents:
7415
diff
changeset
|
127 |
7044 | 128 |
129 #ifdef __cplusplus | |
130 } | |
131 #endif | |
132 | |
133 #endif /* _CLEAN_TEMP_H */ |