move some string functions in lib-lib !
[apps/madmutt.git] / lib-lib / str.h
index fd80950..1beac83 100644 (file)
@@ -193,6 +193,8 @@ static inline ssize_t m_strnlen(const char *s, ssize_t n) {
     return 0;
 }
 
+ssize_t m_strwidth(const char *s);
+
 /****************************************************************************/
 /* comparisons                                                              */
 /****************************************************************************/
@@ -359,6 +361,24 @@ m_strncat(char *dst, ssize_t n, const char *src, ssize_t l) {
     return dlen + m_strncpy(dst + dlen, n - dlen, src, l);
 }
 
+/* flags for m_strformat() */
+typedef enum {
+  M_FORMAT_FORCESUBJ   = (1 << 0),  /* print the subject even if unchanged */
+  M_FORMAT_TREE        = (1 << 1),  /* draw the thread tree */
+  M_FORMAT_MAKEPRINT   = (1 << 2),  /* make sure that all chars are printable */
+  M_FORMAT_OPTIONAL    = (1 << 3),
+  M_FORMAT_STAT_FILE   = (1 << 4),  /* used by mutt_attach_fmt */
+  M_FORMAT_ARROWCURSOR = (1 << 5),  /* reserve space for arrow_cursor */
+  M_FORMAT_INDEX       = (1 << 6)   /* this is a main index entry */
+} format_flag;
+
+typedef const char *
+format_t(char *, ssize_t, char, const char *,
+         const char *, const char *, const char *, anytype, format_flag);
+
+ssize_t m_strformat(char *, ssize_t, int, const char *,
+                    format_t *, anytype, format_flag);
+
 /****************************************************************************/
 /* parsing related                                                          */
 /****************************************************************************/