#ifndef MUTT_LIB_LIB_FILE_H
#define MUTT_LIB_LIB_FILE_H
-#include <stdio.h>
-#include <stdlib.h>
-
/****************************************************************************/
/* fd ops */
/****************************************************************************/
FILE *safe_fopen(const char *, const char *);
int mutt_rename_file(char *, char *);
-int safe_fclose(FILE **);
+
+static inline int m_fclose(FILE **f) {
+ if (*f) {
+ int res = fclose(*f);
+ *f = NULL;
+ return res;
+ }
+ return 0;
+}
char *mutt_read_line(char *, ssize_t *, FILE *, int *);
int mutt_copy_bytes(FILE *, FILE *, ssize_t);
/****************************************************************************/
-/* ligben-like funcs */
+/* path manipulations */
/****************************************************************************/
const char *mutt_basename(const char *);
+ssize_t m_dirname(char *, ssize_t, const char *);
+
char *mutt_concat_path(char *, ssize_t, const char *, const char *);
void mutt_sanitize_filename(char *, short);
ssize_t mutt_quote_filename(char *, ssize_t, const char *);
+/* replace any %s with src, or appends " $src" */
+ssize_t m_file_fmt(char *dst, ssize_t n, const char *fmt, const char *src);
+ssize_t m_quotefile_fmt(char *, ssize_t, const char *, const char *);
+
+int m_tempfd(char *dst, ssize_t n, const char *dir, const char *fmt);
+FILE *m_tempfile(char *dst, ssize_t n, const char *dir, const char *fmt);
+
+/****************************************************************************/
+/* misc */
+/****************************************************************************/
+
+time_t m_decrease_mtime(const char *f, struct stat *st);
+
#endif /* MUTT_LIB_LIB_FILE_H */