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 #include "notify.h"
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00041 typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
00042 
00043 typedef struct _PurpleMenuAction
00044 {
00045     char *label;
00046     PurpleCallback callback;
00047     gpointer data;
00048     GList *children;
00049 } PurpleMenuAction;
00050 
00051 typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len);
00052 
00059 typedef struct _PurpleKeyValuePair
00060 {
00061     gchar *key;
00062     void *value;
00063 
00064 } PurpleKeyValuePair;
00065 
00077 PurpleMenuAction *purple_menu_action_new(const char *label, PurpleCallback callback,
00078                                      gpointer data, GList *children);
00079 
00085 void purple_menu_action_free(PurpleMenuAction *act);
00086 
00087 /**************************************************************************/
00089 /**************************************************************************/
00103 gchar *purple_base16_encode(const guchar *data, gsize len);
00104 
00120 guchar *purple_base16_decode(const char *str, gsize *ret_len);
00121 
00134 gchar *purple_base16_encode_chunked(const guchar *data, gsize len);
00135 
00136 
00139 /**************************************************************************/
00141 /**************************************************************************/
00155 gchar *purple_base64_encode(const guchar *data, gsize len);
00156 
00172 guchar *purple_base64_decode(const char *str, gsize *ret_len);
00173 
00176 /**************************************************************************/
00178 /**************************************************************************/
00193 guchar *purple_quotedp_decode(const char *str, gsize *ret_len);
00194 
00197 /**************************************************************************/
00199 /**************************************************************************/
00221 char *purple_mime_decode_field(const char *str);
00222 
00226 /**************************************************************************/
00228 /**************************************************************************/
00257 const char *purple_utf8_strftime(const char *format, const struct tm *tm);
00258 
00267 const char *purple_get_tzoff_str(const struct tm *tm, gboolean iso);
00268 
00279 const char *purple_date_format_short(const struct tm *tm);
00280 
00291 const char *purple_date_format_long(const struct tm *tm);
00292 
00303 const char *purple_date_format_full(const struct tm *tm);
00304 
00315 const char *purple_time_format(const struct tm *tm);
00316 
00329 time_t purple_time_build(int year, int month, int day, int hour,
00330                        int min, int sec);
00331 
00334 #define PURPLE_NO_TZ_OFF -500000
00335 
00356 time_t purple_str_to_time(const char *timestamp, gboolean utc,
00357                         struct tm *tm, long *tz_off, const char **rest);
00358 
00362 /**************************************************************************/
00364 /**************************************************************************/
00382 gboolean purple_markup_find_tag(const char *needle, const char *haystack,
00383                               const char **start, const char **end,
00384                               GData **attributes);
00385 
00409 gboolean purple_markup_extract_info_field(const char *str, int len, PurpleNotifyUserInfo *user_info,
00410                                         const char *start_token, int skip,
00411                                         const char *end_token, char check_value,
00412                                         const char *no_value_token,
00413                                         const char *display_name, gboolean is_link,
00414                                         const char *link_prefix,
00415                     PurpleInfoFieldFormatCallback format_cb);
00416 
00424 void purple_markup_html_to_xhtml(const char *html, char **dest_xhtml,
00425                                char **dest_plain);
00426 
00434 char *purple_markup_strip_html(const char *str);
00435 
00443 char *purple_markup_linkify(const char *str);
00444 
00455 char *purple_unescape_html(const char *html);
00456 
00478 char *purple_markup_slice(const char *str, guint x, guint y);
00479 
00489 char *purple_markup_get_tag_name(const char *tag);
00490 
00507 const char * purple_markup_unescape_entity(const char *text, int *length);
00508 
00525 char * purple_markup_get_css_property(const gchar *style, const gchar *opt);
00526 
00527 
00531 /**************************************************************************/
00533 /**************************************************************************/
00543 const gchar *purple_home_dir(void);
00544 
00553 const char *purple_user_dir(void);
00554 
00559 void purple_util_set_user_dir(const char *dir);
00560 
00571 int purple_build_dir(const char *path, int mode);
00572 
00588 gboolean purple_util_write_data_to_file(const char *filename, const char *data,
00589                                       size_t size);
00590 
00605 xmlnode *purple_util_read_xml_from_file(const char *filename,
00606                                       const char *description);
00607 
00624 FILE *purple_mkstemp(char **path, gboolean binary);
00625 
00634 const char *
00635 purple_util_get_image_extension(gconstpointer data, size_t len);
00636 
00641 char *purple_util_get_image_filename(gconstpointer image_data, size_t image_len);
00642 
00646 /**************************************************************************/
00648 /**************************************************************************/
00658 gboolean purple_program_is_valid(const char *program);
00659 
00665 gboolean purple_running_gnome(void);
00666 
00672 gboolean purple_running_kde(void);
00673 
00679 gboolean purple_running_osx(void);
00680 
00688 char *purple_fd_get_ip(int fd);
00689 
00693 /**************************************************************************/
00695 /**************************************************************************/
00715 const char *purple_normalize(const PurpleAccount *account, const char *str);
00716 
00729 const char *purple_normalize_nocase(const PurpleAccount *account, const char *str);
00730 
00740 gboolean purple_str_has_prefix(const char *s, const char *p);
00741 
00751 gboolean purple_str_has_suffix(const char *s, const char *x);
00752 
00761 gchar *purple_strdup_withhtml(const gchar *src);
00762 
00770 char *purple_str_add_cr(const char *str);
00771 
00783 void purple_str_strip_char(char *str, char thechar);
00784 
00795 void purple_util_chrreplace(char *string, char delimiter,
00796                           char replacement);
00797 
00810 gchar *purple_strreplace(const char *string, const char *delimiter,
00811                        const char *replacement);
00812 
00813 
00824 char *purple_utf8_ncr_encode(const char *in);
00825 
00826 
00837 char *purple_utf8_ncr_decode(const char *in);
00838 
00839 
00852 gchar *purple_strcasereplace(const char *string, const char *delimiter,
00853                            const char *replacement);
00854 
00864 const char *purple_strcasestr(const char *haystack, const char *needle);
00865 
00874 char *purple_str_size_to_units(size_t size);
00875 
00884 char *purple_str_seconds_to_string(guint sec);
00885 
00899 char *purple_str_binary_to_ascii(const unsigned char *binary, guint len);
00903 /**************************************************************************/
00905 /**************************************************************************/
00908 void purple_got_protocol_handler_uri(const char *uri);
00909 
00922 gboolean purple_url_parse(const char *url, char **ret_host, int *ret_port,
00923                         char **ret_path, char **ret_user, char **ret_passwd);
00924 
00940 typedef void (*PurpleUtilFetchUrlCallback)(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
00941 
00953 #define purple_util_fetch_url(url, full, user_agent, http11, cb, data) \
00954     purple_util_fetch_url_request(url, full, user_agent, http11, NULL, \
00955         FALSE, cb, data);
00956 
00972 PurpleUtilFetchUrlData *purple_util_fetch_url_request(const gchar *url,
00973         gboolean full, const gchar *user_agent, gboolean http11,
00974         const gchar *request, gboolean include_headers,
00975         PurpleUtilFetchUrlCallback callback, gpointer data);
00976 
00983 void purple_util_fetch_url_cancel(PurpleUtilFetchUrlData *url_data);
00984 
00994 const char *purple_url_decode(const char *str);
00995 
01005 const char *purple_url_encode(const char *str);
01006 
01014 gboolean purple_email_is_valid(const char *address);
01015 
01025 GList *purple_uri_list_extract_uris(const gchar *uri_list);
01026 
01039 GList *purple_uri_list_extract_filenames(const gchar *uri_list);
01040 
01043 /**************************************************************************
01044  * UTF8 String Functions
01045  **************************************************************************/
01057 gchar *purple_utf8_try_convert(const char *str);
01058 
01068 gchar *purple_utf8_salvage(const char *str);
01069 
01083 int purple_utf8_strcasecmp(const char *a, const char *b);
01084 
01095 gboolean purple_utf8_has_word(const char *haystack, const char *needle);
01096 
01105 void purple_print_utf8_to_console(FILE *filestream, char *message);
01106 
01116 gboolean purple_message_meify(char *message, size_t len);
01117 
01126 char *purple_text_strip_mnemonic(const char *in);
01127 
01139 #define purple_add_eight(x) ((x)+8)
01140 
01150 const char *purple_unescape_filename(const char *str);
01151 
01159 const char *purple_escape_filename(const char *str);
01160 
01165 const char *_purple_oscar_convert(const char *act, const char *protocol);
01166 
01172 void purple_restore_default_signal_handlers(void);
01173 
01174 #ifdef __cplusplus
01175 }
01176 #endif
01177 
01178 #endif /* _PURPLE_UTIL_H_ */