mirror of
https://github.com/systemd/systemd.git
synced 2026-07-16 20:40:56 +00:00
This adds a bit of generic helper tools for installing files/dir trees. "installing" is supposed to mean the final step when preparing a disk image or directory tree, where the result is renamed to its final name. It has some bells and whistles, as it is able to replace existing files sanely, can fsync() things carefully and can mark things read-only in a nice way. This is supposed to be generic, unified code that can be used eventually for any of our tools that prepare disk images/directory trees, including importd, nspawn's --template= mechanism, the discover-image.c logic, and more.
15 lines
786 B
C
15 lines
786 B
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
#pragma once
|
|
|
|
int fs_make_very_read_only(int fd);
|
|
|
|
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);
|