00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _PURPLE_UTIL_H_
00030 #define _PURPLE_UTIL_H_
00031
00032 #include <stdio.h>
00033
00038 typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
00040 typedef struct _PurpleMenuAction PurpleMenuAction;
00042 typedef struct _PurpleKeyValuePair PurpleKeyValuePair;
00043
00044 #include "account.h"
00045 #include "xmlnode.h"
00046 #include "notify.h"
00047
00048
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052
00053 struct _PurpleMenuAction
00054 {
00055 char *label;
00056 PurpleCallback callback;
00057 gpointer data;
00058 GList *children;
00059 };
00060
00061 typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len);
00062
00069 struct _PurpleKeyValuePair
00070 {
00071 gchar *key;
00072 void *value;
00073
00074 };
00075
00087 PurpleMenuAction *purple_menu_action_new(const char *label, PurpleCallback callback,
00088 gpointer data, GList *children);
00089
00095 void purple_menu_action_free(PurpleMenuAction *act);
00096
00105 void purple_util_set_current_song(const char *title, const char *artist,
00106 const char *album);
00107
00119 char * purple_util_format_song_info(const char *title, const char *artist,
00120 const char *album, gpointer unused);
00121
00122
00124
00132 void purple_util_init(void);
00133
00139 void purple_util_uninit(void);
00140
00143
00145
00159 gchar *purple_base16_encode(const guchar *data, gsize len);
00160
00176 guchar *purple_base16_decode(const char *str, gsize *ret_len);
00177
00190 gchar *purple_base16_encode_chunked(const guchar *data, gsize len);
00191
00192
00195
00197
00211 gchar *purple_base64_encode(const guchar *data, gsize len);
00212
00228 guchar *purple_base64_decode(const char *str, gsize *ret_len);
00229
00232
00234
00249 guchar *purple_quotedp_decode(const char *str, gsize *ret_len);
00250
00253
00255
00277 char *purple_mime_decode_field(const char *str);
00278
00282
00284
00313 const char *purple_utf8_strftime(const char *format, const struct tm *tm);
00314
00323 const char *purple_get_tzoff_str(const struct tm *tm, gboolean iso);
00324
00335 const char *purple_date_format_short(const struct tm *tm);
00336
00347 const char *purple_date_format_long(const struct tm *tm);
00348
00359 const char *purple_date_format_full(const struct tm *tm);
00360
00371 const char *purple_time_format(const struct tm *tm);
00372
00385 time_t purple_time_build(int year, int month, int day, int hour,
00386 int min, int sec);
00387
00390 #define PURPLE_NO_TZ_OFF -500000
00391
00412 time_t purple_str_to_time(const char *timestamp, gboolean utc,
00413 struct tm *tm, long *tz_off, const char **rest);
00414
00418
00420
00434 gchar *purple_markup_escape_text(const gchar *text, gssize length);
00435
00451 gboolean purple_markup_find_tag(const char *needle, const char *haystack,
00452 const char **start, const char **end,
00453 GData **attributes);
00454
00478 gboolean purple_markup_extract_info_field(const char *str, int len, PurpleNotifyUserInfo *user_info,
00479 const char *start_token, int skip,
00480 const char *end_token, char check_value,
00481 const char *no_value_token,
00482 const char *display_name, gboolean is_link,
00483 const char *link_prefix,
00484 PurpleInfoFieldFormatCallback format_cb);
00485
00493 void purple_markup_html_to_xhtml(const char *html, char **dest_xhtml,
00494 char **dest_plain);
00495
00504 char *purple_markup_strip_html(const char *str);
00505
00515 char *purple_markup_linkify(const char *str);
00516
00531 char *purple_unescape_html(const char *html);
00532
00554 char *purple_markup_slice(const char *str, guint x, guint y);
00555
00565 char *purple_markup_get_tag_name(const char *tag);
00566
00583 const char * purple_markup_unescape_entity(const char *text, int *length);
00584
00601 char * purple_markup_get_css_property(const gchar *style, const gchar *opt);
00602
00612 gboolean purple_markup_is_rtl(const char *html);
00613
00617
00619
00629 const gchar *purple_home_dir(void);
00630
00639 const char *purple_user_dir(void);
00640
00645 void purple_util_set_user_dir(const char *dir);
00646
00657 int purple_build_dir(const char *path, int mode);
00658
00674 gboolean purple_util_write_data_to_file(const char *filename, const char *data,
00675 gssize size);
00676
00694 gboolean
00695 purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, gssize size);
00696
00711 xmlnode *purple_util_read_xml_from_file(const char *filename,
00712 const char *description);
00713
00730 FILE *purple_mkstemp(char **path, gboolean binary);
00731
00740 const char *
00741 purple_util_get_image_extension(gconstpointer data, size_t len);
00742
00746 char *purple_util_get_image_checksum(gconstpointer image_data, size_t image_len);
00747
00755 char *purple_util_get_image_filename(gconstpointer image_data, size_t image_len);
00756
00760
00762
00772 gboolean purple_program_is_valid(const char *program);
00773
00779 gboolean purple_running_gnome(void);
00780
00786 gboolean purple_running_kde(void);
00787
00793 gboolean purple_running_osx(void);
00794
00802 char *purple_fd_get_ip(int fd);
00803
00807
00809
00825 gboolean purple_strequal(const gchar *left, const gchar *right);
00826
00844 const char *purple_normalize(const PurpleAccount *account, const char *str);
00845
00858 const char *purple_normalize_nocase(const PurpleAccount *account, const char *str);
00859
00869 gboolean purple_str_has_prefix(const char *s, const char *p);
00870
00880 gboolean purple_str_has_suffix(const char *s, const char *x);
00881
00890 gchar *purple_strdup_withhtml(const gchar *src);
00891
00899 char *purple_str_add_cr(const char *str);
00900
00912 void purple_str_strip_char(char *str, char thechar);
00913
00924 void purple_util_chrreplace(char *string, char delimiter,
00925 char replacement);
00926
00939 gchar *purple_strreplace(const char *string, const char *delimiter,
00940 const char *replacement);
00941
00942
00953 char *purple_utf8_ncr_encode(const char *in);
00954
00955
00966 char *purple_utf8_ncr_decode(const char *in);
00967
00968
00981 gchar *purple_strcasereplace(const char *string, const char *delimiter,
00982 const char *replacement);
00983
00993 const char *purple_strcasestr(const char *haystack, const char *needle);
00994
01003 char *purple_str_size_to_units(size_t size);
01004
01013 char *purple_str_seconds_to_string(guint sec);
01014
01028 char *purple_str_binary_to_ascii(const unsigned char *binary, guint len);
01032
01034
01037 void purple_got_protocol_handler_uri(const char *uri);
01038
01051 gboolean purple_url_parse(const char *url, char **ret_host, int *ret_port,
01052 char **ret_path, char **ret_user, char **ret_passwd);
01053
01069 typedef void (*PurpleUtilFetchUrlCallback)(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
01070
01082 #define purple_util_fetch_url(url, full, user_agent, http11, cb, data) \
01083 purple_util_fetch_url_request(url, full, user_agent, http11, NULL, \
01084 FALSE, cb, data);
01085
01099 #define purple_util_fetch_url_len(url, full, user_agent, http11, max_len, cb, data) \
01100 purple_util_fetch_url_request_len(url, full, user_agent, http11, NULL, \
01101 FALSE, max_len, cb, data);
01102
01118 PurpleUtilFetchUrlData *purple_util_fetch_url_request(const gchar *url,
01119 gboolean full, const gchar *user_agent, gboolean http11,
01120 const gchar *request, gboolean include_headers,
01121 PurpleUtilFetchUrlCallback callback, gpointer data);
01122
01140 PurpleUtilFetchUrlData *purple_util_fetch_url_request_len(const gchar *url,
01141 gboolean full, const gchar *user_agent, gboolean http11,
01142 const gchar *request, gboolean include_headers, gssize max_len,
01143 PurpleUtilFetchUrlCallback callback, gpointer data);
01144
01163 PurpleUtilFetchUrlData *purple_util_fetch_url_request_len_with_account(
01164 PurpleAccount *account, const gchar *url,
01165 gboolean full, const gchar *user_agent, gboolean http11,
01166 const gchar *request, gboolean include_headers, gssize max_len,
01167 PurpleUtilFetchUrlCallback callback, gpointer data);
01168
01175 void purple_util_fetch_url_cancel(PurpleUtilFetchUrlData *url_data);
01176
01186 const char *purple_url_decode(const char *str);
01187
01197 const char *purple_url_encode(const char *str);
01198
01206 gboolean purple_email_is_valid(const char *address);
01207
01218 gboolean purple_ip_address_is_valid(const char *ip);
01219
01228 gboolean purple_ipv4_address_is_valid(const char *ip);
01229
01238 gboolean purple_ipv6_address_is_valid(const char *ip);
01239
01249 GList *purple_uri_list_extract_uris(const gchar *uri_list);
01250
01263 GList *purple_uri_list_extract_filenames(const gchar *uri_list);
01264
01267
01268
01269
01281 gchar *purple_utf8_try_convert(const char *str);
01282
01292 gchar *purple_utf8_salvage(const char *str);
01293
01306 gchar *purple_utf8_strip_unprintables(const gchar *str);
01307
01318 G_CONST_RETURN gchar *purple_gai_strerror(gint errnum);
01319
01333 int purple_utf8_strcasecmp(const char *a, const char *b);
01334
01345 gboolean purple_utf8_has_word(const char *haystack, const char *needle);
01346
01355 void purple_print_utf8_to_console(FILE *filestream, char *message);
01356
01366 gboolean purple_message_meify(char *message, gssize len);
01367
01376 char *purple_text_strip_mnemonic(const char *in);
01377
01389 #define purple_add_eight(x) ((x)+8)
01390
01400 const char *purple_unescape_filename(const char *str);
01401
01409 const char *purple_escape_filename(const char *str);
01410
01415 const char *_purple_oscar_convert(const char *act, const char *protocol);
01416
01422 void purple_restore_default_signal_handlers(void);
01423
01430 const gchar *purple_get_host_name(void);
01431
01432 #ifdef __cplusplus
01433 }
01434 #endif
01435
01436 #endif