1 /* PSPP - a program for statistical analysis.
2 Copyright (C) 2004, 2010 Free Software Foundation, Inc.
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 #include <sys/types.h>
26 /* Prepares to atomically replace a (potentially) existing file
27 by a new file., by creating a temporary file with the given
30 Special files are an exception: they are not atomically
31 replaced but simply opened for writing.
33 If successful, stores a stream for it opened according to MODE (which should be
34 "w" or "wb") in *FP. Returns a ticket that can be used to
35 commit or abort the file replacement. If neither action has
36 yet been taken, program termination via signal will cause
37 all resources to be released. The return value must not be
40 The caller is responsible for closing *FP */
42 struct replace_file *replace_file_start (const struct file_handle *fh,
43 const char *mode, mode_t permissions,
46 /* Commits or aborts the replacement of a (potentially) existing
47 file by a new file, using the ticket returned by
48 replace_file_start. Returns success. */
49 bool replace_file_commit (struct replace_file *);
50 bool replace_file_abort (struct replace_file *);
52 #endif /* make-file.h */