NeoMutt  2020-06-26-89-g172cd3
Teaching an old dog new tricks
DOXYGEN
file.h
Go to the documentation of this file.
1 
23 #ifndef MUTT_LIB_FILE_H
24 #define MUTT_LIB_FILE_H
25 
26 #include "config.h"
27 #include <stdbool.h>
28 #include <stdio.h>
29 #include <sys/types.h>
30 
31 struct Buffer;
32 struct stat;
33 extern char *C_Tmpdir;
34 extern const char filename_safe_chars[];
35 
36 /* Flags for mutt_file_read_line() */
37 #define MUTT_CONT (1 << 0)
38 #define MUTT_EOL (1 << 1)
39 
40 #ifdef HAVE_STRUCT_TIMESPEC
41 struct timespec;
42 #else
43 
46 struct timespec
47 {
48  time_t tv_sec;
49  long tv_nsec;
50 };
51 #endif
52 
59 {
63 };
64 
69 {
70  char *line;
71  size_t size;
72  int line_num;
73 };
74 
83 typedef bool (*mutt_file_map_t)(char *line, int line_num, void *user_data);
84 
85 int mutt_file_check_empty(const char *path);
86 int mutt_file_chmod(const char *path, mode_t mode);
87 int mutt_file_chmod_add(const char *path, mode_t mode);
88 int mutt_file_chmod_add_stat(const char *path, mode_t mode, struct stat *st);
89 int mutt_file_chmod_rm(const char *path, mode_t mode);
90 int mutt_file_chmod_rm_stat(const char *path, mode_t mode, struct stat *st);
91 int mutt_file_copy_bytes(FILE *fp_in, FILE *fp_out, size_t size);
92 int mutt_file_copy_stream(FILE *fp_in, FILE *fp_out);
93 time_t mutt_file_decrease_mtime(const char *fp, struct stat *st);
94 void mutt_file_expand_fmt(struct Buffer *dest, const char *fmt, const char *src);
95 void mutt_file_expand_fmt_quote(char *dest, size_t destlen, const char *fmt, const char *src);
96 int mutt_file_fclose(FILE **fp);
97 FILE * mutt_file_fopen(const char *path, const char *mode);
98 int mutt_file_fsync_close(FILE **fp);
99 long mutt_file_get_size(const char *path);
100 void mutt_file_get_stat_timespec(struct timespec *dest, struct stat *sb, enum MuttStatType type);
101 bool mutt_file_iter_line(struct MuttFileIter *iter, FILE *fp, int flags);
102 int mutt_file_lock(int fd, bool excl, bool timeout);
103 bool mutt_file_map_lines(mutt_file_map_t func, void *user_data, FILE *fp, int flags);
104 int mutt_file_mkdir(const char *path, mode_t mode);
105 FILE * mutt_file_mkstemp_full(const char *file, int line, const char *func);
106 #define mutt_file_mkstemp() mutt_file_mkstemp_full(__FILE__, __LINE__, __func__)
107 int mutt_file_open(const char *path, int flags);
108 size_t mutt_file_quote_filename(const char *filename, char *buf, size_t buflen);
109 char * mutt_file_read_keyword(const char *file, char *buf, size_t buflen);
110 char * mutt_file_read_line(char *line, size_t *size, FILE *fp, int *line_num, int flags);
111 int mutt_file_rename(const char *oldfile, const char *newfile);
112 int mutt_file_rmtree(const char *path);
113 int mutt_file_safe_rename(const char *src, const char *target);
114 void mutt_file_sanitize_filename(char *path, bool slash);
115 int mutt_file_sanitize_regex(struct Buffer *dest, const char *src);
116 void mutt_file_set_mtime(const char *from, const char *to);
117 int mutt_file_stat_compare(struct stat *sba, enum MuttStatType sba_type, struct stat *sbb, enum MuttStatType sbb_type);
118 int mutt_file_stat_timespec_compare(struct stat *sba, enum MuttStatType type, struct timespec *b);
119 int mutt_file_symlink(const char *oldpath, const char *newpath);
120 int mutt_file_timespec_compare(struct timespec *a, struct timespec *b);
121 void mutt_file_touch_atime(int fd);
122 void mutt_file_unlink(const char *s);
123 void mutt_file_unlink_empty(const char *path);
124 int mutt_file_unlock(int fd);
125 void mutt_file_resolve_symlink(struct Buffer *buf);
126 
127 void mutt_buffer_quote_filename(struct Buffer *buf, const char *filename, bool add_outer);
128 void mutt_buffer_file_expand_fmt_quote(struct Buffer *dest, const char *fmt, const char *src);
129 
130 #endif /* MUTT_LIB_FILE_H */
void mutt_buffer_file_expand_fmt_quote(struct Buffer *dest, const char *fmt, const char *src)
Replace s in a string with a filename.
Definition: file.c:1425
int mutt_file_chmod_add(const char *path, mode_t mode)
Add permissions to a file.
Definition: file.c:1060
File/dir&#39;s ctime - creation time.
Definition: file.h:62
char * line
the line data
Definition: file.h:70
int mutt_file_rename(const char *oldfile, const char *newfile)
Rename a file.
Definition: file.c:1340
static int const char * fmt
Definition: acutest.h:488
int mutt_file_fsync_close(FILE **fp)
Flush the data, before closing a file (and NULL the pointer)
Definition: file.c:169
void mutt_file_unlink_empty(const char *path)
Delete a file if it&#39;s empty.
Definition: file.c:1304
String manipulation buffer.
Definition: buffer.h:33
void mutt_file_set_mtime(const char *from, const char *to)
Set the modification time of one file from another.
Definition: file.c:996
const char filename_safe_chars[]
Definition: file.c:61
void mutt_file_unlink(const char *s)
Delete a file, carefully.
Definition: file.c:195
int mutt_file_timespec_compare(struct timespec *a, struct timespec *b)
Compare to time values.
Definition: file.c:1508
void mutt_file_get_stat_timespec(struct timespec *dest, struct stat *sb, enum MuttStatType type)
Read the stat() time into a time value.
Definition: file.c:1530
int mutt_file_chmod_rm_stat(const char *path, mode_t mode, struct stat *st)
Remove permissions from a file.
Definition: file.c:1139
int mutt_file_chmod_add_stat(const char *path, mode_t mode, struct stat *st)
Add permissions to a file.
Definition: file.c:1083
time_t tv_sec
Definition: file.h:48
int mutt_file_chmod_rm(const char *path, mode_t mode)
Remove permissions from a file.
Definition: file.c:1116
char * C_Tmpdir
Config: Directory for temporary files.
Definition: file.c:56
bool mutt_file_map_lines(mutt_file_map_t func, void *user_data, FILE *fp, int flags)
Process lines of text read from a file pointer.
Definition: file.c:767
int mutt_file_chmod(const char *path, mode_t mode)
Set permissions of a file.
Definition: file.c:1035
MuttStatType
Flags for mutt_file_get_stat_timespec.
Definition: file.h:58
int mutt_file_lock(int fd, bool excl, bool timeout)
(try to) lock a file using fcntl()
Definition: file.c:1168
File/dir&#39;s mtime - last modified time.
Definition: file.h:61
int mutt_file_mkdir(const char *path, mode_t mode)
Recursively create directories.
Definition: file.c:875
long tv_nsec
Definition: file.h:49
int mutt_file_symlink(const char *oldpath, const char *newpath)
Create a symlink.
Definition: file.c:299
void mutt_file_resolve_symlink(struct Buffer *buf)
Resolve a symlink in place.
Definition: file.c:1610
FILE * mutt_file_mkstemp_full(const char *file, int line, const char *func)
Create temporary file safely.
Definition: file.c:930
int mutt_file_copy_stream(FILE *fp_in, FILE *fp_out)
Copy the contents of one file into another.
Definition: file.c:271
int mutt_file_sanitize_regex(struct Buffer *dest, const char *src)
Escape any regex-magic characters in a string.
Definition: file.c:637
int mutt_file_fclose(FILE **fp)
Close a FILE handle (and NULL the pointer)
Definition: file.c:153
int mutt_file_unlock(int fd)
Unlock a file previously locked by mutt_file_lock()
Definition: file.c:1216
char * mutt_file_read_keyword(const char *file, char *buf, size_t buflen)
Read a keyword from a file.
Definition: file.c:1375
int line_num
line number
Definition: file.h:72
int mutt_file_safe_rename(const char *src, const char *target)
NFS-safe renaming of files.
Definition: file.c:354
void mutt_file_expand_fmt_quote(char *dest, size_t destlen, const char *fmt, const char *src)
size_t size
allocated size of line data
Definition: file.h:71
void mutt_file_sanitize_filename(char *path, bool slash)
Replace unsafe characters in a filename.
Definition: file.c:618
char * mutt_file_read_line(char *line, size_t *size, FILE *fp, int *line_num, int flags)
Read a line from a file.
Definition: file.c:667
int mutt_file_check_empty(const char *path)
Is the mailbox empty.
Definition: file.c:1405
State record for mutt_file_iter_line()
Definition: file.h:68
bool(* mutt_file_map_t)(char *line, int line_num, void *user_data)
Callback function for mutt_file_map_lines()
Definition: file.h:83
int mutt_file_stat_timespec_compare(struct stat *sba, enum MuttStatType type, struct timespec *b)
Compare stat info with a time value.
Definition: file.c:1570
void mutt_file_expand_fmt(struct Buffer *dest, const char *fmt, const char *src)
Replace s in a string with a filename.
Definition: file.c:1440
FILE * mutt_file_fopen(const char *path, const char *mode)
Call fopen() safely.
Definition: file.c:588
void mutt_buffer_quote_filename(struct Buffer *buf, const char *filename, bool add_outer)
Quote a filename to survive the shell&#39;s quoting rules.
Definition: file.c:836
int mutt_file_copy_bytes(FILE *fp_in, FILE *fp_out, size_t size)
Copy some content from one file to another.
Definition: file.c:241
int mutt_file_rmtree(const char *path)
Recursively remove a directory.
Definition: file.c:468
void mutt_file_touch_atime(int fd)
Set the access time to current time.
Definition: file.c:1019
Time value with nanosecond precision.
Definition: file.h:46
int mutt_file_stat_compare(struct stat *sba, enum MuttStatType sba_type, struct stat *sbb, enum MuttStatType sbb_type)
Compare two stat infos.
Definition: file.c:1592
long mutt_file_get_size(const char *path)
Get the size of a file.
Definition: file.c:1488
int const char * file
Definition: acutest.h:617
int const char int line
Definition: acutest.h:617
int mutt_file_open(const char *path, int flags)
Open a file.
Definition: file.c:522
size_t mutt_file_quote_filename(const char *filename, char *buf, size_t buflen)
Quote a filename to survive the shell&#39;s quoting rules.
Definition: file.c:793
bool mutt_file_iter_line(struct MuttFileIter *iter, FILE *fp, int flags)
iterate over the lines from an open file pointer
Definition: file.c:747
time_t mutt_file_decrease_mtime(const char *fp, struct stat *st)
Decrease a file&#39;s modification time by 1 second.
Definition: file.c:963
File/dir&#39;s atime - last accessed time.
Definition: file.h:60