]> git.proxmox.com Git - mirror_lxc.git/blob - src/lxc/file_utils.h
Merge pull request #3233 from xinhua9569/master
[mirror_lxc.git] / src / lxc / file_utils.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2
3 #ifndef __LXC_FILE_UTILS_H
4 #define __LXC_FILE_UTILS_H
5
6 #include <fcntl.h>
7 #include <stdbool.h>
8 #include <stdio.h>
9 #include <sys/stat.h>
10 #include <sys/types.h>
11 #include <sys/uio.h>
12 #include <sys/vfs.h>
13 #include <unistd.h>
14
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,
20 size_t count);
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);
24
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,
35 int flags);
36
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);
42
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,
50 size_t count);
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);
54
55 #endif /* __LXC_FILE_UTILS_H */