]>
git.proxmox.com Git - mirror_lxc.git/blob - src/lxc/file_utils.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 #ifndef __LXC_FILE_UTILS_H
4 #define __LXC_FILE_UTILS_H
10 #include <sys/types.h>
15 /* read and write whole files */
16 extern int lxc_write_to_file(const char *filename
, const void *buf
,
17 size_t count
, bool add_newline
, mode_t mode
);
18 extern int lxc_readat(int dirfd
, const char *filename
, void *buf
, size_t count
);
19 extern int lxc_writeat(int dirfd
, const char *filename
, const void *buf
,
21 extern int lxc_write_openat(const char *dir
, const char *filename
,
22 const void *buf
, size_t count
);
23 extern int lxc_read_from_file(const char *filename
, void *buf
, size_t count
);
25 /* send and receive buffers completely */
26 extern ssize_t
lxc_write_nointr(int fd
, const void *buf
, size_t count
);
27 extern ssize_t
lxc_send_nointr(int sockfd
, void *buf
, size_t len
, int flags
);
28 extern ssize_t
lxc_read_nointr(int fd
, void *buf
, size_t count
);
29 extern ssize_t
lxc_read_nointr_expect(int fd
, void *buf
, size_t count
,
30 const void *expected_buf
);
31 extern ssize_t
lxc_read_file_expect(const char *path
, void *buf
, size_t count
,
32 const void *expected_buf
);
33 extern ssize_t
lxc_recv_nointr(int sockfd
, void *buf
, size_t len
, int flags
);
34 ssize_t
lxc_recvmsg_nointr_iov(int sockfd
, struct iovec
*iov
, size_t iovlen
,
37 extern bool file_exists(const char *f
);
38 extern int print_to_file(const char *file
, const char *content
);
39 extern int is_dir(const char *path
);
40 extern int lxc_count_file_lines(const char *fn
);
41 extern int lxc_make_tmpfile(char *template, bool rm
);
43 /* __typeof__ should be safe to use with all compilers. */
44 typedef __typeof__(((struct statfs
*)NULL
)->f_type
) fs_type_magic
;
45 extern bool has_fs_type(const char *path
, fs_type_magic magic_val
);
46 extern bool fhas_fs_type(int fd
, fs_type_magic magic_val
);
47 extern bool is_fs_type(const struct statfs
*fs
, fs_type_magic magic_val
);
48 extern FILE *fopen_cloexec(const char *path
, const char *mode
);
49 extern ssize_t
lxc_sendfile_nointr(int out_fd
, int in_fd
, off_t
*offset
,
51 extern char *file_to_buf(char *path
, size_t *length
);
52 extern int fd_to_fd(int from
, int to
);
53 extern int lxc_open_dirfd(const char *dir
);
55 #endif /* __LXC_FILE_UTILS_H */