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
00034 #include "account.h"
00035 #include "xmlnode.h"
00036 #include "notify.h"
00037
00038 #ifdef __cplusplus
00039 extern "C" {
00040 #endif
00041
00042 typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
00043
00044 typedef struct _PurpleMenuAction
00045 {
00046 char *label;
00047 PurpleCallback callback;
00048 gpointer data;
00049 GList *children;
00050 } PurpleMenuAction;
00051
00052 typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len);
00053
00060 typedef struct _PurpleKeyValuePair
00061 {
00062 gchar *key;
00063 void *value;
00064
00065 } PurpleKeyValuePair;
00066
00078 PurpleMenuAction *purple_menu_action_new(const char *label, PurpleCallback callback,
00079 gpointer data, GList *children);
00080
00086 void purple_menu_action_free(PurpleMenuAction *act);
00087
00096 void purple_util_set_current_song(const char *title, const char *artist,
00097 const char *album);
00098
00110 char * purple_util_format_song_info(const char *title, const char *artist,
00111 const char *album, gpointer unused);
00112
00113
00115
00123 void purple_util_init(void);
00124
00130 void purple_util_uninit(void);
00131
00134
00136
00150 gchar *purple_base16_encode(const guchar *data, gsize len);
00151
00167 guchar *purple_base16_decode(const char *str, gsize *ret_len);
00168
00181 gchar *purple_base16_encode_chunked(const guchar *data, gsize len);
00182
00183
00186
00188
00202 gchar *purple_base64_encode(const guchar *data, gsize len);
00203
00219 guchar *purple_base64_decode(const char *str, gsize *ret_len);
00220
00223
00225
00240 guchar *purple_quotedp_decode(const char *str, gsize *ret_len);
00241
00244
00246
00268 char *purple_mime_decode_field(const char *str);
00269
00273
00275
00304 const char *purple_utf8_strftime(const char *format, const struct tm *tm);
00305
00314 const char *purple_get_tzoff_str(const struct tm *tm, gboolean iso);
00315
00326 const char *purple_date_format_short(const struct tm *tm);
00327
00338 const char *purple_date_format_long(const struct tm *tm);
00339
00350 const char *purple_date_format_full(const struct tm *tm);
00351
00362 const char *purple_time_format(const struct tm *tm);
00363
00376 time_t purple_time_build(int year, int month, int day, int hour,
00377 int min, int sec);
00378
00381 #define PURPLE_NO_TZ_OFF -500000
00382
00403 time_t purple_str_to_time(const char *timestamp, gboolean utc,
00404 struct tm *tm, long *tz_off, const char **rest);
00405
00409
00411
00429 gboolean purple_markup_find_tag(const char *needle, const char *haystack,
00430 const char **start, const char **end,
00431 GData **attributes);
00432
00456 gboolean purple_markup_extract_info_field(const char *str, int len, PurpleNotifyUserInfo *user_info,
00457 const char *start_token, int skip,
00458 const char *end_token, char check_value,
00459 const char *no_value_token,
00460 const char *display_name, gboolean is_link,
00461 const char *link_prefix,
00462 PurpleInfoFieldFormatCallback format_cb);
00463
00471 void purple_markup_html_to_xhtml(const char *html, char **dest_xhtml,
00472 char **dest_plain);
00473
00482 char *purple_markup_strip_html(const char *str);
00483
00493 char *purple_markup_linkify(const char *str);
00494
00506 char *purple_unescape_html(const char *html);
00507
00529 char *purple_markup_slice(const char *str, guint x, guint y);
00530
00540 char *purple_markup_get_tag_name(const char *tag);
00541
00558 const char * purple_markup_unescape_entity(const char *text, int *length);
00559
00576 char * purple_markup_get_css_property(const gchar *style, const gchar *opt);
00577
00578
00582
00584
00594 const gchar *purple_home_dir(void);
00595
00604 const char *purple_user_dir(void);
00605
00610 void purple_util_set_user_dir(const char *dir);
00611
00622 int purple_build_dir(const char *path, int mode);
00623
00639 gboolean purple_util_write_data_to_file(const char *filename, const char *data,
00640 gssize size);
00641
00659 gboolean
00660 purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, gssize size);
00661
00676 xmlnode *purple_util_read_xml_from_file(const char *filename,
00677 const char *description);
00678
00695 FILE *purple_mkstemp(char **path, gboolean binary);
00696
00705 const char *
00706 purple_util_get_image_extension(gconstpointer data, size_t len);
00707
00711 char *purple_util_get_image_checksum(gconstpointer image_data, size_t image_len);
00712
00720 char *purple_util_get_image_filename(gconstpointer image_data, size_t image_len);
00721
00725
00727
00737 gboolean purple_program_is_valid(const char *program);
00738
00744 gboolean purple_running_gnome(void);
00745
00751 gboolean purple_running_kde(void);
00752
00758 gboolean purple_running_osx(void);
00759
00767 char *purple_fd_get_ip(int fd);
00768
00772
00774
00790 gboolean purple_strequal(const gchar *left, const gchar *right);
00791
00809 const char *purple_normalize(const PurpleAccount *account, const char *str);
00810
00823 const char *purple_normalize_nocase(const PurpleAccount *account, const char *str);
00824
00834 gboolean purple_str_has_prefix(const char *s, const char *p);
00835
00845 gboolean purple_str_has_suffix(const char *s, const char *x);
00846
00855 gchar *purple_strdup_withhtml(const gchar *src);
00856
00864 char *purple_str_add_cr(const char *str);
00865
00877 void purple_str_strip_char(char *str, char thechar);
00878
00889 void purple_util_chrreplace(char *string, char delimiter,
00890 char replacement);
00891
00904 gchar *purple_strreplace(const char *string, const char *delimiter,
00905 const char *replacement);
00906
00907
00918 char *purple_utf8_ncr_encode(const char *in);
00919
00920
00931 char *purple_utf8_ncr_decode(const char *in);
00932
00933
00946 gchar *purple_strcasereplace(const char *string, const char *delimiter,
00947 const char *replacement);
00948
00958 const char *purple_strcasestr(const char *haystack, const char *needle);
00959
00968 char *purple_str_size_to_units(size_t size);
00969
00978 char *purple_str_seconds_to_string(guint sec);
00979
00993 char *purple_str_binary_to_ascii(const unsigned char *binary, guint len);
00997
00999
01002 void purple_got_protocol_handler_uri(const char *uri);
01003
01016 gboolean purple_url_parse(const char *url, char **ret_host, int *ret_port,
01017 char **ret_path, char **ret_user, char **ret_passwd);
01018
01034 typedef void (*PurpleUtilFetchUrlCallback)(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
01035
01047 #define purple_util_fetch_url(url, full, user_agent, http11, cb, data) \
01048 purple_util_fetch_url_request(url, full, user_agent, http11, NULL, \
01049 FALSE, cb, data);
01050
01064 #define purple_util_fetch_url_len(url, full, user_agent, http11, max_len, cb, data) \
01065 purple_util_fetch_url_request_len(url, full, user_agent, http11, NULL, \
01066 FALSE, max_len, cb, data);
01067
01083 PurpleUtilFetchUrlData *purple_util_fetch_url_request(const gchar *url,
01084 gboolean full, const gchar *user_agent, gboolean http11,
01085 const gchar *request, gboolean include_headers,
01086 PurpleUtilFetchUrlCallback callback, gpointer data);
01087
01105 PurpleUtilFetchUrlData *purple_util_fetch_url_request_len(const gchar *url,
01106 gboolean full, const gchar *user_agent, gboolean http11,
01107 const gchar *request, gboolean include_headers, gssize max_len,
01108 PurpleUtilFetchUrlCallback callback, gpointer data);
01109
01116 void purple_util_fetch_url_cancel(PurpleUtilFetchUrlData *url_data);
01117
01127 const char *purple_url_decode(const char *str);
01128
01138 const char *purple_url_encode(const char *str);
01139
01147 gboolean purple_email_is_valid(const char *address);
01148
01156 gboolean purple_ip_address_is_valid(const char *ip);
01157
01167 GList *purple_uri_list_extract_uris(const gchar *uri_list);
01168
01181 GList *purple_uri_list_extract_filenames(const gchar *uri_list);
01182
01185
01186
01187
01199 gchar *purple_utf8_try_convert(const char *str);
01200
01210 gchar *purple_utf8_salvage(const char *str);
01211
01222 G_CONST_RETURN gchar *purple_gai_strerror(gint errnum);
01223
01237 int purple_utf8_strcasecmp(const char *a, const char *b);
01238
01249 gboolean purple_utf8_has_word(const char *haystack, const char *needle);
01250
01259 void purple_print_utf8_to_console(FILE *filestream, char *message);
01260
01270 gboolean purple_message_meify(char *message, gssize len);
01271
01280 char *purple_text_strip_mnemonic(const char *in);
01281
01293 #define purple_add_eight(x) ((x)+8)
01294
01304 const char *purple_unescape_filename(const char *str);
01305
01313 const char *purple_escape_filename(const char *str);
01314
01319 const char *_purple_oscar_convert(const char *act, const char *protocol);
01320
01326 void purple_restore_default_signal_handlers(void);
01327
01334 const gchar *purple_get_host_name(void);
01335
01336 #ifdef __cplusplus
01337 }
01338 #endif
01339
01340 #endif