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
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