allow spaces in imap foldernames
[claws.git] / src / utils.h
index 172df058de4b9de143d80db3c8dcb447a0eb9bdc..1d3729fec3628a15e6ba346cdabf5f1ecdc8907b 100644 (file)
        ptr = __tmp; \
 }
 
+#define Xstrconcat_a(ptr, str1, str2, iffail) \
+{ \
+       gchar *__tmp; \
+ \
+       if ((__tmp = alloca(strlen(str1) + strlen(str2) + 1)) == NULL) { \
+               g_warning("can't allocate memory\n"); \
+               iffail; \
+       } else { \
+               strcpy(__tmp, str1); \
+               strcat(__tmp, str2); \
+       } \
+ \
+       ptr = __tmp; \
+}
+
 #define FILE_OP_ERROR(file, func) \
 { \
        fprintf(stderr, "%s: ", file); \
@@ -150,6 +165,7 @@ gint path_cmp               (const gchar    *s1,
 gchar *strretchomp     (gchar          *str);
 gchar *strtailchomp    (gchar          *str,
                         gchar           tail_char);
+gchar *strcrchomp      (gchar          *str);
 gchar *strcasestr      (const gchar    *haystack,
                         const gchar    *needle);
 gchar *strncpy2                (gchar          *dest,
@@ -227,12 +243,17 @@ gchar *strrchr_with_skip_quote            (const gchar    *str,
                                         gint            quote_chr,
                                         gint            c);
 void extract_address                   (gchar          *str);
+
 GSList *address_list_append            (GSList         *addr_list,
                                         const gchar    *str);
 GSList *references_list_append         (GSList         *msgid_list,
                                         const gchar    *str);
 GSList *newsgroup_list_append          (GSList         *group_list,
                                         const gchar    *str);
+
+GList *add_history                     (GList          *list,
+                                        const gchar    *str);
+
 void remove_return                     (gchar          *str);
 void remove_space                      (gchar          *str);
 void unfold_line                       (gchar          *str);
@@ -242,13 +263,16 @@ void subst_char                           (gchar          *str,
 gboolean is_header_line                        (const gchar    *str);
 gboolean is_ascii_str                  (const guchar   *str);
 gint get_quote_level                   (const gchar    *str);
-GList *uri_list_extract_filenames      (const gchar    *uri_list);
 gchar *strstr_with_skip_quote          (const gchar    *haystack,
                                         const gchar    *needle);
 gchar **strsplit_with_quote            (const gchar    *str,
                                         const gchar    *delim,
                                         gint            max_tokens);
 
+GList *uri_list_extract_filenames      (const gchar    *uri_list);
+void decode_uri                                (gchar          *decoded_uri,
+                                        const gchar    *encoded_uri);
+
 /* return static strings */
 gchar *get_home_dir            (void);
 gchar *get_rc_dir              (void);
@@ -256,6 +280,7 @@ gchar *get_news_cache_dir   (void);
 gchar *get_imap_cache_dir      (void);
 gchar *get_mbox_cache_dir      (void);
 gchar *get_mime_tmp_dir                (void);
+gchar *get_template_dir                (void);
 gchar *get_tmp_file            (void);
 gchar *get_domain_name         (void);
 
@@ -291,7 +316,7 @@ gint execute_command_line   (const gchar    *cmdline,
                                 gboolean        async);
 
 /* open URI with external browser */
-gint open_uri                  (const gchar *uri, const gchar *cmdline);
+gint open_uri(const gchar *uri, const gchar *cmdline);
 
 /* time functions */
 time_t remote_tzoffset_sec     (const gchar    *zone);
@@ -311,9 +336,11 @@ void log_warning   (const gchar *format, ...) G_GNUC_PRINTF(1, 2);
 void log_error         (const gchar *format, ...) G_GNUC_PRINTF(1, 2);
 
 /* subject threading */
-void * subject_table_lookup(GHashTable *subject_table, gchar * subject)
+void * subject_table_lookup(GHashTable *subject_table, gchar * subject);
 void subject_table_insert(GHashTable *subject_table, gchar * subject,
                          void * data);
 void subject_table_remove(GHashTable *subject_table, gchar * subject);
+gboolean subject_is_reply(const gchar *subject);
+
 
 #endif /* __UTILS_H__ */