00001
00028 #ifndef _GAIM_UTIL_H_
00029 #define _GAIM_UTIL_H_
00030
00031 #include <stdio.h>
00032
00033 #include "account.h"
00034
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif
00038
00039
00041
00054 unsigned char *gaim_base16_encode(const unsigned char *str, int len);
00055
00066 int gaim_base16_decode(const char *str, unsigned char **ret_str);
00067
00071
00073
00086 unsigned char *gaim_base64_encode(const unsigned char *buf, size_t len);
00087
00097 void gaim_base64_decode(const char *str, char **ret_str, int *ret_len);
00098
00101
00103
00113 void gaim_quotedp_decode (const char *str, char **ret_str, int *ret_len);
00114
00117
00119
00137 char *gaim_mime_decode_field (const char *str);
00138
00142
00144
00157 const char *gaim_date(void);
00158
00169 const char *gaim_date_full(void);
00170
00183 time_t gaim_time_build(int year, int month, int day, int hour,
00184 int min, int sec);
00185
00194 time_t gaim_str_to_time(const char *timestamp, gboolean utc);
00195
00199
00201
00218 gboolean gaim_markup_find_tag(const char *needle, const char *haystack,
00219 const char **start, const char **end,
00220 GData **attributes);
00221
00244 gboolean gaim_markup_extract_info_field(const char *str, int len, GString *dest,
00245 const char *start_token, int skip,
00246 const char *end_token, char check_value,
00247 const char *no_value_token,
00248 const char *display_name, gboolean is_link,
00249 const char *link_prefix);
00250
00258 void gaim_markup_html_to_xhtml(const char *html, char **dest_xhtml,
00259 char **dest_plain);
00260
00268 char *gaim_markup_strip_html(const char *str);
00269
00277 char *gaim_markup_linkify(const char *str);
00278
00287 char *gaim_escape_html(const char *html);
00288
00299 char *gaim_unescape_html(const char *html);
00300
00322 char *gaim_markup_slice(const char *str, guint x, guint y);
00323
00333 char *gaim_markup_get_tag_name(const char *tag);
00334
00338
00340
00350 const gchar *gaim_home_dir(void);
00351
00359 char *gaim_user_dir(void);
00360
00365 void set_gaim_user_dir(const char *dir);
00366
00377 int gaim_build_dir(const char *path, int mode);
00378
00394 FILE *gaim_mkstemp(char **path);
00395
00403 gboolean gaim_program_is_valid(const char *program);
00404
00412 char *gaim_fd_get_ip(int fd);
00413
00417
00419
00435 const char *gaim_normalize(const GaimAccount *account, const char *str);
00436
00449 const char *gaim_normalize_nocase(const GaimAccount *account, const char *str);
00450
00460 gboolean gaim_str_has_prefix(const char *s, const char *p);
00461
00471 gboolean gaim_str_has_suffix(const char *s, const char *x);
00472
00483 gchar *gaim_str_sub_away_formatters(const char *str, const char *name);
00484
00493 gchar *gaim_strdup_withhtml(const gchar *src);
00494
00502 char *gaim_str_add_cr(const char *str);
00503
00509 void gaim_str_strip_cr(char *str);
00510
00523 gchar *gaim_strreplace(const char *string, const char *delimiter,
00524 const char *replacement);
00525
00536 char *gaim_utf8_ncr_decode(const char *in);
00537
00550 gchar *gaim_strcasereplace(const char *string, const char *delimiter,
00551 const char *replacement);
00552
00562 const char *gaim_strcasestr(const char *haystack, const char *needle);
00563
00572 char *gaim_str_size_to_units(size_t size);
00573
00582 char *gaim_str_seconds_to_string(guint sec);
00583
00597 char *gaim_str_binary_to_ascii(const unsigned char *binary, guint len);
00601
00603
00618 gboolean gaim_url_parse(const char *url, char **ret_host, int *ret_port,
00619 char **ret_path, char **ret_user, char **ret_passwd);
00620
00632 void gaim_url_fetch(const char *url, gboolean full,
00633 const char *user_agent, gboolean http11,
00634 void (*cb)(void *, const char *, size_t),
00635 void *data);
00645 const char *gaim_url_decode(const char *str);
00646
00656 const char *gaim_url_encode(const char *str);
00657
00665 gboolean gaim_email_is_valid(const char *address);
00666
00676 GList* gaim_uri_list_extract_uris (const gchar* uri_list);
00677
00688 GList* gaim_uri_list_extract_filenames (const gchar* uri_list);
00689
00692
00693
00694
00706 gchar *gaim_utf8_try_convert(const char *str);
00707
00717 gchar *gaim_utf8_salvage(const char *str);
00718
00729 int gaim_utf8_strcasecmp(const char *a, const char *b);
00730
00739 gboolean gaim_message_meify(char *message, size_t len);
00740
00749 char *gaim_text_strip_mnemonic(const char *in);
00750
00762 #define gaim_add_eight(x) ((x)+8)
00763
00773 const char *gaim_unescape_filename(const char *str);
00774
00782 const char *gaim_escape_filename(const char *str);
00783
00784 #ifdef __cplusplus
00785 }
00786 #endif
00787
00788
00789 void botch_ucs(gchar *ucs, gssize len);
00790 void sanitize_ucs(gchar *ucs, gssize len);
00791 guchar *botch_utf(const void *utf, size_t len, size_t *newlen);
00792 guchar *sanitize_utf(unsigned char *msg, size_t len, size_t *newlen);
00793 #endif