util.h

Go to the documentation of this file.
00001 
00006 /* purple
00007  *
00008  * Purple is the legal property of its developers, whose names are too numerous
00009  * to list here.  Please refer to the COPYRIGHT file distributed with this
00010  * source distribution.
00011  *
00012  * This program is free software; you can redistribute it and/or modify
00013  * it under the terms of the GNU General Public License as published by
00014  * the Free Software Foundation; either version 2 of the License, or
00015  * (at your option) any later version.
00016  *
00017  * This program is distributed in the hope that it will be useful,
00018  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020  * GNU General Public License for more details.
00021  *
00022  * You should have received a copy of the GNU General Public License
00023  * along with this program; if not, write to the Free Software
00024  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
00025  *
00026  * @todo Rename the functions so that they live somewhere in the purple
00027  *       namespace.
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  * UTF8 String Functions
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 /* _PURPLE_UTIL_H_ */
Generated on Fri Nov 18 21:31:34 2011 for pidgin by  doxygen 1.6.3