util.h

Go to the documentation of this file.
00001 
00028 #ifndef _PURPLE_UTIL_H_
00029 #define _PURPLE_UTIL_H_
00030 
00031 #include <stdio.h>
00032 
00033 #include "account.h"
00034 #include "xmlnode.h"
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040 typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
00041 
00042 typedef struct _PurpleMenuAction
00043 {
00044     char *label;
00045     PurpleCallback callback;
00046     gpointer data;
00047     GList *children;
00048 } PurpleMenuAction;
00049 
00050 typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len);
00051 
00058 typedef struct _PurpleKeyValuePair
00059 {
00060     gchar *key;
00061     void *value;
00062 
00063 } PurpleKeyValuePair;
00064 
00076 PurpleMenuAction *purple_menu_action_new(const char *label, PurpleCallback callback,
00077                                      gpointer data, GList *children);
00078 
00084 void purple_menu_action_free(PurpleMenuAction *act);
00085 
00086 /**************************************************************************/
00088 /**************************************************************************/
00102 gchar *purple_base16_encode(const guchar *data, gsize len);
00103 
00119 guchar *purple_base16_decode(const char *str, gsize *ret_len);
00120 
00123 /**************************************************************************/
00125 /**************************************************************************/
00139 gchar *purple_base64_encode(const guchar *data, gsize len);
00140 
00156 guchar *purple_base64_decode(const char *str, gsize *ret_len);
00157 
00160 /**************************************************************************/
00162 /**************************************************************************/
00177 guchar *purple_quotedp_decode(const char *str, gsize *ret_len);
00178 
00181 /**************************************************************************/
00183 /**************************************************************************/
00205 char *purple_mime_decode_field(const char *str);
00206 
00210 /**************************************************************************/
00212 /**************************************************************************/
00241 const char *purple_utf8_strftime(const char *format, const struct tm *tm);
00242 
00253 const char *purple_date_format_short(const struct tm *tm);
00254 
00265 const char *purple_date_format_long(const struct tm *tm);
00266 
00277 const char *purple_date_format_full(const struct tm *tm);
00278 
00289 const char *purple_time_format(const struct tm *tm);
00290 
00303 time_t purple_time_build(int year, int month, int day, int hour,
00304                        int min, int sec);
00305 
00308 #define PURPLE_NO_TZ_OFF -500000
00309 
00330 time_t purple_str_to_time(const char *timestamp, gboolean utc,
00331                         struct tm *tm, long *tz_off, const char **rest);
00332 
00336 /**************************************************************************/
00338 /**************************************************************************/
00356 gboolean purple_markup_find_tag(const char *needle, const char *haystack,
00357                               const char **start, const char **end,
00358                               GData **attributes);
00359 
00383 gboolean purple_markup_extract_info_field(const char *str, int len, PurpleNotifyUserInfo *user_info,
00384                                         const char *start_token, int skip,
00385                                         const char *end_token, char check_value,
00386                                         const char *no_value_token,
00387                                         const char *display_name, gboolean is_link,
00388                                         const char *link_prefix,
00389                     PurpleInfoFieldFormatCallback format_cb);
00390 
00398 void purple_markup_html_to_xhtml(const char *html, char **dest_xhtml,
00399                                char **dest_plain);
00400 
00408 char *purple_markup_strip_html(const char *str);
00409 
00417 char *purple_markup_linkify(const char *str);
00418 
00429 char *purple_unescape_html(const char *html);
00430 
00452 char *purple_markup_slice(const char *str, guint x, guint y);
00453 
00463 char *purple_markup_get_tag_name(const char *tag);
00464 
00481 const char * purple_markup_unescape_entity(const char *text, int *length);
00482 
00499 char * purple_markup_get_css_property(const gchar *style, const gchar *opt);
00500 
00501 
00505 /**************************************************************************/
00507 /**************************************************************************/
00517 const gchar *purple_home_dir(void);
00518 
00527 const char *purple_user_dir(void);
00528 
00533 void purple_util_set_user_dir(const char *dir);
00534 
00545 int purple_build_dir(const char *path, int mode);
00546 
00562 gboolean purple_util_write_data_to_file(const char *filename, const char *data,
00563                                       size_t size);
00564 
00579 xmlnode *purple_util_read_xml_from_file(const char *filename,
00580                                       const char *description);
00581 
00598 FILE *purple_mkstemp(char **path, gboolean binary);
00599 
00608 const char *
00609 purple_util_get_image_extension(gconstpointer data, size_t len);
00610 
00614 /**************************************************************************/
00616 /**************************************************************************/
00626 gboolean purple_program_is_valid(const char *program);
00627 
00633 gboolean purple_running_gnome(void);
00634 
00640 gboolean purple_running_kde(void);
00641 
00647 gboolean purple_running_osx(void);
00648 
00656 char *purple_fd_get_ip(int fd);
00657 
00661 /**************************************************************************/
00663 /**************************************************************************/
00683 const char *purple_normalize(const PurpleAccount *account, const char *str);
00684 
00697 const char *purple_normalize_nocase(const PurpleAccount *account, const char *str);
00698 
00708 gboolean purple_str_has_prefix(const char *s, const char *p);
00709 
00719 gboolean purple_str_has_suffix(const char *s, const char *x);
00720 
00729 gchar *purple_strdup_withhtml(const gchar *src);
00730 
00738 char *purple_str_add_cr(const char *str);
00739 
00751 void purple_str_strip_char(char *str, char thechar);
00752 
00763 void purple_util_chrreplace(char *string, char delimiter,
00764                           char replacement);
00765 
00778 gchar *purple_strreplace(const char *string, const char *delimiter,
00779                        const char *replacement);
00780 
00781 
00792 char *purple_utf8_ncr_encode(const char *in);
00793 
00794 
00805 char *purple_utf8_ncr_decode(const char *in);
00806 
00807 
00820 gchar *purple_strcasereplace(const char *string, const char *delimiter,
00821                            const char *replacement);
00822 
00832 const char *purple_strcasestr(const char *haystack, const char *needle);
00833 
00842 char *purple_str_size_to_units(size_t size);
00843 
00852 char *purple_str_seconds_to_string(guint sec);
00853 
00867 char *purple_str_binary_to_ascii(const unsigned char *binary, guint len);
00871 /**************************************************************************/
00873 /**************************************************************************/
00876 void purple_got_protocol_handler_uri(const char *uri);
00877 
00890 gboolean purple_url_parse(const char *url, char **ret_host, int *ret_port,
00891                         char **ret_path, char **ret_user, char **ret_passwd);
00892 
00908 typedef void (*PurpleUtilFetchUrlCallback)(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
00909 
00921 #define purple_util_fetch_url(url, full, user_agent, http11, cb, data) \
00922     purple_util_fetch_url_request(url, full, user_agent, http11, NULL, \
00923         FALSE, cb, data);
00924 
00940 PurpleUtilFetchUrlData *purple_util_fetch_url_request(const gchar *url,
00941         gboolean full, const gchar *user_agent, gboolean http11,
00942         const gchar *request, gboolean include_headers,
00943         PurpleUtilFetchUrlCallback callback, gpointer data);
00944 
00951 void purple_util_fetch_url_cancel(PurpleUtilFetchUrlData *url_data);
00952 
00962 const char *purple_url_decode(const char *str);
00963 
00973 const char *purple_url_encode(const char *str);
00974 
00982 gboolean purple_email_is_valid(const char *address);
00983 
00993 GList *purple_uri_list_extract_uris(const gchar *uri_list);
00994 
01007 GList *purple_uri_list_extract_filenames(const gchar *uri_list);
01008 
01011 /**************************************************************************
01012  * UTF8 String Functions
01013  **************************************************************************/
01025 gchar *purple_utf8_try_convert(const char *str);
01026 
01036 gchar *purple_utf8_salvage(const char *str);
01037 
01051 int purple_utf8_strcasecmp(const char *a, const char *b);
01052 
01063 gboolean purple_utf8_has_word(const char *haystack, const char *needle);
01064 
01073 void purple_print_utf8_to_console(FILE *filestream, char *message);
01074 
01083 gboolean purple_message_meify(char *message, size_t len);
01084 
01093 char *purple_text_strip_mnemonic(const char *in);
01094 
01106 #define purple_add_eight(x) ((x)+8)
01107 
01117 const char *purple_unescape_filename(const char *str);
01118 
01126 const char *purple_escape_filename(const char *str);
01127 
01132 const char *_purple_oscar_convert(const char *act, const char *protocol);
01133 
01139 void purple_restore_default_signal_handlers(void);
01140 
01141 #ifdef __cplusplus
01142 }
01143 #endif
01144 
01145 /* to address incompatibility with cp932. */
01146 void botch_ucs(gchar *ucs, gssize len);
01147 void sanitize_ucs(gchar *ucs, gssize len);
01148 guchar *botch_utf(const void *utf, size_t len, size_t *newlen);
01149 guchar *sanitize_utf(unsigned char *msg, size_t len, size_t *newlen);
01150 
01151 #endif /* _PURPLE_UTIL_H_ */