Tue, 24 Aug 2021 04:51:11 -0500
Replace g_time_zone_new with g_time_zone_new_identifier
Testing Done:
Ran the unit tests.
Reviewed at https://reviews.imfreedom.org/r/903/
|
20330
650a7af9c238
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents:
19859
diff
changeset
|
1 | /* Purple is the legal property of its developers, whose names are too numerous |
| 8046 | 2 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 3 | * source distribution. | |
| 1 | 4 | * |
| 5 | * This program is free software; you can redistribute it and/or modify | |
| 6 | * it under the terms of the GNU General Public License as published by | |
| 7 | * the Free Software Foundation; either version 2 of the License, or | |
| 8 | * (at your option) any later version. | |
| 9 | * | |
| 10 | * This program is distributed in the hope that it will be useful, | |
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 13 | * GNU General Public License for more details. | |
| 14 | * | |
| 15 | * You should have received a copy of the GNU General Public License | |
| 16 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19840
diff
changeset
|
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 1 | 18 | */ |
|
40441
f23c7e772667
Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
19 | |
|
f23c7e772667
Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
20 | #include <glib/gi18n-lib.h> |
|
f23c7e772667
Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents:
40439
diff
changeset
|
21 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5826
diff
changeset
|
22 | #include "internal.h" |
|
40439
e9838d634d5e
Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents:
40350
diff
changeset
|
23 | #include "purpleprivate.h" |
| 3630 | 24 | |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
25 | #include "core.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5826
diff
changeset
|
26 | #include "debug.h" |
|
10425
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
27 | #include "notify.h" |
|
36543
a8c3fecee2d3
Renamed prpl.[ch] to protocol.[ch]
Ankit Vani <a@nevitus.org>
parents:
36541
diff
changeset
|
28 | #include "protocol.h" |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5532
diff
changeset
|
29 | #include "prefs.h" |
|
40853
d3518ff99fa7
rename conversation.[ch] to purpleconversation.[ch] and split PurpleConversationUiOps out to its own file to avoid circular include issues.
Gary Kramlich <grim@reaperworld.com>
parents:
40804
diff
changeset
|
30 | #include "purpleconversation.h" |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
31 | #include "purpleprotocolclient.h" |
|
7094
8f9588491993
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
32 | #include "util.h" |
|
8f9588491993
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
33 | |
|
33538
cbeb76707f12
Better implementation of purple_escape_js
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33537
diff
changeset
|
34 | #include <json-glib/json-glib.h> |
|
cbeb76707f12
Better implementation of purple_escape_js
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33537
diff
changeset
|
35 | |
|
18219
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
36 | static char *custom_user_dir = NULL; |
|
20345
7d5a7a92d0f5
Rename the internal home_dir variable to user_dir to match the function and
Richard Laager <rlaager@pidgin.im>
parents:
20330
diff
changeset
|
37 | static char *user_dir = NULL; |
|
38890
d2408369eb7c
Use gchar for xdg dirs variables
qarkai <qarkai@gmail.com>
parents:
38880
diff
changeset
|
38 | static gchar *cache_dir = NULL; |
|
d2408369eb7c
Use gchar for xdg dirs variables
qarkai <qarkai@gmail.com>
parents:
38880
diff
changeset
|
39 | static gchar *config_dir = NULL; |
|
d2408369eb7c
Use gchar for xdg dirs variables
qarkai <qarkai@gmail.com>
parents:
38880
diff
changeset
|
40 | static gchar *data_dir = NULL; |
| 3630 | 41 | |
|
21238
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
42 | void |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
43 | purple_util_init(void) |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
44 | { |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
45 | } |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
46 | |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
47 | void |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
48 | purple_util_uninit(void) |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
49 | { |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
50 | /* Free these so we don't have leaks at shutdown. */ |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
51 | |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
52 | g_free(custom_user_dir); |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
53 | custom_user_dir = NULL; |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
54 | |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
55 | g_free(user_dir); |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
56 | user_dir = NULL; |
|
33538
cbeb76707f12
Better implementation of purple_escape_js
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33537
diff
changeset
|
57 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
58 | g_free(cache_dir); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
59 | cache_dir = NULL; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
60 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
61 | g_free(config_dir); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
62 | config_dir = NULL; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
63 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
64 | g_free(data_dir); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
65 | data_dir = NULL; |
|
21238
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
66 | } |
|
cd326828c870
Add and call a purple_util_uninit() to free user_dir and customer_home_dir
Richard Laager <rlaager@pidgin.im>
parents:
20992
diff
changeset
|
67 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
68 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
69 | * Date/Time Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
70 | **************************************************************************/ |
|
13153
3e0b91a83516
[gaim-migrate @ 15515]
Richard Laager <rlaager@pidgin.im>
parents:
13121
diff
changeset
|
71 | |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
72 | const char * |
| 15884 | 73 | purple_utf8_strftime(const char *format, const struct tm *tm) |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
74 | { |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
75 | static char buf[128]; |
|
39017
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
76 | GDateTime *dt; |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
77 | char *utf8; |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
78 | |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
79 | g_return_val_if_fail(format != NULL, NULL); |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
80 | |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
81 | if (tm == NULL) |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
82 | { |
|
39017
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
83 | dt = g_date_time_new_now_local(); |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
84 | } else { |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
85 | dt = g_date_time_new_local(tm->tm_year + 1900, tm->tm_mon + 1, |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
86 | tm->tm_mday, tm->tm_hour, |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
87 | tm->tm_min, tm->tm_sec); |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
88 | } |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
89 | |
|
39017
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
90 | utf8 = g_date_time_format(dt, format); |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
91 | g_date_time_unref(dt); |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
92 | |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
93 | if (utf8 == NULL) { |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
94 | purple_debug_error("util", |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
95 | "purple_utf8_strftime(): Formatting failed\n"); |
|
13216
2cc737d198f3
[gaim-migrate @ 15579]
Richard Laager <rlaager@pidgin.im>
parents:
13201
diff
changeset
|
96 | return ""; |
|
13116
677ff68a65af
[gaim-migrate @ 15477]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
97 | } |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
98 | |
|
39017
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
99 | g_strlcpy(buf, utf8, sizeof(buf)); |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
100 | g_free(utf8); |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
101 | return buf; |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
102 | } |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
103 | |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
104 | const char * |
| 15884 | 105 | purple_date_format_full(const struct tm *tm) |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
106 | { |
| 15884 | 107 | return purple_utf8_strftime("%c", tm); |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
108 | } |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
109 | |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
110 | /* originally taken from GLib trunk 1-6-11 */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
111 | /* originally licensed as LGPL 2+ */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
112 | static time_t |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
113 | mktime_utc(struct tm *tm) |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
114 | { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
115 | time_t retval; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
116 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
117 | #ifndef HAVE_TIMEGM |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
118 | static const gint days_before[] = |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
119 | { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
120 | 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
121 | }; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
122 | #endif |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
123 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
124 | #ifndef HAVE_TIMEGM |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
125 | if (tm->tm_mon < 0 || tm->tm_mon > 11) |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
126 | return (time_t) -1; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
127 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
128 | retval = (tm->tm_year - 70) * 365; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
129 | retval += (tm->tm_year - 68) / 4; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
130 | retval += days_before[tm->tm_mon] + tm->tm_mday - 1; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
131 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
132 | if (tm->tm_year % 4 == 0 && tm->tm_mon < 2) |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
133 | retval -= 1; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
134 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
135 | retval = ((((retval * 24) + tm->tm_hour) * 60) + tm->tm_min) * 60 + tm->tm_sec; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
136 | #else |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
137 | retval = timegm (tm); |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
138 | #endif /* !HAVE_TIMEGM */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
139 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
140 | return retval; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
141 | } |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
142 | |
| 8577 | 143 | time_t |
| 15884 | 144 | purple_str_to_time(const char *timestamp, gboolean utc, |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
145 | struct tm *tm, long *tz_off, const char **rest) |
| 8577 | 146 | { |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
147 | struct tm t; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
148 | const gchar *str; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
149 | gint year = 0; |
| 15884 | 150 | long tzoff = PURPLE_NO_TZ_OFF; |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
151 | time_t retval; |
|
34229
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
152 | gboolean mktime_with_utc = FALSE; |
|
9716
4011c0d5f384
[gaim-migrate @ 10577]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
153 | |
|
24177
b4e6c6d462db
purple_str_to_time() didn't necessarily set "rest" under all circumstances.
Daniel Atallah <datallah@pidgin.im>
parents:
24072
diff
changeset
|
154 | if (rest != NULL) |
|
b4e6c6d462db
purple_str_to_time() didn't necessarily set "rest" under all circumstances.
Daniel Atallah <datallah@pidgin.im>
parents:
24072
diff
changeset
|
155 | *rest = NULL; |
|
b4e6c6d462db
purple_str_to_time() didn't necessarily set "rest" under all circumstances.
Daniel Atallah <datallah@pidgin.im>
parents:
24072
diff
changeset
|
156 | |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
157 | g_return_val_if_fail(timestamp != NULL, 0); |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
158 | |
|
31731
96ccdfb11ae0
Zero the struct tm used for purple_str_to_time().
Daniel Atallah <datallah@pidgin.im>
parents:
31332
diff
changeset
|
159 | memset(&t, 0, sizeof(struct tm)); |
|
96ccdfb11ae0
Zero the struct tm used for purple_str_to_time().
Daniel Atallah <datallah@pidgin.im>
parents:
31332
diff
changeset
|
160 | |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
161 | str = timestamp; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
162 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
163 | /* Strip leading whitespace */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
164 | while (g_ascii_isspace(*str)) |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
165 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
166 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
167 | if (*str == '\0') { |
|
39913
ce96d4639dc7
Remove redundant conditions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39910
diff
changeset
|
168 | if (rest != NULL) { |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
169 | *rest = str; |
|
39913
ce96d4639dc7
Remove redundant conditions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39910
diff
changeset
|
170 | } |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
171 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
172 | return 0; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
173 | } |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
174 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
175 | if (!g_ascii_isdigit(*str) && *str != '-' && *str != '+') { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
176 | if (rest != NULL && *str != '\0') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
177 | *rest = str; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
178 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
179 | return 0; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
180 | } |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
181 | |
|
9716
4011c0d5f384
[gaim-migrate @ 10577]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
182 | /* 4 digit year */ |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
183 | if (sscanf(str, "%04d", &year) && year >= 1900) { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
184 | str += 4; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
185 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
186 | if (*str == '-' || *str == '/') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
187 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
188 | |
|
21698
a63eace78d68
'man 3 ctime' says of localtime() (and friends):
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21697
diff
changeset
|
189 | t.tm_year = year - 1900; |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
190 | } |
| 8577 | 191 | |
| 192 | /* 2 digit month */ | |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
193 | if (!sscanf(str, "%02d", &t.tm_mon)) { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
194 | if (rest != NULL && *str != '\0') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
195 | *rest = str; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
196 | |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
197 | return 0; |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
198 | } |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
199 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
200 | str += 2; |
|
21698
a63eace78d68
'man 3 ctime' says of localtime() (and friends):
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21697
diff
changeset
|
201 | t.tm_mon -= 1; |
|
9716
4011c0d5f384
[gaim-migrate @ 10577]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
202 | |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
203 | if (*str == '-' || *str == '/') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
204 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
205 | |
|
9716
4011c0d5f384
[gaim-migrate @ 10577]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
206 | /* 2 digit day */ |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
207 | if (!sscanf(str, "%02d", &t.tm_mday)) { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
208 | if (rest != NULL && *str != '\0') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
209 | *rest = str; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
210 | |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
211 | return 0; |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
212 | } |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
213 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
214 | str += 2; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
215 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
216 | /* Grab the year off the end if there's still stuff */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
217 | if (*str == '/' || *str == '-') { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
218 | /* But make sure we don't read the year twice */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
219 | if (year >= 1900) { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
220 | if (rest != NULL && *str != '\0') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
221 | *rest = str; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
222 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
223 | return 0; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
224 | } |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
225 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
226 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
227 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
228 | if (!sscanf(str, "%04d", &t.tm_year)) { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
229 | if (rest != NULL && *str != '\0') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
230 | *rest = str; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
231 | |
|
13465
259b56595409
[gaim-migrate @ 15839]
Richard Laager <rlaager@pidgin.im>
parents:
13444
diff
changeset
|
232 | return 0; |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
233 | } |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
234 | |
|
21698
a63eace78d68
'man 3 ctime' says of localtime() (and friends):
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21697
diff
changeset
|
235 | t.tm_year -= 1900; |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
236 | } else if (*str == 'T' || *str == '.') { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
237 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
238 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
239 | /* Continue grabbing the hours/minutes/seconds */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
240 | if ((sscanf(str, "%02d:%02d:%02d", &t.tm_hour, &t.tm_min, &t.tm_sec) == 3 && |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
241 | (str += 8)) || |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
242 | (sscanf(str, "%02d%02d%02d", &t.tm_hour, &t.tm_min, &t.tm_sec) == 3 && |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
243 | (str += 6))) |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
244 | { |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
245 | gint sign, tzhrs, tzmins; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
246 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
247 | if (*str == '.') { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
248 | /* Cut off those pesky micro-seconds */ |
|
21696
9eac1e42a98e
Fix a bug in purple_str_to_time() that could cause it to try reading past
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21665
diff
changeset
|
249 | do { |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
250 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
251 | } while (*str >= '0' && *str <= '9'); |
|
23507
7035c0e7f8ce
Allow a 'Z' (UTC) TZ in strings passed to purple_str_to_time. Used for
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
23391
diff
changeset
|
252 | } |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
253 | |
|
34228
f93f8b0f36c3
Fix purple_str_to_time()'s tz_off sign handling
Richard Laager <rlaager@pidgin.im>
parents:
33809
diff
changeset
|
254 | sign = (*str == '+') ? 1 : -1; |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
255 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
256 | /* Process the timezone */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
257 | if (*str == '+' || *str == '-') { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
258 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
259 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
260 | if (((sscanf(str, "%02d:%02d", &tzhrs, &tzmins) == 2 && (str += 5)) || |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
261 | (sscanf(str, "%02d%02d", &tzhrs, &tzmins) == 2 && (str += 4)))) |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
262 | { |
|
34229
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
263 | mktime_with_utc = TRUE; |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
264 | tzoff = tzhrs * 60 * 60 + tzmins * 60; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
265 | tzoff *= sign; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
266 | } |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
267 | } else if (*str == 'Z') { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
268 | /* 'Z' = Zulu = UTC */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
269 | str++; |
|
34229
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
270 | mktime_with_utc = TRUE; |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
271 | tzoff = 0; |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
272 | } |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
273 | |
|
34229
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
274 | if (!mktime_with_utc) |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
275 | { |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
276 | /* No timezone specified. */ |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
277 | |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
278 | if (utc) { |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
279 | mktime_with_utc = TRUE; |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
280 | tzoff = 0; |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
281 | } else { |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
282 | /* Local Time */ |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
283 | t.tm_isdst = -1; |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
284 | } |
|
6a1aea2866aa
Refactor an error path in purple_str_to_time()
Richard Laager <rlaager@pidgin.im>
parents:
34228
diff
changeset
|
285 | } |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
286 | } |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
287 | } |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
288 | |
|
31332
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
289 | if (rest != NULL && *str != '\0') { |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
290 | /* Strip trailing whitespace */ |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
291 | while (g_ascii_isspace(*str)) |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
292 | str++; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
293 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
294 | if (*str != '\0') |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
295 | *rest = str; |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
296 | } |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
297 | |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
298 | if (mktime_with_utc) |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
299 | retval = mktime_utc(&t); |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
300 | else |
|
6a74f42c8c04
Fix purple_str_to_time(). Fixes #13131.
Nader Morshed <morshed.nader@gmail.com>
parents:
31294
diff
changeset
|
301 | retval = mktime(&t); |
|
23061
a863009f90fa
Fix purple_str_to_time() to not break the returned value when we have given
Richard Laager <rlaager@pidgin.im>
parents:
23028
diff
changeset
|
302 | |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
303 | if (tm != NULL) |
|
21707
c2f50b4a53e8
I had used memcpy to copy the struct tm to where the caller wants it, but
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21698
diff
changeset
|
304 | *tm = t; |
|
23061
a863009f90fa
Fix purple_str_to_time() to not break the returned value when we have given
Richard Laager <rlaager@pidgin.im>
parents:
23028
diff
changeset
|
305 | |
| 15884 | 306 | if (tzoff != PURPLE_NO_TZ_OFF) |
|
35181
e5c1b7f9486d
Fix purple_str_to_time() again.
Richard Laager <rlaager@pidgin.im>
parents:
34229
diff
changeset
|
307 | retval -= tzoff; |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
308 | |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
309 | if (tz_off != NULL) |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
310 | *tz_off = tzoff; |
|
9716
4011c0d5f384
[gaim-migrate @ 10577]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
311 | |
|
4011c0d5f384
[gaim-migrate @ 10577]
Mark Doliner <markdoliner@pidgin.im>
parents:
9696
diff
changeset
|
312 | return retval; |
| 8577 | 313 | } |
| 314 | ||
|
38619
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
315 | GDateTime * |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
316 | purple_str_to_date_time(const char *timestamp, gboolean utc) |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
317 | { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
318 | const gchar *str; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
319 | gint year = 0; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
320 | gint month = 0; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
321 | gint day = 0; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
322 | gint hour = 0; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
323 | gint minute = 0; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
324 | gint seconds = 0; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
325 | gint microseconds = 0; |
|
38624
dcd42461c1a8
Fix parsing of date time microseconds.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38619
diff
changeset
|
326 | int chars = 0; |
|
38619
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
327 | GTimeZone *tz = NULL; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
328 | GDateTime *retval; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
329 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
330 | g_return_val_if_fail(timestamp != NULL, NULL); |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
331 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
332 | str = timestamp; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
333 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
334 | /* Strip leading whitespace */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
335 | while (g_ascii_isspace(*str)) |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
336 | str++; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
337 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
338 | if (*str == '\0') { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
339 | return NULL; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
340 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
341 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
342 | if (!g_ascii_isdigit(*str) && *str != '-' && *str != '+') { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
343 | return NULL; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
344 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
345 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
346 | /* 4 digit year */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
347 | if (sscanf(str, "%04d", &year) && year > 0) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
348 | str += 4; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
349 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
350 | if (*str == '-' || *str == '/') |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
351 | str++; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
352 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
353 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
354 | /* 2 digit month */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
355 | if (!sscanf(str, "%02d", &month)) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
356 | return NULL; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
357 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
358 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
359 | str += 2; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
360 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
361 | if (*str == '-' || *str == '/') |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
362 | str++; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
363 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
364 | /* 2 digit day */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
365 | if (!sscanf(str, "%02d", &day)) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
366 | return NULL; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
367 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
368 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
369 | str += 2; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
370 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
371 | /* Grab the year off the end if there's still stuff */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
372 | if (*str == '/' || *str == '-') { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
373 | /* But make sure we don't read the year twice */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
374 | if (year > 0) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
375 | return NULL; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
376 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
377 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
378 | str++; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
379 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
380 | if (!sscanf(str, "%04d", &year)) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
381 | return NULL; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
382 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
383 | } else if (*str == 'T' || *str == '.') { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
384 | str++; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
385 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
386 | /* Continue grabbing the hours/minutes/seconds */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
387 | if ((sscanf(str, "%02d:%02d:%02d", &hour, &minute, &seconds) == 3 && |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
388 | (str += 8)) || |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
389 | (sscanf(str, "%02d%02d%02d", &hour, &minute, &seconds) == 3 && |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
390 | (str += 6))) |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
391 | { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
392 | if (*str == '.') { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
393 | str++; |
|
38624
dcd42461c1a8
Fix parsing of date time microseconds.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38619
diff
changeset
|
394 | if (sscanf(str, "%d%n", µseconds, &chars) == 1) { |
|
38619
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
395 | str += chars; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
396 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
397 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
398 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
399 | if (*str) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
400 | const gchar *end = str; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
401 | if (*end == '+' || *end == '-') { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
402 | end++; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
403 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
404 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
405 | while (isdigit(*end) || *end == ':') { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
406 | end++; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
407 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
408 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
409 | if (str != end) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
410 | /* Trim anything trailing a purely numeric time zone. */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
411 | gchar *tzstr = g_strndup(str, end - str); |
|
41033
2abcdcea1ee0
Replace g_time_zone_new with g_time_zone_new_identifier
Gary Kramlich <grim@reaperworld.com>
parents:
40853
diff
changeset
|
412 | tz = g_time_zone_new_identifier(tzstr); |
|
38619
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
413 | g_free(tzstr); |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
414 | } else { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
415 | /* Just try whatever is there. */ |
|
41033
2abcdcea1ee0
Replace g_time_zone_new with g_time_zone_new_identifier
Gary Kramlich <grim@reaperworld.com>
parents:
40853
diff
changeset
|
416 | tz = g_time_zone_new_identifier(str); |
|
38619
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
417 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
418 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
419 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
420 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
421 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
422 | if (!tz) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
423 | /* No timezone specified. */ |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
424 | if (utc) { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
425 | tz = g_time_zone_new_utc(); |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
426 | } else { |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
427 | tz = g_time_zone_new_local(); |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
428 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
429 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
430 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
431 | retval = g_date_time_new(tz, year, month, day, hour, minute, |
|
38624
dcd42461c1a8
Fix parsing of date time microseconds.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38619
diff
changeset
|
432 | seconds + microseconds * pow(10, -chars)); |
|
38619
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
433 | g_time_zone_unref(tz); |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
434 | |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
435 | return retval; |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
436 | } |
|
2121337626ee
Add purple_str_to_date_time.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
38358
diff
changeset
|
437 | |
|
40171
564fcabca6d9
Rename purple_get_month -> purple_time_parse_month
qarkai <qarkai@gmail.com>
parents:
40170
diff
changeset
|
438 | gint purple_time_parse_month(const char *month_abbr) |
|
40170
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
439 | { |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
440 | const char *months[] = { |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
441 | "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
442 | "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
443 | NULL}; |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
444 | for (gint month = 0; months[month] != NULL; month++) { |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
445 | if (purple_strequal(month_abbr, months[month])) { |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
446 | return month + 1; |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
447 | } |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
448 | } |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
449 | return 0; |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
450 | } |
|
c69c52a5ffe7
Add purple_get_month() util function
qarkai <qarkai@gmail.com>
parents:
40142
diff
changeset
|
451 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
452 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
453 | * Path/Filename Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
454 | **************************************************************************/ |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
455 | const char * |
| 15884 | 456 | purple_home_dir(void) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
457 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
458 | #ifndef _WIN32 |
|
11665
6b80cef9b563
[gaim-migrate @ 13950]
Michael Carlson <corfe83@users.sourceforge.net>
parents:
11656
diff
changeset
|
459 | return g_get_home_dir(); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
460 | #else |
|
35864
a9dfa29e3382
cross-win32: correct PURPLE_DATADIR location, rename misleading wpurple_data_dir()
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35837
diff
changeset
|
461 | return wpurple_home_dir(); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
462 | #endif |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
463 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
464 | |
|
16415
8cbcd9756090
Use ~/.purple only, never ~/.gaim. This is a revert of the functional
Richard Laager <rlaager@pidgin.im>
parents:
16230
diff
changeset
|
465 | /* Returns the argument passed to -c IFF it was present, or ~/.purple. */ |
|
10332
62ed0121db22
[gaim-migrate @ 11539]
Mark Doliner <markdoliner@pidgin.im>
parents:
10258
diff
changeset
|
466 | const char * |
| 15884 | 467 | purple_user_dir(void) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
468 | { |
|
18219
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
469 | if (custom_user_dir != NULL) |
|
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
470 | return custom_user_dir; |
|
20345
7d5a7a92d0f5
Rename the internal home_dir variable to user_dir to match the function and
Richard Laager <rlaager@pidgin.im>
parents:
20330
diff
changeset
|
471 | else if (!user_dir) |
|
7d5a7a92d0f5
Rename the internal home_dir variable to user_dir to match the function and
Richard Laager <rlaager@pidgin.im>
parents:
20330
diff
changeset
|
472 | user_dir = g_build_filename(purple_home_dir(), ".purple", NULL); |
|
7d5a7a92d0f5
Rename the internal home_dir variable to user_dir to match the function and
Richard Laager <rlaager@pidgin.im>
parents:
20330
diff
changeset
|
473 | |
|
7d5a7a92d0f5
Rename the internal home_dir variable to user_dir to match the function and
Richard Laager <rlaager@pidgin.im>
parents:
20330
diff
changeset
|
474 | return user_dir; |
| 8596 | 475 | } |
| 476 | ||
|
38892
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
477 | static const gchar * |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
478 | purple_xdg_dir(gchar **xdg_dir, const gchar *xdg_base_dir, const gchar *xdg_type) |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
479 | { |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
480 | if (!*xdg_dir) { |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
481 | if (!custom_user_dir) { |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
482 | *xdg_dir = g_build_filename(xdg_base_dir, "purple", NULL); |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
483 | } else { |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
484 | *xdg_dir = g_build_filename(custom_user_dir, xdg_type, NULL); |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
485 | } |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
486 | } |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
487 | |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
488 | return *xdg_dir; |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
489 | } |
|
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
490 | |
|
38890
d2408369eb7c
Use gchar for xdg dirs variables
qarkai <qarkai@gmail.com>
parents:
38880
diff
changeset
|
491 | const gchar * |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
492 | purple_cache_dir(void) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
493 | { |
|
38892
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
494 | return purple_xdg_dir(&cache_dir, g_get_user_cache_dir(), "cache"); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
495 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
496 | |
|
38890
d2408369eb7c
Use gchar for xdg dirs variables
qarkai <qarkai@gmail.com>
parents:
38880
diff
changeset
|
497 | const gchar * |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
498 | purple_config_dir(void) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
499 | { |
|
38892
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
500 | return purple_xdg_dir(&config_dir, g_get_user_config_dir(), "config"); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
501 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
502 | |
|
38890
d2408369eb7c
Use gchar for xdg dirs variables
qarkai <qarkai@gmail.com>
parents:
38880
diff
changeset
|
503 | const gchar * |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
504 | purple_data_dir(void) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
505 | { |
|
38892
eff4283fc188
Use common function for getting XDG specific directory
qarkai <qarkai@gmail.com>
parents:
38890
diff
changeset
|
506 | return purple_xdg_dir(&data_dir, g_get_user_data_dir(), "data"); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
507 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
508 | |
|
38893
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
509 | gboolean |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
510 | purple_move_to_xdg_base_dir(const char *purple_xdg_dir, char *path) |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
511 | { |
|
38893
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
512 | gint mkdir_res; |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
513 | gchar *xdg_path; |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
514 | gboolean xdg_path_exists; |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
515 | |
|
38893
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
516 | /* Create destination directory */ |
|
40124
cdce45867b10
Replace purple_build_dir with g_mkdir_with_parents.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
40123
diff
changeset
|
517 | mkdir_res = g_mkdir_with_parents(purple_xdg_dir, S_IRWXU); |
|
38893
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
518 | if (mkdir_res == -1) { |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
519 | purple_debug_error("util", "Error creating xdg directory %s: %s; failed migration\n", |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
520 | purple_xdg_dir, g_strerror(errno)); |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
521 | return FALSE; |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
522 | } |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
523 | |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
524 | xdg_path = g_build_filename(purple_xdg_dir, path, NULL); |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
525 | xdg_path_exists = g_file_test(xdg_path, G_FILE_TEST_EXISTS); |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
526 | if (!xdg_path_exists) { |
|
38893
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
527 | gchar *old_path; |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
528 | gboolean old_path_exists; |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
529 | |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
530 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
531 | old_path = g_build_filename(purple_user_dir(), path, NULL); |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
532 | G_GNUC_END_IGNORE_DEPRECATIONS |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
533 | old_path_exists = g_file_test(old_path, G_FILE_TEST_EXISTS); |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
534 | if (old_path_exists) { |
|
38893
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
535 | int rename_res; |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
536 | |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
537 | rename_res = g_rename(old_path, xdg_path); |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
538 | if (rename_res == -1) { |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
539 | purple_debug_error("util", "Error renaming %s to %s; failed migration\n", |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
540 | old_path, xdg_path); |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
541 | g_free(old_path); |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
542 | g_free(xdg_path); |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
543 | |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
544 | return FALSE; |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
545 | } |
|
38874
0fc4ba7fa2be
Make XDG dir structure inside custom user dir
qarkai <qarkai@gmail.com>
parents:
38872
diff
changeset
|
546 | } |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
547 | |
|
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
548 | g_free(old_path); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
549 | } |
| 38871 | 550 | |
|
38878
6d800b496317
Migrate xmpp-caps.xml to XDG cache dir
qarkai <qarkai@gmail.com>
parents:
38877
diff
changeset
|
551 | g_free(xdg_path); |
|
38893
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
552 | |
|
ea7c40572374
Move migration to core, check for errors
qarkai <qarkai@gmail.com>
parents:
38892
diff
changeset
|
553 | return TRUE; |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
554 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
555 | |
| 15884 | 556 | void purple_util_set_user_dir(const char *dir) |
| 8596 | 557 | { |
|
18219
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
558 | g_free(custom_user_dir); |
|
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
559 | |
|
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
560 | if (dir != NULL && *dir) |
|
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
561 | custom_user_dir = g_strdup(dir); |
|
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
562 | else |
|
c95d2009a0c7
Use dynamically allocated strings for the user_dir caching. Do we need to
Richard Laager <rlaager@pidgin.im>
parents:
18203
diff
changeset
|
563 | custom_user_dir = NULL; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
564 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
565 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
566 | static gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
567 | purple_util_write_data_to_file_common(const char *dir, const char *filename, const char *data, gssize size) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
568 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
569 | gchar *filename_full; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
570 | gboolean ret = FALSE; |
|
38872
af422a3fb924
Add purple_util_write_data_to_*_file declarations
qarkai <qarkai@gmail.com>
parents:
38871
diff
changeset
|
571 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
572 | g_return_val_if_fail(dir != NULL, FALSE); |
|
38872
af422a3fb924
Add purple_util_write_data_to_*_file declarations
qarkai <qarkai@gmail.com>
parents:
38871
diff
changeset
|
573 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
574 | purple_debug_misc("util", "Writing file %s to directory %s", |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
575 | filename, dir); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
576 | |
|
38874
0fc4ba7fa2be
Make XDG dir structure inside custom user dir
qarkai <qarkai@gmail.com>
parents:
38872
diff
changeset
|
577 | /* Ensure the directory exists */ |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
578 | if (!g_file_test(dir, G_FILE_TEST_IS_DIR)) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
579 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
580 | if (g_mkdir(dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
581 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
582 | purple_debug_error("util", "Error creating directory %s: %s\n", |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
583 | dir, g_strerror(errno)); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
584 | return FALSE; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
585 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
586 | } |
|
38872
af422a3fb924
Add purple_util_write_data_to_*_file declarations
qarkai <qarkai@gmail.com>
parents:
38871
diff
changeset
|
587 | |
| 38899 | 588 | filename_full = g_build_filename(dir, filename, NULL); |
|
40656
0d388fcfd3bf
Remove one more purple_util_write_data_to_file_absolute.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40637
diff
changeset
|
589 | ret = g_file_set_contents(filename_full, data, size, NULL); |
|
0d388fcfd3bf
Remove one more purple_util_write_data_to_file_absolute.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
40637
diff
changeset
|
590 | g_free(filename_full); |
|
38872
af422a3fb924
Add purple_util_write_data_to_*_file declarations
qarkai <qarkai@gmail.com>
parents:
38871
diff
changeset
|
591 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
592 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
593 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
594 | |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
595 | gboolean |
|
19585
14b519abcc26
Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents:
19327
diff
changeset
|
596 | purple_util_write_data_to_file(const char *filename, const char *data, gssize size) |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
597 | { |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
598 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS |
| 15884 | 599 | const char *user_dir = purple_user_dir(); |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
600 | G_GNUC_END_IGNORE_DEPRECATIONS |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
601 | gboolean ret = purple_util_write_data_to_file_common(user_dir, filename, data, size); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
602 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
603 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
604 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
605 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
606 | gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
607 | purple_util_write_data_to_cache_file(const char *filename, const char *data, gssize size) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
608 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
609 | const char *cache_dir = purple_cache_dir(); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
610 | gboolean ret = purple_util_write_data_to_file_common(cache_dir, filename, data, size); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
611 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
612 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
613 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
614 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
615 | gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
616 | purple_util_write_data_to_config_file(const char *filename, const char *data, gssize size) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
617 | { |
|
38881
25cb836b9cec
Use proper directories for writing data.
Arkadiy Illarionov <qarkai@gmail.com>
parents:
38874
diff
changeset
|
618 | const char *config_dir = purple_config_dir(); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
619 | gboolean ret = purple_util_write_data_to_file_common(config_dir, filename, data, size); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
620 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
621 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
622 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
623 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
624 | gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
625 | purple_util_write_data_to_data_file(const char *filename, const char *data, gssize size) |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
626 | { |
|
38881
25cb836b9cec
Use proper directories for writing data.
Arkadiy Illarionov <qarkai@gmail.com>
parents:
38874
diff
changeset
|
627 | const char *data_dir = purple_data_dir(); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
628 | gboolean ret = purple_util_write_data_to_file_common(data_dir, filename, data, size); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
629 | |
|
19501
4c14c89dcf02
- Add purple_util_write_data_to_file_absolute; glib's
William Ehlhardt <williamehlhardt@gmail.com>
parents:
19327
diff
changeset
|
630 | return ret; |
|
4c14c89dcf02
- Add purple_util_write_data_to_file_absolute; glib's
William Ehlhardt <williamehlhardt@gmail.com>
parents:
19327
diff
changeset
|
631 | } |
|
4c14c89dcf02
- Add purple_util_write_data_to_file_absolute; glib's
William Ehlhardt <williamehlhardt@gmail.com>
parents:
19327
diff
changeset
|
632 | |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
633 | gboolean |
|
20931
27b539a198ce
purple_util_write_data_to_file_absolute() should take a signed argument for the size as -1 is used to indicate that the string is nul-delimited. This resolves CID 330.
Daniel Atallah <datallah@pidgin.im>
parents:
20747
diff
changeset
|
634 | purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, gssize size) |
|
19501
4c14c89dcf02
- Add purple_util_write_data_to_file_absolute; glib's
William Ehlhardt <williamehlhardt@gmail.com>
parents:
19327
diff
changeset
|
635 | { |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
636 | GFile *file; |
|
38996
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
637 | GError *err = NULL; |
|
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
638 | |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
639 | g_return_val_if_fail(size >= -1, FALSE); |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
640 | |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
641 | if (size == -1) { |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
642 | size = strlen(data); |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
643 | } |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
644 | |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
645 | file = g_file_new_for_path(filename_full); |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
646 | |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
647 | if (!g_file_replace_contents(file, data, size, NULL, FALSE, |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
648 | G_FILE_CREATE_PRIVATE, NULL, NULL, &err)) { |
|
38996
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
649 | purple_debug_error("util", "Error writing file: %s: %s\n", |
|
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
650 | filename_full, err->message); |
|
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
651 | g_clear_error(&err); |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
652 | g_object_unref(file); |
|
21421
1d0f0d592011
Manually fflush() files written with purple_util_write_data_to_file,
Ethan Blanton <elb@pidgin.im>
parents:
21389
diff
changeset
|
653 | return FALSE; |
|
1d0f0d592011
Manually fflush() files written with purple_util_write_data_to_file,
Ethan Blanton <elb@pidgin.im>
parents:
21389
diff
changeset
|
654 | } |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
655 | |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
656 | g_object_unref(file); |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
657 | return TRUE; |
|
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
658 | } |
|
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
659 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34892
diff
changeset
|
660 | PurpleXmlNode * |
| 15884 | 661 | purple_util_read_xml_from_file(const char *filename, const char *description) |
|
10425
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
662 | { |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
663 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34892
diff
changeset
|
664 | return purple_xmlnode_from_file(purple_user_dir(), filename, description, "util"); |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
665 | G_GNUC_END_IGNORE_DEPRECATIONS |
|
10425
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
666 | } |
|
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
667 | |
|
38877
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
668 | PurpleXmlNode * |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
669 | purple_util_read_xml_from_cache_file(const char *filename, const char *description) |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
670 | { |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
671 | return purple_xmlnode_from_file(purple_cache_dir(), filename, description, "util"); |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
672 | } |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
673 | |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
674 | PurpleXmlNode * |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
675 | purple_util_read_xml_from_config_file(const char *filename, const char *description) |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
676 | { |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
677 | return purple_xmlnode_from_file(purple_config_dir(), filename, description, "util"); |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
678 | } |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
679 | |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
680 | PurpleXmlNode * |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
681 | purple_util_read_xml_from_data_file(const char *filename, const char *description) |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
682 | { |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
683 | return purple_xmlnode_from_file(purple_data_dir(), filename, description, "util"); |
|
10425
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
684 | } |
|
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
685 | |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
686 | /* |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
687 | * Like mkstemp() but returns a file pointer, uses a pre-set template, |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
688 | * uses the semantics of tempnam() for the directory to use and allocates |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
689 | * the space for the filepath. |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
690 | * |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
691 | * Caller is responsible for closing the file and removing it when done, |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
692 | * as well as freeing the space pointed-to by "path" with g_free(). |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
693 | * |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
694 | * Returns NULL on failure and cleans up after itself if so. |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
695 | */ |
| 15884 | 696 | static const char *purple_mkstemp_templ = {"purpleXXXXXX"}; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
697 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
698 | FILE * |
| 15884 | 699 | purple_mkstemp(char **fpath, gboolean binary) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
700 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
701 | const gchar *tmpdir; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
702 | int fd; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
703 | FILE *fp = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
704 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
705 | g_return_val_if_fail(fpath != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
706 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
707 | if((tmpdir = (gchar*)g_get_tmp_dir()) != NULL) { |
| 15884 | 708 | if((*fpath = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", tmpdir, purple_mkstemp_templ)) != NULL) { |
|
16915
a2d4de1d8ca2
_mktmp() sucks, so use g_mkstemp() instead. This probably doesn't have to be done differently for win32 and elsewhere, but I don't want to be changing things right now.
Daniel Atallah <datallah@pidgin.im>
parents:
16610
diff
changeset
|
709 | fd = g_mkstemp(*fpath); |
|
a2d4de1d8ca2
_mktmp() sucks, so use g_mkstemp() instead. This probably doesn't have to be done differently for win32 and elsewhere, but I don't want to be changing things right now.
Daniel Atallah <datallah@pidgin.im>
parents:
16610
diff
changeset
|
710 | if(fd == -1) { |
|
40765
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40747
diff
changeset
|
711 | purple_debug_error("purple_mkstemp", "Couldn't make \"%s\", error: %d", |
|
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40747
diff
changeset
|
712 | *fpath, errno); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
713 | } else { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
714 | if((fp = fdopen(fd, "r+")) == NULL) { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
715 | close(fd); |
|
40765
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40747
diff
changeset
|
716 | purple_debug_error("purple_mkstemp", "Couldn't fdopen(), error: %d", errno); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
717 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
718 | } |
|
16915
a2d4de1d8ca2
_mktmp() sucks, so use g_mkstemp() instead. This probably doesn't have to be done differently for win32 and elsewhere, but I don't want to be changing things right now.
Daniel Atallah <datallah@pidgin.im>
parents:
16610
diff
changeset
|
719 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
720 | if(!fp) { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
721 | g_free(*fpath); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
722 | *fpath = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
723 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
724 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
725 | } else { |
|
40765
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40747
diff
changeset
|
726 | purple_debug_error("purple_mkstemp", "g_get_tmp_dir() failed!"); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
727 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
728 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
729 | return fp; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
730 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
731 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
732 | gboolean |
| 15884 | 733 | purple_program_is_valid(const char *program) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
734 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
735 | GError *error = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
736 | char **argv; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
737 | gchar *progname; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
738 | gboolean is_valid = FALSE; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
739 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
740 | g_return_val_if_fail(program != NULL, FALSE); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
741 | g_return_val_if_fail(*program != '\0', FALSE); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
742 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
743 | if (!g_shell_parse_argv(program, NULL, &argv, &error)) { |
|
40765
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40747
diff
changeset
|
744 | purple_debug_error("program_is_valid", "Could not parse program '%s': %s", |
|
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40747
diff
changeset
|
745 | program, error->message); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
746 | g_error_free(error); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
747 | return FALSE; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
748 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
749 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
750 | if (argv == NULL) { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
751 | return FALSE; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
752 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
753 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
754 | progname = g_find_program_in_path(argv[0]); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
755 | is_valid = (progname != NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
756 | |
|
30797
2c0fe77a44bc
Useful snippet of debugging that helped me out.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
30702
diff
changeset
|
757 | if(purple_debug_is_verbose()) |
|
2c0fe77a44bc
Useful snippet of debugging that helped me out.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
30702
diff
changeset
|
758 | purple_debug_info("program_is_valid", "Tested program %s. %s.\n", program, |
|
2c0fe77a44bc
Useful snippet of debugging that helped me out.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
30702
diff
changeset
|
759 | is_valid ? "Valid" : "Invalid"); |
|
2c0fe77a44bc
Useful snippet of debugging that helped me out.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
30702
diff
changeset
|
760 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
761 | g_strfreev(argv); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
762 | g_free(progname); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
763 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
764 | return is_valid; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
765 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
766 | |
| 11878 | 767 | |
| 768 | gboolean | |
| 15884 | 769 | purple_running_gnome(void) |
| 11878 | 770 | { |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
771 | #ifndef _WIN32 |
|
38043
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
772 | gchar *tmp = g_find_program_in_path("gvfs-open"); |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
773 | |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
774 | if (tmp == NULL) { |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
775 | tmp = g_find_program_in_path("gnome-open"); |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
776 | |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
777 | if (tmp == NULL) { |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
778 | return FALSE; |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
779 | } |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
780 | } |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
781 | |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
782 | g_free(tmp); |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
783 | |
|
21665
a1a724a89a03
Allow empty GNOME_DESKTOP_SESSION_ID to "fail" the running_gnome check as
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21468
diff
changeset
|
784 | tmp = (gchar *)g_getenv("GNOME_DESKTOP_SESSION_ID"); |
|
a1a724a89a03
Allow empty GNOME_DESKTOP_SESSION_ID to "fail" the running_gnome check as
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21468
diff
changeset
|
785 | |
|
a1a724a89a03
Allow empty GNOME_DESKTOP_SESSION_ID to "fail" the running_gnome check as
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21468
diff
changeset
|
786 | return ((tmp != NULL) && (*tmp != '\0')); |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
787 | #else |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
788 | return FALSE; |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
789 | #endif |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
790 | } |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
791 | |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
792 | gboolean |
| 15884 | 793 | purple_running_kde(void) |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
794 | { |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
795 | #ifndef _WIN32 |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
796 | gchar *tmp = g_find_program_in_path("kfmclient"); |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
797 | const char *session; |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
798 | |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
799 | if (tmp == NULL) |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
800 | return FALSE; |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
801 | g_free(tmp); |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
802 | |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
803 | session = g_getenv("KDE_FULL_SESSION"); |
|
25859
b42be7bb9dac
Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents:
25854
diff
changeset
|
804 | if (purple_strequal(session, "true")) |
| 11878 | 805 | return TRUE; |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
806 | |
| 15884 | 807 | /* If you run Purple from Konsole under !KDE, this will provide a |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
808 | * a false positive. Since we do the GNOME checks first, this is |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
809 | * only a problem if you're running something !(KDE || GNOME) and |
| 15884 | 810 | * you run Purple from Konsole. This really shouldn't be a problem. */ |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
811 | return ((g_getenv("KDEDIR") != NULL) || g_getenv("KDEDIRS") != NULL); |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
812 | #else |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
813 | return FALSE; |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
814 | #endif |
| 11878 | 815 | } |
| 816 | ||
|
15016
bdc3f402b3a0
[gaim-migrate @ 17733]
Luke Schierer <lschiere@pidgin.im>
parents:
14940
diff
changeset
|
817 | gboolean |
| 15884 | 818 | purple_running_osx(void) |
|
14708
6006e069317c
[gaim-migrate @ 17392]
Evan Schoenberg <evands@pidgin.im>
parents:
14648
diff
changeset
|
819 | { |
|
16557
b0e9ddccdbb9
Fix purple_util_get_image_extension()'s data param. to be correctly marked as constant.
Daniel Atallah <datallah@pidgin.im>
parents:
16545
diff
changeset
|
820 | #if defined(__APPLE__) |
|
14708
6006e069317c
[gaim-migrate @ 17392]
Evan Schoenberg <evands@pidgin.im>
parents:
14648
diff
changeset
|
821 | return TRUE; |
|
6006e069317c
[gaim-migrate @ 17392]
Evan Schoenberg <evands@pidgin.im>
parents:
14648
diff
changeset
|
822 | #else |
|
6006e069317c
[gaim-migrate @ 17392]
Evan Schoenberg <evands@pidgin.im>
parents:
14648
diff
changeset
|
823 | return FALSE; |
|
6006e069317c
[gaim-migrate @ 17392]
Evan Schoenberg <evands@pidgin.im>
parents:
14648
diff
changeset
|
824 | #endif |
|
6006e069317c
[gaim-migrate @ 17392]
Evan Schoenberg <evands@pidgin.im>
parents:
14648
diff
changeset
|
825 | } |
|
6006e069317c
[gaim-migrate @ 17392]
Evan Schoenberg <evands@pidgin.im>
parents:
14648
diff
changeset
|
826 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
827 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
828 | * String Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
829 | **************************************************************************/ |
| 7162 | 830 | const char * |
|
39514
9c7715998bbc
Cleanup account.[ch] and status.[ch] to remove g_type_class_add_private and other cleans including remove const from accessors
Gary Kramlich <grim@reaperworld.com>
parents:
39479
diff
changeset
|
831 | purple_normalize(PurpleAccount *account, const char *str) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
832 | { |
| 7430 | 833 | const char *ret = NULL; |
|
16610
815ce4002357
sadrul fixed the next but not last crash
Luke Schierer <lschiere@pidgin.im>
parents:
16557
diff
changeset
|
834 | static char buf[BUF_LEN]; |
| 7261 | 835 | |
|
28410
184838e7f0c4
As darkrain pointed out this isnt caused by that certain bug in glib. My mistake. Recomment, and change how I test str to be NULL and return NULL.
Sulabh Mahajan <sulabh@pidgin.im>
parents:
28407
diff
changeset
|
836 | /* This should prevent a crash if purple_normalize gets called with NULL str, see #10115 */ |
|
184838e7f0c4
As darkrain pointed out this isnt caused by that certain bug in glib. My mistake. Recomment, and change how I test str to be NULL and return NULL.
Sulabh Mahajan <sulabh@pidgin.im>
parents:
28407
diff
changeset
|
837 | g_return_val_if_fail(str != NULL, ""); |
|
28407
821a151ef20c
g_utf8_normalize() for glib ver < 2.15.0 causes a crash when an invalid utf8 string is passed to it (http://bugzilla.gnome.org/show_bug.cgi?id=501997).
Sulabh Mahajan <sulabh@pidgin.im>
parents:
28390
diff
changeset
|
838 | |
|
13620
1374da61a5e2
[gaim-migrate @ 16005]
Richard Laager <rlaager@pidgin.im>
parents:
13616
diff
changeset
|
839 | if (account != NULL) |
|
13614
fa07a6cab773
[gaim-migrate @ 15999]
Richard Laager <rlaager@pidgin.im>
parents:
13586
diff
changeset
|
840 | { |
|
40804
5496016b3c00
Port libpurple from purple_protocols_ to purple_protocol_manager_
Gary Kramlich <grim@reaperworld.com>
parents:
40769
diff
changeset
|
841 | PurpleProtocol *protocol = purple_account_get_protocol(account); |
|
36369
0e67a57e7077
Refactored util to use PurplePluginProtocolInfo instead of prpl
Ankit Vani <a@nevitus.org>
parents:
36361
diff
changeset
|
842 | |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
843 | if(PURPLE_IS_PROTOCOL_CLIENT(protocol)) { |
|
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
844 | ret = purple_protocol_client_normalize(PURPLE_PROTOCOL_CLIENT(protocol), account, str); |
|
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
845 | } |
|
13614
fa07a6cab773
[gaim-migrate @ 15999]
Richard Laager <rlaager@pidgin.im>
parents:
13586
diff
changeset
|
846 | } |
|
fa07a6cab773
[gaim-migrate @ 15999]
Richard Laager <rlaager@pidgin.im>
parents:
13586
diff
changeset
|
847 | |
|
13621
788d329bdfa0
[gaim-migrate @ 16006]
Richard Laager <rlaager@pidgin.im>
parents:
13620
diff
changeset
|
848 | if (ret == NULL) |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
849 | { |
| 7261 | 850 | char *tmp; |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
851 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
852 | tmp = g_utf8_normalize(str, -1, G_NORMALIZE_DEFAULT); |
| 7261 | 853 | g_snprintf(buf, sizeof(buf), "%s", tmp); |
| 854 | g_free(tmp); | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
855 | |
| 7430 | 856 | ret = buf; |
| 7261 | 857 | } |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
858 | |
| 7430 | 859 | return ret; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
860 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
861 | |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
862 | /* |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
863 | * You probably don't want to call this directly, it is |
|
36637
9b0109ae118d
Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents:
36630
diff
changeset
|
864 | * mainly for use as a protocol callback function. See the |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
865 | * comments in util.h. |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
866 | */ |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
867 | const char * |
|
40637
08cb47165790
Fix a bug in purple_protocol_client_normalize which was requiring an account. Also remove the account parameter from purple_normalize_nocase as it wasn't used there.
Gary Kramlich <grim@reaperworld.com>
parents:
40634
diff
changeset
|
868 | purple_normalize_nocase(const char *str) |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
869 | { |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
870 | static char buf[BUF_LEN]; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
871 | char *tmp1, *tmp2; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
872 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
873 | g_return_val_if_fail(str != NULL, NULL); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
874 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
875 | tmp1 = g_utf8_strdown(str, -1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
876 | tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
|
13646
3bf958a5e352
[gaim-migrate @ 16043]
Daniel Atallah <datallah@pidgin.im>
parents:
13644
diff
changeset
|
877 | g_snprintf(buf, sizeof(buf), "%s", tmp2 ? tmp2 : ""); |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
878 | g_free(tmp2); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
879 | g_free(tmp1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
880 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
881 | return buf; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
882 | } |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
883 | |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
884 | gboolean |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
885 | purple_validate(PurpleProtocol *protocol, const char *str) |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
886 | { |
|
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
887 | const char *normalized; |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
888 | |
|
36544
1bf8b6ef5aea
Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
889 | g_return_val_if_fail(protocol != NULL, FALSE); |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
890 | g_return_val_if_fail(str != NULL, FALSE); |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
891 | |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
892 | if (str[0] == '\0') |
|
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
893 | return FALSE; |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
894 | |
|
39759
ea1401483849
Rename *_GET_*_IFACE to more standard *_GET_IFACE.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39527
diff
changeset
|
895 | if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, CLIENT, normalize)) |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
896 | return TRUE; |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
897 | |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
898 | normalized = purple_protocol_client_normalize(PURPLE_PROTOCOL_CLIENT(protocol), |
|
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
899 | NULL, str); |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
900 | |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
901 | return (NULL != normalized); |
|
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
902 | } |
|
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
903 | |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8686
diff
changeset
|
904 | gchar * |
| 15884 | 905 | purple_strdup_withhtml(const gchar *src) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
906 | { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
907 | gulong destsize, i, j; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
908 | gchar *dest; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
909 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
910 | g_return_val_if_fail(src != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
911 | |
|
13994
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
912 | /* New length is (length of src) + (number of \n's * 3) - (number of \r's) + 1 */ |
|
14002
fb323d3eefee
[gaim-migrate @ 16475]
Mark Doliner <markdoliner@pidgin.im>
parents:
13994
diff
changeset
|
913 | destsize = 1; |
|
fb323d3eefee
[gaim-migrate @ 16475]
Mark Doliner <markdoliner@pidgin.im>
parents:
13994
diff
changeset
|
914 | for (i = 0; src[i] != '\0'; i++) |
|
13994
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
915 | { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
916 | if (src[i] == '\n') |
|
13994
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
917 | destsize += 4; |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
918 | else if (src[i] != '\r') |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
919 | destsize++; |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
920 | } |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
921 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
922 | dest = g_malloc(destsize); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
923 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
924 | /* Copy stuff, ignoring \r's, because they are dumb */ |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
925 | for (i = 0, j = 0; src[i] != '\0'; i++) { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
926 | if (src[i] == '\n') { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
927 | strcpy(&dest[j], "<BR>"); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
928 | j += 4; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
929 | } else if (src[i] != '\r') |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
930 | dest[j++] = src[i]; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
931 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
932 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
933 | dest[destsize-1] = '\0'; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
934 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
935 | return dest; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
936 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
937 | |
| 7628 | 938 | gboolean |
|
35734
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
939 | purple_str_has_caseprefix(const gchar *s, const gchar *p) |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
940 | { |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
941 | g_return_val_if_fail(s, FALSE); |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
942 | g_return_val_if_fail(p, FALSE); |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
943 | |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
944 | return (g_ascii_strncasecmp(s, p, strlen(p)) == 0); |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
945 | } |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
946 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
947 | char * |
| 15884 | 948 | purple_str_add_cr(const char *text) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
949 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
950 | char *ret = NULL; |
| 7631 | 951 | int count = 0, j; |
| 952 | guint i; | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
953 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
954 | g_return_val_if_fail(text != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
955 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
956 | if (text[0] == '\n') |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
957 | count++; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
958 | for (i = 1; i < strlen(text); i++) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
959 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
960 | count++; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
961 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
962 | if (count == 0) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
963 | return g_strdup(text); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
964 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
965 | ret = g_malloc0(strlen(text) + count + 1); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
966 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
967 | i = 0; j = 0; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
968 | if (text[i] == '\n') |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
969 | ret[j++] = '\r'; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
970 | ret[j++] = text[i++]; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
971 | for (; i < strlen(text); i++) { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
972 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
973 | ret[j++] = '\r'; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
974 | ret[j++] = text[i]; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
975 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
976 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
977 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
978 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
979 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
980 | void |
| 15884 | 981 | purple_str_strip_char(char *text, char thechar) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
982 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
983 | int i, j; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
984 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
985 | g_return_if_fail(text != NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
986 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
987 | for (i = 0, j = 0; text[i]; i++) |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
988 | if (text[i] != thechar) |
|
11142
3ed4fc774b87
[gaim-migrate @ 13206]
Mark Doliner <markdoliner@pidgin.im>
parents:
11137
diff
changeset
|
989 | text[j++] = text[i]; |
|
3ed4fc774b87
[gaim-migrate @ 13206]
Mark Doliner <markdoliner@pidgin.im>
parents:
11137
diff
changeset
|
990 | |
|
30702
8a1938367841
These are dead increments.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30515
diff
changeset
|
991 | text[j] = '\0'; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
992 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
993 | |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
994 | void |
| 15884 | 995 | purple_util_chrreplace(char *string, char delimiter, |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
996 | char replacement) |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
997 | { |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
998 | int i = 0; |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
999 | |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1000 | g_return_if_fail(string != NULL); |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1001 | |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1002 | while (string[i] != '\0') |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1003 | { |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1004 | if (string[i] == delimiter) |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1005 | string[i] = replacement; |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1006 | i++; |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1007 | } |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1008 | } |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
1009 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1010 | gchar * |
| 15884 | 1011 | purple_strreplace(const char *string, const char *delimiter, |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1012 | const char *replacement) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1013 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1014 | gchar **split; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1015 | gchar *ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1016 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1017 | g_return_val_if_fail(string != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1018 | g_return_val_if_fail(delimiter != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1019 | g_return_val_if_fail(replacement != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1020 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1021 | split = g_strsplit(string, delimiter, 0); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1022 | ret = g_strjoinv(replacement, split); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1023 | g_strfreev(split); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1024 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1025 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1026 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1027 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1028 | gchar * |
| 15884 | 1029 | purple_strcasereplace(const char *string, const char *delimiter, |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1030 | const char *replacement) |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1031 | { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1032 | gchar *ret; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1033 | int length_del, length_rep, i, j; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1034 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1035 | g_return_val_if_fail(string != NULL, NULL); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1036 | g_return_val_if_fail(delimiter != NULL, NULL); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1037 | g_return_val_if_fail(replacement != NULL, NULL); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1038 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1039 | length_del = strlen(delimiter); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1040 | length_rep = strlen(replacement); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1041 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1042 | /* Count how many times the delimiter appears */ |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1043 | i = 0; /* position in the source string */ |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
8700
diff
changeset
|
1044 | j = 0; /* number of occurrences of "delimiter" */ |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1045 | while (string[i] != '\0') { |
|
18551
b66ed9a5408e
Replace some strncasecmp() calls with g_ascii_strncasecmp() as part of the
Nick Hebner <hebnern@gmail.com>
parents:
18317
diff
changeset
|
1046 | if (!g_ascii_strncasecmp(&string[i], delimiter, length_del)) { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1047 | i += length_del; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1048 | j += length_rep; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1049 | } else { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1050 | i++; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1051 | j++; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1052 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1053 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1054 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1055 | ret = g_malloc(j+1); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1056 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1057 | i = 0; /* position in the source string */ |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1058 | j = 0; /* position in the destination string */ |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1059 | while (string[i] != '\0') { |
|
18551
b66ed9a5408e
Replace some strncasecmp() calls with g_ascii_strncasecmp() as part of the
Nick Hebner <hebnern@gmail.com>
parents:
18317
diff
changeset
|
1060 | if (!g_ascii_strncasecmp(&string[i], delimiter, length_del)) { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1061 | strncpy(&ret[j], replacement, length_rep); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1062 | i += length_del; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1063 | j += length_rep; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1064 | } else { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1065 | ret[j] = string[i]; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1066 | i++; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1067 | j++; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1068 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1069 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1070 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1071 | ret[j] = '\0'; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1072 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1073 | return ret; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1074 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
1075 | |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1076 | /** TODO: Expose this when we can add API */ |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1077 | static const char * |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1078 | purple_strcasestr_len(const char *haystack, gssize hlen, const char *needle, gssize nlen) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1079 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1080 | const char *tmp, *ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1081 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1082 | g_return_val_if_fail(haystack != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1083 | g_return_val_if_fail(needle != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1084 | |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1085 | if (hlen == -1) |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1086 | hlen = strlen(haystack); |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1087 | if (nlen == -1) |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1088 | nlen = strlen(needle); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1089 | tmp = haystack, |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1090 | ret = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1091 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1092 | g_return_val_if_fail(hlen > 0, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1093 | g_return_val_if_fail(nlen > 0, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1094 | |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1095 | while (*tmp && !ret && (hlen - (tmp - haystack)) >= nlen) { |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1096 | if (!g_ascii_strncasecmp(needle, tmp, nlen)) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1097 | ret = tmp; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1098 | else |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1099 | tmp++; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1100 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1101 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1102 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1103 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1104 | |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1105 | const char * |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1106 | purple_strcasestr(const char *haystack, const char *needle) |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1107 | { |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1108 | return purple_strcasestr_len(haystack, -1, needle, -1); |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1109 | } |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
1110 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1111 | char * |
| 15884 | 1112 | purple_str_seconds_to_string(guint secs) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1113 | { |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1114 | char *ret = NULL; |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1115 | guint days, hrs, mins; |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1116 | |
| 9424 | 1117 | if (secs < 60) |
| 1118 | { | |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
1119 | return g_strdup_printf(dngettext(PACKAGE, "%d second", "%d seconds", secs), secs); |
| 9424 | 1120 | } |
| 1121 | ||
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1122 | days = secs / (60 * 60 * 24); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1123 | secs = secs % (60 * 60 * 24); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1124 | hrs = secs / (60 * 60); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1125 | secs = secs % (60 * 60); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1126 | mins = secs / 60; |
|
35382
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
1127 | /* secs = secs % 60; */ |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1128 | |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1129 | if (days > 0) |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1130 | { |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
1131 | ret = g_strdup_printf(dngettext(PACKAGE, "%d day", "%d days", days), days); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1132 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1133 | |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1134 | if (hrs > 0) |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1135 | { |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1136 | if (ret != NULL) |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1137 | { |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1138 | char *tmp = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
1139 | dngettext(PACKAGE, "%s, %d hour", "%s, %d hours", hrs), |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1140 | ret, hrs); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1141 | g_free(ret); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1142 | ret = tmp; |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1143 | } |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1144 | else |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
1145 | ret = g_strdup_printf(dngettext(PACKAGE, "%d hour", "%d hours", hrs), hrs); |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1146 | } |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1147 | |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1148 | if (mins > 0) |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1149 | { |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1150 | if (ret != NULL) |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1151 | { |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1152 | char *tmp = g_strdup_printf( |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
1153 | dngettext(PACKAGE, "%s, %d minute", "%s, %d minutes", mins), |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1154 | ret, mins); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1155 | g_free(ret); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1156 | ret = tmp; |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1157 | } |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1158 | else |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
1159 | ret = g_strdup_printf(dngettext(PACKAGE, "%d minute", "%d minutes", mins), mins); |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1160 | } |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
1161 | |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
1162 | return ret; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1163 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1164 | |
|
34145
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1165 | void |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1166 | purple_str_wipe(gchar *str) |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1167 | { |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1168 | if (str == NULL) |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1169 | return; |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1170 | memset(str, 0, strlen(str)); |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1171 | g_free(str); |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1172 | } |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
1173 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1174 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1175 | * URI/URL Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1176 | **************************************************************************/ |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1177 | |
| 15884 | 1178 | void purple_got_protocol_handler_uri(const char *uri) |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1179 | { |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1180 | char proto[11]; |
|
28136
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1181 | char delimiter; |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1182 | const char *tmp, *param_string; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1183 | char *cmd; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1184 | GHashTable *params = NULL; |
|
34304
faf0414a8b51
Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
34297
diff
changeset
|
1185 | gsize len; |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1186 | if (!(tmp = strchr(uri, ':')) || tmp == uri) { |
| 15884 | 1187 | purple_debug_error("util", "Malformed protocol handler message - missing protocol.\n"); |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1188 | return; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1189 | } |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1190 | |
|
36256
a437550a9308
Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
36037
diff
changeset
|
1191 | len = MIN(sizeof(proto) - 1, (gsize)(tmp - uri)); |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1192 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1193 | strncpy(proto, uri, len); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1194 | proto[len] = '\0'; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1195 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1196 | tmp++; |
|
28136
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1197 | |
|
38256
035f00c4fd87
Replace misused g_str_equal() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38229
diff
changeset
|
1198 | if (purple_strequal(proto, "xmpp")) |
|
28136
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1199 | delimiter = ';'; |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1200 | else |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1201 | delimiter = '&'; |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1202 | |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1203 | purple_debug_info("util", "Processing message '%s' for protocol '%s' using delimiter '%c'.\n", tmp, proto, delimiter); |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1204 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1205 | if ((param_string = strchr(tmp, '?'))) { |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1206 | const char *keyend = NULL, *pairstart; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1207 | char *key, *value = NULL; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1208 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1209 | cmd = g_strndup(tmp, (param_string - tmp)); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1210 | param_string++; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1211 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1212 | params = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1213 | pairstart = tmp = param_string; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1214 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1215 | while (*tmp || *pairstart) { |
|
28136
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
1216 | if (*tmp == delimiter || !(*tmp)) { |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1217 | /* If there is no explicit value */ |
|
35382
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
1218 | if (keyend == NULL) { |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1219 | keyend = tmp; |
|
35382
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
1220 | } |
|
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
1221 | /* without these brackets, clang won't |
|
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
1222 | * recognize tmp as a non-NULL |
|
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
1223 | */ |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1224 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1225 | if (keyend && keyend != pairstart) { |
|
17145
463085404f54
Patch #756 from EvilSporkMan. Use Datallah's url handling for Dbus
Sean Egan <seanegan@pidgin.im>
parents:
17143
diff
changeset
|
1226 | char *p; |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1227 | key = g_strndup(pairstart, (keyend - pairstart)); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1228 | /* If there is an explicit value */ |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1229 | if (keyend != tmp && keyend != (tmp - 1)) |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1230 | value = g_strndup(keyend + 1, (tmp - keyend - 1)); |
|
17145
463085404f54
Patch #756 from EvilSporkMan. Use Datallah's url handling for Dbus
Sean Egan <seanegan@pidgin.im>
parents:
17143
diff
changeset
|
1231 | for (p = key; *p; ++p) |
|
463085404f54
Patch #756 from EvilSporkMan. Use Datallah's url handling for Dbus
Sean Egan <seanegan@pidgin.im>
parents:
17143
diff
changeset
|
1232 | *p = g_ascii_tolower(*p); |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1233 | g_hash_table_insert(params, key, value); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1234 | } |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1235 | keyend = value = NULL; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1236 | pairstart = (*tmp) ? tmp + 1 : tmp; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1237 | } else if (*tmp == '=') |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1238 | keyend = tmp; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1239 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1240 | if (*tmp) |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1241 | tmp++; |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1242 | } |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1243 | } else |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1244 | cmd = g_strdup(tmp); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1245 | |
| 15884 | 1246 | purple_signal_emit_return_1(purple_get_core(), "uri-handler", proto, cmd, params); |
|
15678
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1247 | |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1248 | g_free(cmd); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1249 | if (params) |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1250 | g_hash_table_destroy(params); |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1251 | } |
|
7434ef155a3a
Core support for external protocol URIs. The actual handling of the URIs will be in the prpls and other plugins. This commit only includes the win32 method of actually passing in a URI - the dbus implementation still needs to be written.
Daniel Atallah <datallah@pidgin.im>
parents:
15482
diff
changeset
|
1252 | |
| 7162 | 1253 | const char * |
| 15884 | 1254 | purple_url_decode(const char *str) |
| 7134 | 1255 | { |
| 1256 | static char buf[BUF_LEN]; | |
| 7631 | 1257 | guint i, j = 0; |
| 7134 | 1258 | char *bum; |
|
9804
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1259 | char hex[3]; |
| 7134 | 1260 | |
| 1261 | g_return_val_if_fail(str != NULL, NULL); | |
| 1262 | ||
|
9804
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1263 | /* |
|
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1264 | * XXX - This check could be removed and buf could be made |
|
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1265 | * dynamically allocated, but this is easier. |
|
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1266 | */ |
|
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1267 | if (strlen(str) >= BUF_LEN) |
|
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1268 | return NULL; |
|
1fbe747c77aa
[gaim-migrate @ 10672]
Mark Doliner <markdoliner@pidgin.im>
parents:
9786
diff
changeset
|
1269 | |
| 7134 | 1270 | for (i = 0; i < strlen(str); i++) { |
| 1271 | ||
| 1272 | if (str[i] != '%') | |
| 1273 | buf[j++] = str[i]; | |
| 1274 | else { | |
| 1275 | strncpy(hex, str + ++i, 2); | |
| 1276 | hex[2] = '\0'; | |
| 1277 | ||
| 1278 | /* i is pointing to the start of the number */ | |
| 1279 | i++; | |
| 1280 | ||
| 1281 | /* | |
| 1282 | * Now it's at the end and at the start of the for loop | |
| 1283 | * will be at the next character. | |
| 1284 | */ | |
| 1285 | buf[j++] = strtol(hex, NULL, 16); | |
| 1286 | } | |
| 1287 | } | |
| 1288 | ||
| 1289 | buf[j] = '\0'; | |
| 1290 | ||
| 1291 | if (!g_utf8_validate(buf, -1, (const char **)&bum)) | |
| 1292 | *bum = '\0'; | |
| 1293 | ||
| 1294 | return buf; | |
| 1295 | } | |
| 1296 | ||
| 7162 | 1297 | const char * |
| 15884 | 1298 | purple_url_encode(const char *str) |
| 7134 | 1299 | { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1300 | const char *iter; |
| 7134 | 1301 | static char buf[BUF_LEN]; |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1302 | char utf_char[6]; |
| 7631 | 1303 | guint i, j = 0; |
| 7134 | 1304 | |
| 1305 | g_return_val_if_fail(str != NULL, NULL); | |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1306 | g_return_val_if_fail(g_utf8_validate(str, -1, NULL), NULL); |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1307 | |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1308 | iter = str; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1309 | for (; *iter && j < (BUF_LEN - 1) ; iter = g_utf8_next_char(iter)) { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1310 | gunichar c = g_utf8_get_char(iter); |
|
10800
00a2c404c1dc
[gaim-migrate @ 12446]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10732
diff
changeset
|
1311 | /* If the character is an ASCII character and is alphanumeric |
|
00a2c404c1dc
[gaim-migrate @ 12446]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10732
diff
changeset
|
1312 | * no need to escape */ |
|
28538
fb879aa298ee
Change purple_url_encode() to not encode . _ - ~ because it's not
Mark Doliner <markdoliner@pidgin.im>
parents:
28438
diff
changeset
|
1313 | if (c < 128 && (isalnum(c) || c == '-' || c == '.' || c == '_' || c == '~')) { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1314 | buf[j++] = c; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1315 | } else { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1316 | int bytes = g_unichar_to_utf8(c, utf_char); |
|
36256
a437550a9308
Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
36037
diff
changeset
|
1317 | for (i = 0; (int)i < bytes; i++) { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1318 | if (j > (BUF_LEN - 4)) |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1319 | break; |
|
36037
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1320 | if (i >= sizeof(utf_char)) { |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1321 | g_warn_if_reached(); |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1322 | break; |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1323 | } |
|
28538
fb879aa298ee
Change purple_url_encode() to not encode . _ - ~ because it's not
Mark Doliner <markdoliner@pidgin.im>
parents:
28438
diff
changeset
|
1324 | sprintf(buf + j, "%%%02X", utf_char[i] & 0xff); |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1325 | j += 3; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1326 | } |
| 7134 | 1327 | } |
| 1328 | } | |
| 1329 | ||
| 1330 | buf[j] = '\0'; | |
| 1331 | ||
| 1332 | return buf; | |
| 1333 | } | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1334 | |
| 9054 | 1335 | /* Originally lifted from |
| 1336 | * http://www.oreillynet.com/pub/a/network/excerpt/spcookbook_chap03/index3.html | |
| 1337 | * ... and slightly modified to be a bit more rfc822 compliant | |
| 1338 | * ... and modified a bit more to make domain checking rfc1035 compliant | |
| 1339 | * with the exception permitted in rfc1101 for domains to start with digit | |
| 1340 | * but not completely checking to avoid conflicts with IP addresses | |
| 1341 | */ | |
| 9045 | 1342 | gboolean |
| 15884 | 1343 | purple_email_is_valid(const char *address) |
| 9045 | 1344 | { |
| 1345 | const char *c, *domain; | |
| 1346 | static char *rfc822_specials = "()<>@,;:\\\"[]"; | |
| 1347 | ||
| 24645 | 1348 | g_return_val_if_fail(address != NULL, FALSE); |
| 1349 | ||
|
30444
d871c3fd6637
Catch some more invalid email addresses, thanks to Mark for additional
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
30437
diff
changeset
|
1350 | if (*address == '.') return FALSE; |
|
d871c3fd6637
Catch some more invalid email addresses, thanks to Mark for additional
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
30437
diff
changeset
|
1351 | |
| 9054 | 1352 | /* first we validate the name portion (name@domain) (rfc822)*/ |
| 9045 | 1353 | for (c = address; *c; c++) { |
| 1354 | if (*c == '\"' && (c == address || *(c - 1) == '.' || *(c - 1) == '\"')) { | |
| 1355 | while (*++c) { | |
| 9054 | 1356 | if (*c == '\\') { |
|
38922
9f05d7f41a53
purple_email_is_valid: fix out of bounds read
dx <dx@dxzone.com.ar>
parents:
38737
diff
changeset
|
1357 | if (*c++ && *c < 127 && *c > 0 && *c != '\n' && *c != '\r') continue; |
| 9054 | 1358 | else return FALSE; |
| 1359 | } | |
| 9045 | 1360 | if (*c == '\"') break; |
| 9054 | 1361 | if (*c < ' ' || *c >= 127) return FALSE; |
| 9045 | 1362 | } |
| 1363 | if (!*c++) return FALSE; | |
| 1364 | if (*c == '@') break; | |
| 1365 | if (*c != '.') return FALSE; | |
| 1366 | continue; | |
| 1367 | } | |
| 1368 | if (*c == '@') break; | |
| 1369 | if (*c <= ' ' || *c >= 127) return FALSE; | |
| 1370 | if (strchr(rfc822_specials, *c)) return FALSE; | |
| 1371 | } | |
|
18871
078df6ae587a
Valgrind was showing "Invalid read of size 1" when a string is passed
Mark Doliner <markdoliner@pidgin.im>
parents:
18813
diff
changeset
|
1372 | |
|
078df6ae587a
Valgrind was showing "Invalid read of size 1" when a string is passed
Mark Doliner <markdoliner@pidgin.im>
parents:
18813
diff
changeset
|
1373 | /* It's obviously not an email address if we didn't find an '@' above */ |
|
078df6ae587a
Valgrind was showing "Invalid read of size 1" when a string is passed
Mark Doliner <markdoliner@pidgin.im>
parents:
18813
diff
changeset
|
1374 | if (*c == '\0') return FALSE; |
|
078df6ae587a
Valgrind was showing "Invalid read of size 1" when a string is passed
Mark Doliner <markdoliner@pidgin.im>
parents:
18813
diff
changeset
|
1375 | |
| 9054 | 1376 | /* strictly we should return false if (*(c - 1) == '.') too, but I think |
| 1377 | * we should permit user.@domain type addresses - they do work :) */ | |
| 1378 | if (c == address) return FALSE; | |
| 1379 | ||
| 1380 | /* next we validate the domain portion (name@domain) (rfc1035 & rfc1011) */ | |
| 9045 | 1381 | if (!*(domain = ++c)) return FALSE; |
| 1382 | do { | |
| 9054 | 1383 | if (*c == '.' && (c == domain || *(c - 1) == '.' || *(c - 1) == '-')) |
| 1384 | return FALSE; | |
|
30444
d871c3fd6637
Catch some more invalid email addresses, thanks to Mark for additional
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
30437
diff
changeset
|
1385 | if (*c == '-' && (*(c - 1) == '.' || *(c - 1) == '@')) return FALSE; |
| 9054 | 1386 | if ((*c < '0' && *c != '-' && *c != '.') || (*c > '9' && *c < 'A') || |
| 1387 | (*c > 'Z' && *c < 'a') || (*c > 'z')) return FALSE; | |
| 9045 | 1388 | } while (*++c); |
| 1389 | ||
| 9054 | 1390 | if (*(c - 1) == '-') return FALSE; |
| 1391 | ||
| 1392 | return ((c - domain) > 3 ? TRUE : FALSE); | |
| 9045 | 1393 | } |
| 1394 | ||
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
1395 | /* Stolen from gnome_uri_list_extract_uris */ |
|
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
1396 | GList * |
| 15884 | 1397 | purple_uri_list_extract_uris(const gchar *uri_list) |
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
1398 | { |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1399 | const gchar *p, *q; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1400 | gchar *retval; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1401 | GList *result = NULL; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1402 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1403 | g_return_val_if_fail (uri_list != NULL, NULL); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1404 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1405 | p = uri_list; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1406 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1407 | /* We don't actually try to validate the URI according to RFC |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1408 | * 2396, or even check for allowed characters - we just ignore |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1409 | * comments and trim whitespace off the ends. We also |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1410 | * allow LF delimination as well as the specified CRLF. |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1411 | */ |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1412 | while (p) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1413 | if (*p != '#') { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1414 | while (isspace(*p)) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1415 | p++; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1416 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1417 | q = p; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1418 | while (*q && (*q != '\n') && (*q != '\r')) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1419 | q++; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1420 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1421 | if (q > p) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1422 | q--; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1423 | while (q > p && isspace(*q)) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1424 | q--; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1425 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1426 | retval = (gchar*)g_malloc (q - p + 2); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1427 | strncpy (retval, p, q - p + 1); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1428 | retval[q - p + 1] = '\0'; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1429 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1430 | result = g_list_prepend (result, retval); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1431 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1432 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1433 | p = strchr (p, '\n'); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1434 | if (p) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1435 | p++; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1436 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1437 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1438 | return g_list_reverse (result); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1439 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1440 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1441 | |
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
1442 | /* Stolen from gnome_uri_list_extract_filenames */ |
|
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
1443 | GList * |
| 15884 | 1444 | purple_uri_list_extract_filenames(const gchar *uri_list) |
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
1445 | { |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1446 | GList *tmp_list, *node, *result; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1447 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1448 | g_return_val_if_fail (uri_list != NULL, NULL); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1449 | |
| 15884 | 1450 | result = purple_uri_list_extract_uris(uri_list); |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1451 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1452 | tmp_list = result; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1453 | while (tmp_list) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1454 | gchar *s = (gchar*)tmp_list->data; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1455 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1456 | node = tmp_list; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1457 | tmp_list = tmp_list->next; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1458 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1459 | if (!strncmp (s, "file:", 5)) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1460 | node->data = g_filename_from_uri (s, NULL, NULL); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1461 | /* not sure if this fallback is useful at all */ |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1462 | if (!node->data) node->data = g_strdup (s+5); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1463 | } else { |
|
23028
b17c77748d6d
Fix some potential leakage in the craziness called purple_markup_html_to_xhtml().
Daniel Atallah <datallah@pidgin.im>
parents:
22622
diff
changeset
|
1464 | result = g_list_delete_link(result, node); |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1465 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1466 | g_free (s); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1467 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1468 | return result; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
1469 | } |
| 9054 | 1470 | |
|
38737
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1471 | char * |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1472 | purple_uri_escape_for_open(const char *unescaped) |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1473 | { |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1474 | /* Replace some special characters like $ with their percent-encoded value. |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1475 | * This shouldn't be necessary because we shell-escape the entire arg before |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1476 | * exec'ing the browser, however, we had a report that a URL containing |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1477 | * $(xterm) was causing xterm to start on his system. This is obviously a |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1478 | * bug on his system, but it's pretty easy for us to protect against it. */ |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1479 | return g_uri_escape_string(unescaped, "[]:;/%#,+?=&@", FALSE); |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1480 | } |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
1481 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1482 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1483 | * UTF8 String Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1484 | **************************************************************************/ |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1485 | gchar * |
| 15884 | 1486 | purple_utf8_try_convert(const char *str) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1487 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1488 | gsize converted; |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1489 | gchar *utf8; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1490 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1491 | g_return_val_if_fail(str != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1492 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1493 | if (g_utf8_validate(str, -1, NULL)) { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1494 | return g_strdup(str); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1495 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1496 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1497 | utf8 = g_locale_to_utf8(str, -1, &converted, NULL, NULL); |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1498 | if (utf8 != NULL) |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1499 | return utf8; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1500 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1501 | utf8 = g_convert(str, -1, "UTF-8", "ISO-8859-15", &converted, NULL, NULL); |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1502 | if ((utf8 != NULL) && (converted == strlen(str))) |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1503 | return utf8; |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1504 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14002
diff
changeset
|
1505 | g_free(utf8); |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1506 | |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
1507 | return NULL; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1508 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1509 | |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1510 | gchar * |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1511 | purple_utf8_strip_unprintables(const gchar *str) |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1512 | { |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1513 | gchar *workstr, *iter; |
|
28389
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
1514 | const gchar *bad; |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1515 | |
|
27243
fb50a38b034b
Strip unprintable UTF-8 characters from buddy list strings. Fixes #8776.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1516 | if (str == NULL) |
|
fb50a38b034b
Strip unprintable UTF-8 characters from buddy list strings. Fixes #8776.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1517 | /* Act like g_strdup */ |
|
fb50a38b034b
Strip unprintable UTF-8 characters from buddy list strings. Fixes #8776.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1518 | return NULL; |
|
fb50a38b034b
Strip unprintable UTF-8 characters from buddy list strings. Fixes #8776.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
1519 | |
|
28390
5c701ddc9c81
Oops, I think it's either sleep or coffee time.
Paul Aurich <darkrain42@pidgin.im>
parents:
28389
diff
changeset
|
1520 | if (!g_utf8_validate(str, -1, &bad)) { |
|
28389
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
1521 | purple_debug_error("util", "purple_utf8_strip_unprintables(%s) failed; " |
|
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
1522 | "first bad character was %02x (%c)\n", |
|
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
1523 | str, *bad, *bad); |
|
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
1524 | g_return_val_if_reached(NULL); |
|
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
1525 | } |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1526 | |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1527 | workstr = iter = g_new(gchar, strlen(str) + 1); |
|
30143
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1528 | while (*str) { |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1529 | gunichar ch = g_utf8_get_char(str); |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1530 | gchar *next = g_utf8_next_char(str); |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1531 | /* |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1532 | * Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1533 | * [#x10000-#x10FFFF] |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1534 | */ |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1535 | if ((ch == '\t' || ch == '\n' || ch == '\r') || |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1536 | (ch >= 0x20 && ch <= 0xD7FF) || |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1537 | (ch >= 0xE000 && ch <= 0xFFFD) || |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1538 | (ch >= 0x10000 && ch <= 0x10FFFF)) { |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1539 | memcpy(iter, str, next - str); |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1540 | iter += (next - str); |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1541 | } |
|
30143
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1542 | |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
1543 | str = next; |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1544 | } |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1545 | |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1546 | /* nul-terminate the new string */ |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1547 | *iter = '\0'; |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1548 | |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1549 | return workstr; |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1550 | } |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
1551 | |
|
21978
637cf8396faf
Add a comment that I took this from glib
Mark Doliner <markdoliner@pidgin.im>
parents:
21977
diff
changeset
|
1552 | /* |
|
637cf8396faf
Add a comment that I took this from glib
Mark Doliner <markdoliner@pidgin.im>
parents:
21977
diff
changeset
|
1553 | * This function is copied from g_strerror() but changed to use |
|
637cf8396faf
Add a comment that I took this from glib
Mark Doliner <markdoliner@pidgin.im>
parents:
21977
diff
changeset
|
1554 | * gai_strerror(). |
|
637cf8396faf
Add a comment that I took this from glib
Mark Doliner <markdoliner@pidgin.im>
parents:
21977
diff
changeset
|
1555 | */ |
|
32737
44c6902e2348
G_CONST_RETURN has been deprecated, use const instead
Gary Kramlich <grim@reaperworld.com>
parents:
32663
diff
changeset
|
1556 | const gchar * |
|
21977
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1557 | purple_gai_strerror(gint errnum) |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1558 | { |
|
35978
c0b60f37a7db
Backport warning fixes for libpurple from default
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35966
diff
changeset
|
1559 | static GPrivate msg_private = G_PRIVATE_INIT(g_free); |
|
21977
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1560 | char *msg; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1561 | int saved_errno = errno; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1562 | |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1563 | const char *msg_locale; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1564 | |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1565 | msg_locale = gai_strerror(errnum); |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1566 | if (g_get_charset(NULL)) |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1567 | { |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1568 | /* This string is already UTF-8--great! */ |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1569 | errno = saved_errno; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1570 | return msg_locale; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1571 | } |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1572 | else |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1573 | { |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1574 | gchar *msg_utf8 = g_locale_to_utf8(msg_locale, -1, NULL, NULL, NULL); |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1575 | if (msg_utf8) |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1576 | { |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1577 | /* Stick in the quark table so that we can return a static result */ |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1578 | GQuark msg_quark = g_quark_from_string(msg_utf8); |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1579 | g_free(msg_utf8); |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1580 | |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1581 | msg_utf8 = (gchar *)g_quark_to_string(msg_quark); |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1582 | errno = saved_errno; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1583 | return msg_utf8; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1584 | } |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1585 | } |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1586 | |
|
35978
c0b60f37a7db
Backport warning fixes for libpurple from default
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35966
diff
changeset
|
1587 | msg = g_private_get(&msg_private); |
|
38045
6e8b223df524
Remove GLIB_CHECK_VERSION <= 2.36 calls
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
1588 | |
|
21977
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1589 | if (!msg) |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1590 | { |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1591 | msg = g_new(gchar, 64); |
|
35978
c0b60f37a7db
Backport warning fixes for libpurple from default
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35966
diff
changeset
|
1592 | g_private_set(&msg_private, msg); |
|
21977
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1593 | } |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1594 | |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1595 | sprintf(msg, "unknown error (%d)", errnum); |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1596 | |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1597 | errno = saved_errno; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1598 | return msg; |
|
c87889698afb
Create a purple_gai_strerror() function similar to g_str_error() which
Mark Doliner <markdoliner@pidgin.im>
parents:
21909
diff
changeset
|
1599 | } |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1600 | |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1601 | char * |
| 15884 | 1602 | purple_utf8_ncr_encode(const char *str) |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1603 | { |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1604 | GString *out; |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1605 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1606 | g_return_val_if_fail(str != NULL, NULL); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1607 | g_return_val_if_fail(g_utf8_validate(str, -1, NULL), NULL); |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1608 | |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1609 | out = g_string_new(""); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1610 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1611 | for(; *str; str = g_utf8_next_char(str)) { |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1612 | gunichar wc = g_utf8_get_char(str); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1613 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1614 | /* super simple check. hopefully not too wrong. */ |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
1615 | if(wc >= 0x80) { |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1616 | g_string_append_printf(out, "&#%u;", (guint32) wc); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1617 | } else { |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1618 | g_string_append_unichar(out, wc); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1619 | } |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1620 | } |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1621 | |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1622 | return g_string_free(out, FALSE); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1623 | } |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1624 | |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1625 | |
| 9161 | 1626 | char * |
| 15884 | 1627 | purple_utf8_ncr_decode(const char *str) |
| 9161 | 1628 | { |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1629 | GString *out; |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1630 | char *buf, *b; |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1631 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1632 | g_return_val_if_fail(str != NULL, NULL); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1633 | g_return_val_if_fail(g_utf8_validate(str, -1, NULL), NULL); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1634 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1635 | buf = (char *) str; |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1636 | out = g_string_new(""); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
1637 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1638 | while( (b = strstr(buf, "&#")) ) { |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1639 | gunichar wc; |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1640 | int base = 0; |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
1641 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1642 | /* append everything leading up to the &# */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1643 | g_string_append_len(out, buf, b-buf); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1644 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1645 | b += 2; /* skip past the &# */ |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
1646 | |
|
13489
6fbb8904f434
[gaim-migrate @ 15864]
Christopher O'Brien <siege@pidgin.im>
parents:
13465
diff
changeset
|
1647 | /* strtoul will treat 0x prefix as hex, but not just x */ |
|
6fbb8904f434
[gaim-migrate @ 15864]
Christopher O'Brien <siege@pidgin.im>
parents:
13465
diff
changeset
|
1648 | if(*b == 'x' || *b == 'X') { |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1649 | base = 16; |
|
13489
6fbb8904f434
[gaim-migrate @ 15864]
Christopher O'Brien <siege@pidgin.im>
parents:
13465
diff
changeset
|
1650 | b++; |
|
6fbb8904f434
[gaim-migrate @ 15864]
Christopher O'Brien <siege@pidgin.im>
parents:
13465
diff
changeset
|
1651 | } |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1652 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1653 | /* advances buf to the end of the ncr segment */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1654 | wc = (gunichar) strtoul(b, &buf, base); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1655 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1656 | /* this mimics the previous impl of ncr_decode */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1657 | if(*buf == ';') { |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1658 | g_string_append_unichar(out, wc); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1659 | buf++; |
| 9161 | 1660 | } |
| 1661 | } | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1662 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1663 | /* append whatever's left */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1664 | g_string_append(out, buf); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1665 | |
| 9161 | 1666 | return g_string_free(out, FALSE); |
| 1667 | } | |
| 1668 | ||
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
1669 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1670 | int |
| 15884 | 1671 | purple_utf8_strcasecmp(const char *a, const char *b) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1672 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1673 | char *a_norm = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1674 | char *b_norm = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1675 | int ret = -1; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1676 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1677 | if(!a && b) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1678 | return -1; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1679 | else if(!b && a) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1680 | return 1; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1681 | else if(!a && !b) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1682 | return 0; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1683 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1684 | if(!g_utf8_validate(a, -1, NULL) || !g_utf8_validate(b, -1, NULL)) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1685 | { |
| 15884 | 1686 | purple_debug_error("purple_utf8_strcasecmp", |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1687 | "One or both parameters are invalid UTF8\n"); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1688 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1689 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1690 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1691 | a_norm = g_utf8_casefold(a, -1); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1692 | b_norm = g_utf8_casefold(b, -1); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1693 | ret = g_utf8_collate(a_norm, b_norm); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1694 | g_free(a_norm); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1695 | g_free(b_norm); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1696 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1697 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
1698 | } |
| 7162 | 1699 | |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1700 | /* previously conversation::find_nick() */ |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
1701 | gboolean |
| 15884 | 1702 | purple_utf8_has_word(const char *haystack, const char *needle) |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1703 | { |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1704 | char *hay, *pin, *p; |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1705 | const char *start, *prev_char; |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1706 | gunichar before, after; |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1707 | int n; |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1708 | gboolean ret = FALSE; |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1709 | |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1710 | start = hay = g_utf8_strdown(haystack, -1); |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1711 | |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1712 | pin = g_utf8_strdown(needle, -1); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1713 | n = strlen(pin); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1714 | |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1715 | while ((p = strstr(start, pin)) != NULL) { |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1716 | prev_char = g_utf8_find_prev_char(hay, p); |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1717 | before = -2; |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1718 | if (prev_char) { |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1719 | before = g_utf8_get_char(prev_char); |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1720 | } |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1721 | after = g_utf8_get_char_validated(p + n, - 1); |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1722 | |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1723 | if ((p == hay || |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1724 | /* The character before is a reasonable guess for a word boundary |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1725 | ("!g_unichar_isalnum()" is not a valid way to determine word |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1726 | boundaries, but it is the only reasonable thing to do here), |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1727 | and isn't the '&' from a "&" or some such entity*/ |
|
36256
a437550a9308
Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
36037
diff
changeset
|
1728 | (before != (gunichar)-2 && !g_unichar_isalnum(before) && *(p - 1) != '&')) |
|
a437550a9308
Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
36037
diff
changeset
|
1729 | && after != (gunichar)-2 && !g_unichar_isalnum(after)) { |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1730 | ret = TRUE; |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1731 | break; |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1732 | } |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
1733 | start = p + 1; |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1734 | } |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1735 | |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1736 | g_free(pin); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1737 | g_free(hay); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1738 | |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1739 | return ret; |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1740 | } |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
1741 | |
|
19585
14b519abcc26
Fix some conversion warnings about using negative values with unsigned types. There are more, but these were easy fixes. You may think that I'm changing the API, but I'm really not - it was just wrong.
Daniel Atallah <datallah@pidgin.im>
parents:
19327
diff
changeset
|
1742 | gboolean purple_message_meify(char *message, gssize len) |
| 7564 | 1743 | { |
| 1744 | char *c; | |
| 1745 | gboolean inside_html = FALSE; | |
| 1746 | ||
| 1747 | g_return_val_if_fail(message != NULL, FALSE); | |
| 1748 | ||
| 1749 | if(len == -1) | |
| 1750 | len = strlen(message); | |
| 1751 | ||
| 1752 | for (c = message; *c; c++, len--) { | |
| 1753 | if(inside_html) { | |
| 1754 | if(*c == '>') | |
| 1755 | inside_html = FALSE; | |
| 1756 | } else { | |
| 1757 | if(*c == '<') | |
| 1758 | inside_html = TRUE; | |
| 1759 | else | |
| 1760 | break; | |
| 1761 | } | |
| 1762 | } | |
| 1763 | ||
| 1764 | if(*c && !g_ascii_strncasecmp(c, "/me ", 4)) { | |
| 1765 | memmove(c, c+4, len-3); | |
| 1766 | return TRUE; | |
| 1767 | } | |
| 1768 | ||
| 1769 | return FALSE; | |
| 1770 | } | |
| 1771 | ||
| 15884 | 1772 | char *purple_text_strip_mnemonic(const char *in) |
| 7889 | 1773 | { |
| 1774 | char *out; | |
| 1775 | char *a; | |
| 8561 | 1776 | char *a0; |
| 7889 | 1777 | const char *b; |
| 1778 | ||
| 1779 | g_return_val_if_fail(in != NULL, NULL); | |
| 1780 | ||
| 1781 | out = g_malloc(strlen(in)+1); | |
| 1782 | a = out; | |
| 1783 | b = in; | |
| 1784 | ||
| 8561 | 1785 | a0 = a; /* The last non-space char seen so far, or the first char */ |
| 1786 | ||
| 7889 | 1787 | while(*b) { |
| 1788 | if(*b == '_') { | |
| 8561 | 1789 | if(a > out && b > in && *(b-1) == '(' && *(b+1) && !(*(b+1) & 0x80) && *(b+2) == ')') { |
| 1790 | /* Detected CJK style shortcut (Bug 875311) */ | |
| 1791 | a = a0; /* undo the left parenthesis */ | |
| 1792 | b += 3; /* and skip the whole mess */ | |
| 1793 | } else if(*(b+1) == '_') { | |
| 7889 | 1794 | *(a++) = '_'; |
| 1795 | b += 2; | |
| 8561 | 1796 | a0 = a; |
| 7889 | 1797 | } else { |
| 1798 | b++; | |
| 1799 | } | |
| 8561 | 1800 | /* We don't want to corrupt the middle of UTF-8 characters */ |
| 1801 | } else if (!(*b & 0x80)) { /* other 1-byte char */ | |
| 1802 | if (*b != ' ') | |
| 1803 | a0 = a; | |
| 1804 | *(a++) = *(b++); | |
| 7889 | 1805 | } else { |
| 8561 | 1806 | /* Multibyte utf8 char, don't look for _ inside these */ |
| 1807 | int n = 0; | |
| 1808 | int i; | |
| 1809 | if ((*b & 0xe0) == 0xc0) { | |
| 1810 | n = 2; | |
| 1811 | } else if ((*b & 0xf0) == 0xe0) { | |
| 1812 | n = 3; | |
| 1813 | } else if ((*b & 0xf8) == 0xf0) { | |
| 1814 | n = 4; | |
| 1815 | } else if ((*b & 0xfc) == 0xf8) { | |
| 1816 | n = 5; | |
| 1817 | } else if ((*b & 0xfe) == 0xfc) { | |
| 1818 | n = 6; | |
| 1819 | } else { /* Illegal utf8 */ | |
| 1820 | n = 1; | |
| 1821 | } | |
| 1822 | a0 = a; /* unless we want to delete CJK spaces too */ | |
| 1823 | for (i = 0; i < n && *b; i += 1) { | |
| 1824 | *(a++) = *(b++); | |
| 1825 | } | |
| 7889 | 1826 | } |
| 1827 | } | |
| 1828 | *a = '\0'; | |
| 1829 | ||
| 1830 | return out; | |
| 1831 | } | |
| 1832 | ||
| 15884 | 1833 | const char* purple_unescape_filename(const char *escaped) { |
| 1834 | return purple_url_decode(escaped); | |
| 9926 | 1835 | } |
| 1836 | ||
| 1837 | ||
| 15884 | 1838 | /* this is almost identical to purple_url_encode (hence purple_url_decode |
| 9926 | 1839 | * being used above), but we want to keep certain characters unescaped |
| 1840 | * for compat reasons */ | |
| 1841 | const char * | |
| 15884 | 1842 | purple_escape_filename(const char *str) |
| 9926 | 1843 | { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1844 | const char *iter; |
| 9926 | 1845 | static char buf[BUF_LEN]; |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1846 | char utf_char[6]; |
| 9926 | 1847 | guint i, j = 0; |
| 1848 | ||
| 1849 | g_return_val_if_fail(str != NULL, NULL); | |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1850 | g_return_val_if_fail(g_utf8_validate(str, -1, NULL), NULL); |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1851 | |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1852 | iter = str; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1853 | for (; *iter && j < (BUF_LEN - 1) ; iter = g_utf8_next_char(iter)) { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1854 | gunichar c = g_utf8_get_char(iter); |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1855 | /* If the character is an ASCII character and is alphanumeric, |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1856 | * or one of the specified values, no need to escape */ |
|
17261
65aa3164dcce
If we're operating on ASCII characters only, we should use g_ascii_isalnum.
Richard Laager <rlaager@pidgin.im>
parents:
17254
diff
changeset
|
1857 | if (c < 128 && (g_ascii_isalnum(c) || c == '@' || c == '-' || |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1858 | c == '_' || c == '.' || c == '#')) { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1859 | buf[j++] = c; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1860 | } else { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1861 | int bytes = g_unichar_to_utf8(c, utf_char); |
|
36256
a437550a9308
Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
36037
diff
changeset
|
1862 | for (i = 0; (int)i < bytes; i++) { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1863 | if (j > (BUF_LEN - 4)) |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1864 | break; |
|
36037
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1865 | if (i >= sizeof(utf_char)) { |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1866 | g_warn_if_reached(); |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1867 | break; |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1868 | } |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1869 | sprintf(buf + j, "%%%02x", utf_char[i] & 0xff); |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1870 | j += 3; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1871 | } |
| 9926 | 1872 | } |
| 1873 | } | |
|
30414
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1874 | #ifdef _WIN32 |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1875 | /* File/Directory names in windows cannot end in periods/spaces. |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1876 | * http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1877 | */ |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1878 | while (j > 0 && (buf[j - 1] == '.' || buf[j - 1] == ' ')) |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1879 | j--; |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1880 | #endif |
| 9926 | 1881 | buf[j] = '\0'; |
| 1882 | ||
| 1883 | return buf; | |
| 1884 | } | |
| 1885 | ||
|
22217
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1886 | static void |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1887 | set_status_with_attrs(PurpleStatus *status, ...) |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1888 | { |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1889 | va_list args; |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1890 | va_start(args, status); |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1891 | purple_status_set_active_with_attrs(status, TRUE, args); |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1892 | va_end(args); |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1893 | } |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1894 | |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1895 | void purple_util_set_current_song(const char *title, const char *artist, const char *album) |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1896 | { |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1897 | GList *list = purple_accounts_get_all(); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1898 | for (; list; list = list->next) { |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1899 | PurplePresence *presence; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1900 | PurpleStatus *tune; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1901 | PurpleAccount *account = list->data; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1902 | if (!purple_account_get_enabled(account, purple_core_get_ui())) |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1903 | continue; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1904 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1905 | presence = purple_account_get_presence(account); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1906 | tune = purple_presence_get_status(presence, "tune"); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1907 | if (!tune) |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1908 | continue; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1909 | if (title) { |
|
22217
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1910 | set_status_with_attrs(tune, |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1911 | PURPLE_TUNE_TITLE, title, |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1912 | PURPLE_TUNE_ARTIST, artist, |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1913 | PURPLE_TUNE_ALBUM, album, |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1914 | NULL); |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1915 | } else { |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1916 | purple_status_set_active(tune, FALSE); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1917 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1918 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1919 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1920 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1921 | char * purple_util_format_song_info(const char *title, const char *artist, const char *album, gpointer unused) |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1922 | { |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1923 | GString *string; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1924 | char *esc; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1925 | |
|
22181
4b62573becd9
Ignore both NULL and empty strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22133
diff
changeset
|
1926 | if (!title || !*title) |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1927 | return NULL; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1928 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1929 | esc = g_markup_escape_text(title, -1); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1930 | string = g_string_new(""); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1931 | g_string_append_printf(string, "%s", esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1932 | g_free(esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1933 | |
|
22181
4b62573becd9
Ignore both NULL and empty strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22133
diff
changeset
|
1934 | if (artist && *artist) { |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1935 | esc = g_markup_escape_text(artist, -1); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1936 | g_string_append_printf(string, _(" - %s"), esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1937 | g_free(esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1938 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1939 | |
|
22181
4b62573becd9
Ignore both NULL and empty strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22133
diff
changeset
|
1940 | if (album && *album) { |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1941 | esc = g_markup_escape_text(album, -1); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1942 | g_string_append_printf(string, _(" (%s)"), esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1943 | g_free(esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1944 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1945 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1946 | return g_string_free(string, FALSE); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1947 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1948 | |
|
34808
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1949 | GValue * |
|
35005
bff56dfca65d
Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents:
35001
diff
changeset
|
1950 | purple_value_new(GType type) |
|
34808
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1951 | { |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1952 | GValue *ret; |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1953 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1954 | g_return_val_if_fail(type != G_TYPE_NONE, NULL); |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1955 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1956 | ret = g_new0(GValue, 1); |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1957 | g_value_init(ret, type); |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1958 | |
|
34822
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1959 | return ret; |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1960 | } |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1961 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1962 | GValue * |
|
35005
bff56dfca65d
Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents:
35001
diff
changeset
|
1963 | purple_value_dup(GValue *value) |
|
34822
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1964 | { |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1965 | GValue *ret; |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1966 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1967 | g_return_val_if_fail(value != NULL, NULL); |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1968 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1969 | ret = g_new0(GValue, 1); |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1970 | g_value_init(ret, G_VALUE_TYPE(value)); |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1971 | g_value_copy(value, ret); |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1972 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1973 | return ret; |
|
34808
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1974 | } |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1975 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1976 | void |
|
35005
bff56dfca65d
Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents:
35001
diff
changeset
|
1977 | purple_value_free(GValue *value) |
|
34808
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1978 | { |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1979 | g_return_if_fail(value != NULL); |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1980 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1981 | g_value_unset(value); |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1982 | g_free(value); |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1983 | } |