add m_dirname that implement a non broken libgen-like function.
[apps/madmutt.git] / lib-lib / file.h
index c73f78e..f2efefd 100644 (file)
@@ -48,7 +48,15 @@ void mutt_unlink(const char *);
 
 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 *);
 
@@ -56,13 +64,28 @@ int mutt_copy_stream(FILE *, FILE *);
 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 */