X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fmake-file.h;h=a2bcc76eb11bdda3ec0917844f0c9b11c1175ced;hb=c1b1583b96cc05a2bf9f3f6d01bbfa063fafb253;hp=31795bebe58db8d4b66d187c2ba9f3978369d7e2;hpb=f550aee00a62fe1d8baf62d83cd7efef6cc2ee92;p=pspp diff --git a/src/data/make-file.h b/src/data/make-file.h index 31795bebe5..a2bcc76eb1 100644 --- a/src/data/make-file.h +++ b/src/data/make-file.h @@ -21,37 +21,27 @@ #include #include -/* Creates a temporary file and stores its name in *FILE_NAME and - a file descriptor for it in *FD. Returns success. Caller is - responsible for freeing *FILE_NAME. */ -int make_temp_file (int *fd, char **file_name); - - -/* Creates a temporary file and stores its name in *FILE_NAME and - a file stream for it in *FP. Returns success. Caller is - responsible for freeing *FILE_NAME. */ -int make_unique_file_stream (FILE **fp, char **file_name) ; - +struct file_handle; /* Prepares to atomically replace a (potentially) existing file - by a new file, by creating a temporary file with the given - PERMISSIONS bits in the same directory as *FILE_NAME. + by a new file., by creating a temporary file with the given + PERMISSIONS bits. Special files are an exception: they are not atomically replaced but simply opened for writing. - If successful, stores the temporary file's name in *TMP_NAME - and a stream for it opened according to MODE (which should be + If successful, stores a stream for it opened according to MODE (which should be "w" or "wb") in *FP. Returns a ticket that can be used to commit or abort the file replacement. If neither action has yet been taken, program termination via signal will cause - *TMP_FILE to be unlinked. + all resources to be released. The return value must not be + explicitly freed. + + The caller is responsible for closing *FP */ - The caller is responsible for closing *FP, but *TMP_NAME is - owned by the callee. */ -struct replace_file *replace_file_start (const char *file_name, +struct replace_file *replace_file_start (const struct file_handle *fh, const char *mode, mode_t permissions, - FILE **fp, char **tmp_name); + FILE **fp); /* Commits or aborts the replacement of a (potentially) existing file by a new file, using the ticket returned by