summaryrefslogtreecommitdiffstats
path: root/src/shared/install-file.h
blob: af07ab29d226a41e5f7c0fa1e0596220817d040a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once

typedef enum InstallFileFlags {
        INSTALL_REPLACE    = 1 << 0, /* Replace an existing inode */
        INSTALL_READ_ONLY  = 1 << 1, /* Call fs_make_very_read_only() to make the inode comprehensively read-only */
        INSTALL_FSYNC      = 1 << 2, /* fsync() file contents before moving file in */
        INSTALL_FSYNC_FULL = 1 << 3, /* like INSTALL_FSYNC, but also fsync() parent dir before+after moving file in */
        INSTALL_SYNCFS     = 1 << 4, /* syncfs() before moving file in, fsync() parent dir after moving file in */
} InstallFileFlags;

int install_file(int source_atfd, const char *source_name, int target_atfd, const char *target_name, InstallFileFlags flags);