Merge branch 'file-delete-docs' into 'master'

gfile: Document TOCTTOU avoidance using g_file_delete()

See merge request GNOME/glib!1613
This commit is contained in:
Sebastian Dröge 2020-08-12 10:00:12 +00:00
commit e4f4a40fb4

View File

@ -4027,6 +4027,21 @@ g_file_make_symbolic_link (GFile *file,
* Deletes a file. If the @file is a directory, it will only be * Deletes a file. If the @file is a directory, it will only be
* deleted if it is empty. This has the same semantics as g_unlink(). * deleted if it is empty. This has the same semantics as g_unlink().
* *
* If @file doesnt exist, %G_IO_ERROR_NOT_FOUND will be returned. This allows
* for deletion to be implemented avoiding
* [time-of-check to time-of-use races](https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use):
* |[
* g_autoptr(GError) local_error = NULL;
* if (!g_file_delete (my_file, my_cancellable, &local_error) &&
* !g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
* {
* // deletion failed for some reason other than the file not existing:
* // so report the error
* g_warning ("Failed to delete %s: %s",
* g_file_peek_path (my_file), local_error->message);
* }
* ]|
*
* If @cancellable is not %NULL, then the operation can be cancelled by * If @cancellable is not %NULL, then the operation can be cancelled by
* triggering the cancellable object from another thread. If the operation * triggering the cancellable object from another thread. If the operation
* was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.