add m_dirname that implement a non broken libgen-like function.
[apps/madmutt.git] / lib-lib / file.h
index 2f168e3..f2efefd 100644 (file)
@@ -33,9 +33,6 @@
 #ifndef MUTT_LIB_LIB_FILE_H
 #define MUTT_LIB_LIB_FILE_H
 
-#include <stdio.h>
-#include <stdlib.h>
-
 /****************************************************************************/
 /* fd ops                                                                   */
 /****************************************************************************/
@@ -50,21 +47,45 @@ void mutt_unlink(const char *);
 /****************************************************************************/
 
 FILE *safe_fopen(const char *, const char *);
-int safe_fclose(FILE **);
+int mutt_rename_file(char *, char *);
+
+static inline int m_fclose(FILE **f) {
+    if (*f) {
+        int res = fclose(*f);
+        *f = NULL;
+        return res;
+    }
+    return 0;
+}
 
-char *mutt_read_line(char *, size_t *, FILE *, int *);
+char *mutt_read_line(char *, ssize_t *, FILE *, int *);
 
 int mutt_copy_stream(FILE *, FILE *);
-int mutt_copy_bytes(FILE *, FILE *, size_t);
+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 */