util.h
Go to the documentation of this file.
1 
6 /* purple
7  *
8  * Purple is the legal property of its developers, whose names are too numerous
9  * to list here. Please refer to the COPYRIGHT file distributed with this
10  * source distribution.
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation; either version 2 of the License, or
15  * (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
25  *
26  * @todo Rename the functions so that they live somewhere in the purple
27  * namespace.
28  */
29 #ifndef _PURPLE_UTIL_H_
30 #define _PURPLE_UTIL_H_
31 
32 #include <stdio.h>
33 
38 typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
43 
44 #include "account.h"
45 #include "signals.h"
46 #include "xmlnode.h"
47 #include "notify.h"
48 
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
55 {
56  char *label;
57  PurpleCallback callback;
58  gpointer data;
59  GList *children;
60 };
61 
62 typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len);
63 
71 {
72  gchar *key;
73  void *value;
74 
75 };
76 
88 PurpleMenuAction *purple_menu_action_new(const char *label, PurpleCallback callback,
89  gpointer data, GList *children);
90 
97 
106 void purple_util_set_current_song(const char *title, const char *artist,
107  const char *album);
108 
120 char * purple_util_format_song_info(const char *title, const char *artist,
121  const char *album, gpointer unused);
122 
123 /**************************************************************************/
125 /**************************************************************************/
133 void purple_util_init(void);
134 
140 void purple_util_uninit(void);
141 
144 /**************************************************************************/
146 /**************************************************************************/
160 gchar *purple_base16_encode(const guchar *data, gsize len);
161 
177 guchar *purple_base16_decode(const char *str, gsize *ret_len);
178 
191 gchar *purple_base16_encode_chunked(const guchar *data, gsize len);
192 
193 
196 /**************************************************************************/
198 /**************************************************************************/
212 gchar *purple_base64_encode(const guchar *data, gsize len);
213 
229 guchar *purple_base64_decode(const char *str, gsize *ret_len);
230 
233 /**************************************************************************/
235 /**************************************************************************/
250 guchar *purple_quotedp_decode(const char *str, gsize *ret_len);
251 
254 /**************************************************************************/
256 /**************************************************************************/
278 char *purple_mime_decode_field(const char *str);
279 
283 /**************************************************************************/
285 /**************************************************************************/
314 const char *purple_utf8_strftime(const char *format, const struct tm *tm);
315 
324 const char *purple_get_tzoff_str(const struct tm *tm, gboolean iso);
325 
336 const char *purple_date_format_short(const struct tm *tm);
337 
348 const char *purple_date_format_long(const struct tm *tm);
349 
360 const char *purple_date_format_full(const struct tm *tm);
361 
372 const char *purple_time_format(const struct tm *tm);
373 
386 time_t purple_time_build(int year, int month, int day, int hour,
387  int min, int sec);
388 
391 #define PURPLE_NO_TZ_OFF -500000
392 
413 time_t purple_str_to_time(const char *timestamp, gboolean utc,
414  struct tm *tm, long *tz_off, const char **rest);
415 
419 /**************************************************************************/
421 /**************************************************************************/
435 gchar *purple_markup_escape_text(const gchar *text, gssize length);
436 
452 gboolean purple_markup_find_tag(const char *needle, const char *haystack,
453  const char **start, const char **end,
454  GData **attributes);
455 
479 gboolean purple_markup_extract_info_field(const char *str, int len, PurpleNotifyUserInfo *user_info,
480  const char *start_token, int skip,
481  const char *end_token, char check_value,
482  const char *no_value_token,
483  const char *display_name, gboolean is_link,
484  const char *link_prefix,
485  PurpleInfoFieldFormatCallback format_cb);
486 
494 void purple_markup_html_to_xhtml(const char *html, char **dest_xhtml,
495  char **dest_plain);
496 
505 char *purple_markup_strip_html(const char *str);
506 
516 char *purple_markup_linkify(const char *str);
517 
536 char *purple_unescape_text(const char *text);
537 
549 char *purple_unescape_html(const char *html);
550 
572 char *purple_markup_slice(const char *str, guint x, guint y);
573 
583 char *purple_markup_get_tag_name(const char *tag);
584 
601 const char * purple_markup_unescape_entity(const char *text, int *length);
602 
619 char * purple_markup_get_css_property(const gchar *style, const gchar *opt);
620 
630 gboolean purple_markup_is_rtl(const char *html);
631 
635 /**************************************************************************/
637 /**************************************************************************/
647 const gchar *purple_home_dir(void);
648 
657 const char *purple_user_dir(void);
658 
663 void purple_util_set_user_dir(const char *dir);
664 
675 int purple_build_dir(const char *path, int mode);
676 
692 gboolean purple_util_write_data_to_file(const char *filename, const char *data,
693  gssize size);
694 
712 gboolean
713 purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, gssize size);
714 
729 xmlnode *purple_util_read_xml_from_file(const char *filename,
730  const char *description);
731 
748 FILE *purple_mkstemp(char **path, gboolean binary);
749 
758 const char *
759 purple_util_get_image_extension(gconstpointer data, size_t len);
760 
764 char *purple_util_get_image_checksum(gconstpointer image_data, size_t image_len);
765 
773 char *purple_util_get_image_filename(gconstpointer image_data, size_t image_len);
774 
778 /**************************************************************************/
780 /**************************************************************************/
790 gboolean purple_program_is_valid(const char *program);
791 
797 gboolean purple_running_gnome(void);
798 
804 gboolean purple_running_kde(void);
805 
811 gboolean purple_running_osx(void);
812 
820 char *purple_fd_get_ip(int fd);
821 
831 int purple_socket_get_family(int fd);
832 
843 gboolean purple_socket_speaks_ipv4(int fd);
844 
848 /**************************************************************************/
850 /**************************************************************************/
866 gboolean purple_strequal(const gchar *left, const gchar *right);
867 
885 const char *purple_normalize(const PurpleAccount *account, const char *str);
886 
899 const char *purple_normalize_nocase(const PurpleAccount *account, const char *str);
900 
910 gboolean purple_str_has_prefix(const char *s, const char *p);
911 
921 gboolean purple_str_has_suffix(const char *s, const char *x);
922 
931 gchar *purple_strdup_withhtml(const gchar *src);
932 
940 char *purple_str_add_cr(const char *str);
941 
953 void purple_str_strip_char(char *str, char thechar);
954 
965 void purple_util_chrreplace(char *string, char delimiter,
966  char replacement);
967 
980 gchar *purple_strreplace(const char *string, const char *delimiter,
981  const char *replacement);
982 
983 
994 char *purple_utf8_ncr_encode(const char *in);
995 
996 
1007 char *purple_utf8_ncr_decode(const char *in);
1008 
1009 
1022 gchar *purple_strcasereplace(const char *string, const char *delimiter,
1023  const char *replacement);
1024 
1034 const char *purple_strcasestr(const char *haystack, const char *needle);
1035 
1044 char *purple_str_size_to_units(size_t size);
1045 
1054 char *purple_str_seconds_to_string(guint sec);
1055 
1069 char *purple_str_binary_to_ascii(const unsigned char *binary, guint len);
1073 /**************************************************************************/
1075 /**************************************************************************/
1078 void purple_got_protocol_handler_uri(const char *uri);
1079 
1092 gboolean purple_url_parse(const char *url, char **ret_host, int *ret_port,
1093  char **ret_path, char **ret_user, char **ret_passwd);
1094 
1110 typedef void (*PurpleUtilFetchUrlCallback)(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
1111 
1123 #define purple_util_fetch_url(url, full, user_agent, http11, cb, data) \
1124  purple_util_fetch_url_request(url, full, user_agent, http11, NULL, \
1125  FALSE, cb, data);
1126 
1140 #define purple_util_fetch_url_len(url, full, user_agent, http11, max_len, cb, data) \
1141  purple_util_fetch_url_request_len(url, full, user_agent, http11, NULL, \
1142  FALSE, max_len, cb, data);
1143 
1160  gboolean full, const gchar *user_agent, gboolean http11,
1161  const gchar *request, gboolean include_headers,
1162  PurpleUtilFetchUrlCallback callback, gpointer data);
1163 
1182  gboolean full, const gchar *user_agent, gboolean http11,
1183  const gchar *request, gboolean include_headers, gssize max_len,
1184  PurpleUtilFetchUrlCallback callback, gpointer data);
1185 
1206  PurpleAccount *account, const gchar *url,
1207  gboolean full, const gchar *user_agent, gboolean http11,
1208  const gchar *request, gboolean include_headers, gssize max_len,
1209  PurpleUtilFetchUrlCallback callback, gpointer data);
1210 
1218 
1228 const char *purple_url_decode(const char *str);
1229 
1239 const char *purple_url_encode(const char *str);
1240 
1248 gboolean purple_email_is_valid(const char *address);
1249 
1260 gboolean purple_ip_address_is_valid(const char *ip);
1261 
1270 gboolean purple_ipv4_address_is_valid(const char *ip);
1271 
1280 gboolean purple_ipv6_address_is_valid(const char *ip);
1281 
1291 GList *purple_uri_list_extract_uris(const gchar *uri_list);
1292 
1305 GList *purple_uri_list_extract_filenames(const gchar *uri_list);
1306 
1309 /**************************************************************************
1310  * UTF8 String Functions
1311  **************************************************************************/
1323 gchar *purple_utf8_try_convert(const char *str);
1324 
1334 gchar *purple_utf8_salvage(const char *str);
1335 
1348 gchar *purple_utf8_strip_unprintables(const gchar *str);
1349 
1360 G_CONST_RETURN gchar *purple_gai_strerror(gint errnum);
1361 
1375 int purple_utf8_strcasecmp(const char *a, const char *b);
1376 
1387 gboolean purple_utf8_has_word(const char *haystack, const char *needle);
1388 
1397 void purple_print_utf8_to_console(FILE *filestream, char *message);
1398 
1408 gboolean purple_message_meify(char *message, gssize len);
1409 
1418 char *purple_text_strip_mnemonic(const char *in);
1419 
1431 #define purple_add_eight(x) ((x)+8)
1432 
1442 const char *purple_unescape_filename(const char *str);
1443 
1451 const char *purple_escape_filename(const char *str);
1452 
1461 const char *_purple_oscar_convert(const char *act, const char *protocol);
1462 
1469 
1476 const gchar *purple_get_host_name(void);
1477 
1484 gchar *purple_uuid_random(void);
1485 
1486 #ifdef __cplusplus
1487 }
1488 #endif
1489 
1490 #endif /* _PURPLE_UTIL_H_ */