* src/imap.c
[claws.git] / src / utils.h
index b3f3cc9ecc9640e13225c0f6c06e3463c1ff9fd9..0383a780aaeab616b42bfeceb84627d1055f5ced 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2001 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2002 Hiroyuki Yamamoto
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
        ptr = __tmp; \
 }
 
+#define Xstrcat_a(ptr, str1, str2, iffail) \
+{ \
+       gchar *__tmp; \
+       gint len1, len2; \
+ \
+       len1 = strlen(str1); \
+       len2 = strlen(str2); \
+       if ((__tmp = alloca(len1 + len2 + 1)) == NULL) { \
+               g_warning("can't allocate memory\n"); \
+               iffail; \
+       } else { \
+               memcpy(__tmp, str1, len1); \
+               memcpy(__tmp + len1, str2, len2 + 1); \
+       } \
+ \
+       ptr = __tmp; \
+}
+
 #define FILE_OP_ERROR(file, func) \
 { \
        fprintf(stderr, "%s: ", file); \
@@ -150,6 +168,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,28 +246,59 @@ 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);
 void subst_char                                (gchar          *str,
                                         gchar           orig,
                                         gchar           subst);
+void subst_chars                       (gchar          *str,
+                                        gchar          *orig,
+                                        gchar           subst);
+void subst_for_filename                        (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);
+gint get_quote_level                   (const gchar    *str,
+                                        const gchar    *quote_chars);
 gchar *strstr_with_skip_quote          (const gchar    *haystack,
                                         const gchar    *needle);
+gchar *strchr_parenthesis_close                (const gchar    *str,
+                                        gchar           op,
+                                        gchar           cl);
+
+gchar **strsplit_parenthesis           (const gchar    *str,
+                                        gchar           op,
+                                        gchar           cl,
+                                        gint            max_tokens);
 gchar **strsplit_with_quote            (const gchar    *str,
                                         const gchar    *delim,
                                         gint            max_tokens);
 
+gchar *get_abbrev_newsgroup_name       (const gchar    *group);
+gchar *trim_string                     (const gchar    *str,
+                                        gint            len);
+
+GList *uri_list_extract_filenames      (const gchar    *uri_list);
+void decode_uri                                (gchar          *decoded_uri,
+                                        const gchar    *encoded_uri);
+gint scan_mailto_url                   (const gchar    *mailto,
+                                        gchar         **to,
+                                        gchar         **cc,
+                                        gchar         **bcc,
+                                        gchar         **subject,
+                                        gchar         **body);
+
 /* return static strings */
 gchar *get_home_dir            (void);
 gchar *get_rc_dir              (void);
@@ -256,33 +306,61 @@ 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_header_cache_dir     (void);
+gchar *get_tmp_dir             (void);
 gchar *get_tmp_file            (void);
 gchar *get_domain_name         (void);
 
 /* file / directory handling */
 off_t get_file_size            (const gchar    *file);
+off_t get_file_size_as_crlf    (const gchar    *file);
 off_t get_left_file_size       (FILE           *fp);
+
 gboolean file_exist            (const gchar    *file,
                                 gboolean        allow_fifo);
 gboolean is_dir_exist          (const gchar    *dir);
+gboolean is_file_entry_exist   (const gchar    *file);
+
+#define is_file_exist(file)            file_exist(file, FALSE)
+#define is_file_or_fifo_exist(file)    file_exist(file, TRUE)
+
 gint change_dir                        (const gchar    *dir);
+gint make_dir                  (const gchar    *dir);
 gint make_dir_hier             (const gchar    *dir);
 gint remove_all_files          (const gchar    *dir);
 gint remove_numbered_files     (const gchar    *dir,
                                 guint           first,
                                 guint           last);
+gint remove_numbered_files_not_in_list(const gchar *dir,
+                                      GSList *numberlist);
 gint remove_all_numbered_files (const gchar    *dir);
+gint remove_expired_files      (const gchar    *dir,
+                                guint           hours);
 gint remove_dir_recursive      (const gchar    *dir);
+gint append_file               (const gchar    *src,
+                                const gchar    *dest,
+                                gboolean        keep_backup);
 gint copy_file                 (const gchar    *src,
-                                const gchar    *dest);
+                                const gchar    *dest,
+                                gboolean        keep_backup);
 gint move_file                 (const gchar    *src,
+                                const gchar    *dest,
+                                gboolean        overwrite);
+gint copy_file_part            (FILE           *fp,
+                                off_t           offset,
+                                size_t          length,
+                                const gchar    *dest);
+gint canonicalize_file         (const gchar    *src,
                                 const gchar    *dest);
+gint canonicalize_file_replace (const gchar    *file);
 gint change_file_mode_rw       (FILE           *fp,
                                 const gchar    *file);
 FILE *my_tmpfile               (void);
-
-#define is_file_exist(file)            file_exist(file, FALSE)
-#define is_file_or_fifo_exist(file)    file_exist(file, TRUE)
+FILE *str_open_as_stream       (const gchar    *str);
+gint str_write_to_file         (const gchar    *str,
+                                const gchar    *file);
+gchar *file_read_to_str                (const gchar    *file);
 
 /* process execution */
 gint execute_async             (gchar *const    argv[]);
@@ -310,4 +388,18 @@ void log_message   (const gchar *format, ...) G_GNUC_PRINTF(1, 2);
 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_insert(GHashTable *subject_table, gchar * subject,
+                         void * data);
+void subject_table_remove(GHashTable *subject_table, gchar * subject);
+gboolean subject_is_reply(const gchar *subject);
+
+/* quoting recognition */
+const gchar * line_has_quote_char      (const gchar *str,
+                                        const gchar *quote_chars);
+const gchar * line_has_quote_char_last (const gchar *str,
+                                        const gchar *quote_chars);
+
+
 #endif /* __UTILS_H__ */