gboolean g_file_set_contents_full ( const gchar* filename, const gchar* contents, gssize length, GFileSetContentsFlags flags, int mode, GError** error )
Writes all of
contents to a file named
filename, with good error checking.
If a file called
filename already exists it will be overwritten.
flags control the properties of the write operation: whether it’s atomic,
and what the tradeoff is between returning quickly or being resilient to
As this function performs file I/O, it is recommended to not call it anywhere
where blocking would cause problems, such as in the main loop of a graphical
application. In particular, if
flags has any value other than
G_FILE_SET_CONTENTS_NONE then this function may call
G_FILE_SET_CONTENTS_CONSISTENT is set in
flags, the operation is atomic
in the sense that it is first written to a temporary file which is then
renamed to the final name.
On UNIX, if
filenamealready exists hard links to
filenamewill break. Also since the file is recreated, existing permissions, access control lists, metadata etc. may be lost. If
filenameis a symbolic link, the link itself will be replaced, not the linked file.
On UNIX, if
filenamealready exists and is non-empty, and if the system supports it (via a journalling filesystem or equivalent), and if
G_FILE_SET_CONTENTS_CONSISTENTis set in
fsync()call (or equivalent) will be used to ensure atomic replacement:
filenamewill contain either its old contents or
contents, even in the face of system power loss, the disk being unsafely removed, etc.
On UNIX, if
filenamedoes not already exist or is empty, there is a possibility that system power loss etc. after calling this function will leave
filenameempty or full of NUL bytes, depending on the underlying filesystem, unless
G_FILE_SET_CONTENTS_CONSISTENTare set in
On Windows renaming a file will not remove an existing file with the new name, so on Windows there is a race condition between the existing file being removed and the temporary file being renamed.
On Windows there is no way to remove a file that is open to some process, or mapped into memory. Thus, this function will fail if
filenamealready exists and is open.
If the call was successful, it returns
TRUE. If the call was not successful,
FALSE and sets
error. The error domain is
Possible error codes are those in the
Note that the name for the temporary file is constructed by appending up
to 7 characters to
If the file didn’t exist before and is created, it will be given the
mode. Otherwise, the permissions of the existing file may
be changed to
mode depending on
flags, or they may remain unchanged.
Available since: 2.66
Name of a file to write
contentsto, in the GLib file name encoding.
The data is owned by the caller of the function. The value is a file system path, using the OS encoding.
Type: An array of
String to write to the file.
The length of the array is specified in the
The data is owned by the caller of the function.
contents, or -1 if
contentsis a nul-terminated string.
Flags controlling the safety vs speed of the operation.
File mode, as passed to
open(); typically this will be
The return location for a recoverable error.
The argument can be
If the return location is not
NULL, then you must initialize it to a
The argument will left initialized to
NULLby the function if there are no errors.
In case of error, the argument will be set to a newly allocated
GError; the caller will take ownership of the data, and be responsible for freeing it.