Thu, 25 Aug 2022 22:45:58 -0500
Handle delete event in more dialogs (probably all, but can't be too sure.)
Testing Done:
Compile only.
Reviewed at https://reviews.imfreedom.org/r/1652/
|
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 | |
| 41039 | 20 | #include "internal.h" |
| 21 | ||
|
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
|
22 | #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
|
23 | |
|
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
|
24 | #include "purpleprivate.h" |
| 3630 | 25 | |
|
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
|
26 | #include "core.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5826
diff
changeset
|
27 | #include "debug.h" |
|
10425
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
28 | #include "notify.h" |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5532
diff
changeset
|
29 | #include "prefs.h" |
|
41181
e859c41d8996
Create the PurpleAccountManager API
Gary Kramlich <grim@reaperworld.com>
parents:
41155
diff
changeset
|
30 | #include "purpleaccountmanager.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
|
31 | #include "purpleconversation.h" |
|
41237
5098e0dd3a09
Move the path based functions from util.c to their own file.
Gary Kramlich <grim@reaperworld.com>
parents:
41236
diff
changeset
|
32 | #include "purplepath.h" |
|
41155
922c9e70900c
Rename protocol.[ch] to purpleprotocol.[ch]
Gary Kramlich <grim@reaperworld.com>
parents:
41039
diff
changeset
|
33 | #include "purpleprotocol.h" |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
34 | #include "purpleprotocolclient.h" |
|
7094
8f9588491993
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
35 | #include "util.h" |
|
8f9588491993
[gaim-migrate @ 7659]
Christian Hammond <chipx86@chipx86.com>
parents:
7078
diff
changeset
|
36 | |
|
33538
cbeb76707f12
Better implementation of purple_escape_js
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33537
diff
changeset
|
37 | #include <json-glib/json-glib.h> |
|
cbeb76707f12
Better implementation of purple_escape_js
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33537
diff
changeset
|
38 | |
|
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
|
39 | void |
|
41237
5098e0dd3a09
Move the path based functions from util.c to their own file.
Gary Kramlich <grim@reaperworld.com>
parents:
41236
diff
changeset
|
40 | purple_util_init(void) { |
|
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
|
41 | } |
|
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 | |
|
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 | void |
|
41237
5098e0dd3a09
Move the path based functions from util.c to their own file.
Gary Kramlich <grim@reaperworld.com>
parents:
41236
diff
changeset
|
44 | purple_util_uninit(void) { |
|
5098e0dd3a09
Move the path based functions from util.c to their own file.
Gary Kramlich <grim@reaperworld.com>
parents:
41236
diff
changeset
|
45 | purple_util_set_user_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
|
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 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
48 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
49 | * Date/Time Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
50 | **************************************************************************/ |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
51 | const char * |
|
41250
e82d07ed6862
Remove purple_utf8_strftime
Gary Kramlich <grim@reaperworld.com>
parents:
41249
diff
changeset
|
52 | purple_date_format_full(const struct tm *tm) |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
53 | { |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
54 | 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
|
55 | GDateTime *dt; |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
56 | char *utf8; |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
57 | |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
58 | if (tm == NULL) |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
59 | { |
|
39017
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
60 | 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
|
61 | } else { |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
62 | 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
|
63 | 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
|
64 | tm->tm_min, tm->tm_sec); |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
65 | } |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13118
diff
changeset
|
66 | |
|
41250
e82d07ed6862
Remove purple_utf8_strftime
Gary Kramlich <grim@reaperworld.com>
parents:
41249
diff
changeset
|
67 | utf8 = g_date_time_format(dt, "%c"); |
|
39017
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
68 | 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
|
69 | |
|
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
70 | 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
|
71 | purple_debug_error("util", |
|
41250
e82d07ed6862
Remove purple_utf8_strftime
Gary Kramlich <grim@reaperworld.com>
parents:
41249
diff
changeset
|
72 | "purple_date_format_full(): Formatting failed\n"); |
|
13216
2cc737d198f3
[gaim-migrate @ 15579]
Richard Laager <rlaager@pidgin.im>
parents:
13201
diff
changeset
|
73 | return ""; |
|
13116
677ff68a65af
[gaim-migrate @ 15477]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
74 | } |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
75 | |
|
39017
4c9d510555b5
util: Port internals of purple_utf8_strftime() to g_date_time_format()
Mike Ruprecht <cmaiku@gmail.com>
parents:
39016
diff
changeset
|
76 | 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
|
77 | g_free(utf8); |
|
13105
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
78 | return buf; |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
79 | } |
|
8f9c66e4af87
[gaim-migrate @ 15466]
Richard Laager <rlaager@pidgin.im>
parents:
13103
diff
changeset
|
80 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
81 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
82 | * Path/Filename Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
83 | **************************************************************************/ |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
84 | static gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
85 | 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
|
86 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
87 | gchar *filename_full; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
88 | gboolean ret = FALSE; |
|
38872
af422a3fb924
Add purple_util_write_data_to_*_file declarations
qarkai <qarkai@gmail.com>
parents:
38871
diff
changeset
|
89 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
90 | 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
|
91 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
92 | 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
|
93 | filename, dir); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
94 | |
|
38874
0fc4ba7fa2be
Make XDG dir structure inside custom user dir
qarkai <qarkai@gmail.com>
parents:
38872
diff
changeset
|
95 | /* Ensure the directory exists */ |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
96 | 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
|
97 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
98 | 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
|
99 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
100 | 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
|
101 | dir, g_strerror(errno)); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
102 | return FALSE; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
103 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
104 | } |
|
38872
af422a3fb924
Add purple_util_write_data_to_*_file declarations
qarkai <qarkai@gmail.com>
parents:
38871
diff
changeset
|
105 | |
| 38899 | 106 | 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
|
107 | 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
|
108 | g_free(filename_full); |
|
38872
af422a3fb924
Add purple_util_write_data_to_*_file declarations
qarkai <qarkai@gmail.com>
parents:
38871
diff
changeset
|
109 | |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
110 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
111 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
112 | |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
113 | 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
|
114 | 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
|
115 | { |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
116 | G_GNUC_BEGIN_IGNORE_DEPRECATIONS |
| 15884 | 117 | 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
|
118 | G_GNUC_END_IGNORE_DEPRECATIONS |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
119 | 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
|
120 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
121 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
122 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
123 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
124 | gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
125 | 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
|
126 | { |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
127 | const char *cache_dir = purple_cache_dir(); |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
128 | 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
|
129 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
130 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
131 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
132 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
133 | gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
134 | 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
|
135 | { |
|
38881
25cb836b9cec
Use proper directories for writing data.
Arkadiy Illarionov <qarkai@gmail.com>
parents:
38874
diff
changeset
|
136 | const char *config_dir = purple_config_dir(); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
137 | 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
|
138 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
139 | return ret; |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
140 | } |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
141 | |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
142 | gboolean |
|
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
143 | 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
|
144 | { |
|
38881
25cb836b9cec
Use proper directories for writing data.
Arkadiy Illarionov <qarkai@gmail.com>
parents:
38874
diff
changeset
|
145 | const char *data_dir = purple_data_dir(); |
|
38870
575e41bfc15e
Migrate certificates, icons, logs to XDG dirs
qarkai <qarkai@gmail.com>
parents:
38051
diff
changeset
|
146 | 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
|
147 | |
|
19501
4c14c89dcf02
- Add purple_util_write_data_to_file_absolute; glib's
William Ehlhardt <williamehlhardt@gmail.com>
parents:
19327
diff
changeset
|
148 | return ret; |
|
4c14c89dcf02
- Add purple_util_write_data_to_file_absolute; glib's
William Ehlhardt <williamehlhardt@gmail.com>
parents:
19327
diff
changeset
|
149 | } |
|
4c14c89dcf02
- Add purple_util_write_data_to_file_absolute; glib's
William Ehlhardt <williamehlhardt@gmail.com>
parents:
19327
diff
changeset
|
150 | |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
151 | 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
|
152 | 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
|
153 | { |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
154 | GFile *file; |
|
38996
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
155 | GError *err = NULL; |
|
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
156 | |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
157 | 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
|
158 | |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
159 | if (size == -1) { |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
160 | size = strlen(data); |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
161 | } |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
162 | |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
163 | 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
|
164 | |
|
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
165 | 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
|
166 | 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
|
167 | 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
|
168 | filename_full, err->message); |
|
01ac2f470b5f
util: Simplify purple_util_write_data_to_file_absolute()
Mike Ruprecht <cmaiku@gmail.com>
parents:
38929
diff
changeset
|
169 | g_clear_error(&err); |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
170 | 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
|
171 | return FALSE; |
|
1d0f0d592011
Manually fflush() files written with purple_util_write_data_to_file,
Ethan Blanton <elb@pidgin.im>
parents:
21389
diff
changeset
|
172 | } |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
173 | |
|
38998
5d5fb6bce103
util: Write files with permission mode 0600 again
Mike Ruprecht <cmaiku@gmail.com>
parents:
38996
diff
changeset
|
174 | g_object_unref(file); |
|
10414
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
175 | return TRUE; |
|
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
176 | } |
|
6b10b76933e1
[gaim-migrate @ 11664]
Mark Doliner <markdoliner@pidgin.im>
parents:
10372
diff
changeset
|
177 | |
|
34935
686fa55b0deb
Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents:
34892
diff
changeset
|
178 | PurpleXmlNode * |
| 15884 | 179 | 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
|
180 | { |
|
39437
9ab3a99af8d0
Mark deprecated functions with G_DEPRECATED_FOR.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39323
diff
changeset
|
181 | 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
|
182 | 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
|
183 | G_GNUC_END_IGNORE_DEPRECATIONS |
|
10425
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
184 | } |
|
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
185 | |
|
38877
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
186 | PurpleXmlNode * |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
187 | 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
|
188 | { |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
189 | 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
|
190 | } |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
191 | |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
192 | PurpleXmlNode * |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
193 | 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
|
194 | { |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
195 | 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
|
196 | } |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
197 | |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
198 | PurpleXmlNode * |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
199 | 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
|
200 | { |
|
4e9c691a1d2d
Add functions for reading XML files from XDG dirs
qarkai <qarkai@gmail.com>
parents:
38876
diff
changeset
|
201 | 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
|
202 | } |
|
d82cef15da95
[gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents:
10415
diff
changeset
|
203 | |
| 11878 | 204 | gboolean |
| 15884 | 205 | purple_running_gnome(void) |
| 11878 | 206 | { |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
207 | #ifndef _WIN32 |
|
38043
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
208 | 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
|
209 | |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
210 | if (tmp == NULL) { |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
211 | 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
|
212 | |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
213 | if (tmp == NULL) { |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
214 | return FALSE; |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
215 | } |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
216 | } |
|
3549ff786eab
util: Fix purple_running_gnome() to check for gvfs-open too
Mike Ruprecht <cmaiku@gmail.com>
parents:
37160
diff
changeset
|
217 | |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
218 | g_free(tmp); |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
219 | |
|
21665
a1a724a89a03
Allow empty GNOME_DESKTOP_SESSION_ID to "fail" the running_gnome check as
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21468
diff
changeset
|
220 | 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
|
221 | |
|
a1a724a89a03
Allow empty GNOME_DESKTOP_SESSION_ID to "fail" the running_gnome check as
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
21468
diff
changeset
|
222 | return ((tmp != NULL) && (*tmp != '\0')); |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
223 | #else |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
224 | return FALSE; |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
225 | #endif |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
226 | } |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
227 | |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
228 | gboolean |
| 15884 | 229 | purple_running_kde(void) |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
230 | { |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
231 | #ifndef _WIN32 |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
232 | gchar *tmp = g_find_program_in_path("kfmclient"); |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
233 | const char *session; |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
234 | |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
235 | if (tmp == NULL) |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
236 | return FALSE; |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
237 | g_free(tmp); |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
238 | |
|
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
239 | 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
|
240 | if (purple_strequal(session, "true")) |
| 11878 | 241 | return TRUE; |
|
12483
38fc67810cdb
[gaim-migrate @ 14795]
Richard Laager <rlaager@pidgin.im>
parents:
12110
diff
changeset
|
242 | |
| 15884 | 243 | /* 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
|
244 | * 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
|
245 | * only a problem if you're running something !(KDE || GNOME) and |
| 15884 | 246 | * 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
|
247 | return ((g_getenv("KDEDIR") != NULL) || g_getenv("KDEDIRS") != NULL); |
|
13616
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
248 | #else |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
249 | return FALSE; |
|
7cf0f845d2d6
[gaim-migrate @ 16001]
Daniel Atallah <datallah@pidgin.im>
parents:
13614
diff
changeset
|
250 | #endif |
| 11878 | 251 | } |
| 252 | ||
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
253 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
254 | * String Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
255 | **************************************************************************/ |
| 7162 | 256 | 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
|
257 | purple_normalize(PurpleAccount *account, const char *str) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
258 | { |
| 7430 | 259 | const char *ret = NULL; |
|
16610
815ce4002357
sadrul fixed the next but not last crash
Luke Schierer <lschiere@pidgin.im>
parents:
16557
diff
changeset
|
260 | static char buf[BUF_LEN]; |
| 7261 | 261 | |
|
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
|
262 | /* 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
|
263 | 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
|
264 | |
|
13620
1374da61a5e2
[gaim-migrate @ 16005]
Richard Laager <rlaager@pidgin.im>
parents:
13616
diff
changeset
|
265 | if (account != NULL) |
|
13614
fa07a6cab773
[gaim-migrate @ 15999]
Richard Laager <rlaager@pidgin.im>
parents:
13586
diff
changeset
|
266 | { |
|
40804
5496016b3c00
Port libpurple from purple_protocols_ to purple_protocol_manager_
Gary Kramlich <grim@reaperworld.com>
parents:
40769
diff
changeset
|
267 | 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
|
268 | |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
269 | 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
|
270 | 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
|
271 | } |
|
13614
fa07a6cab773
[gaim-migrate @ 15999]
Richard Laager <rlaager@pidgin.im>
parents:
13586
diff
changeset
|
272 | } |
|
fa07a6cab773
[gaim-migrate @ 15999]
Richard Laager <rlaager@pidgin.im>
parents:
13586
diff
changeset
|
273 | |
|
13621
788d329bdfa0
[gaim-migrate @ 16006]
Richard Laager <rlaager@pidgin.im>
parents:
13620
diff
changeset
|
274 | if (ret == NULL) |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
275 | { |
| 7261 | 276 | char *tmp; |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
277 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
278 | tmp = g_utf8_normalize(str, -1, G_NORMALIZE_DEFAULT); |
| 7261 | 279 | g_snprintf(buf, sizeof(buf), "%s", tmp); |
| 280 | g_free(tmp); | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
281 | |
| 7430 | 282 | ret = buf; |
| 7261 | 283 | } |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
284 | |
| 7430 | 285 | return ret; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
286 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
287 | |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
288 | /* |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
289 | * 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
|
290 | * mainly for use as a protocol callback function. See the |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
291 | * comments in util.h. |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
292 | */ |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
293 | 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
|
294 | purple_normalize_nocase(const char *str) |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
295 | { |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
296 | static char buf[BUF_LEN]; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
297 | char *tmp1, *tmp2; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
298 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
299 | g_return_val_if_fail(str != NULL, NULL); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
300 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
301 | tmp1 = g_utf8_strdown(str, -1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
302 | tmp2 = g_utf8_normalize(tmp1, -1, G_NORMALIZE_DEFAULT); |
|
13646
3bf958a5e352
[gaim-migrate @ 16043]
Daniel Atallah <datallah@pidgin.im>
parents:
13644
diff
changeset
|
303 | g_snprintf(buf, sizeof(buf), "%s", tmp2 ? tmp2 : ""); |
|
11153
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
304 | g_free(tmp2); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
305 | g_free(tmp1); |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
306 | |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
307 | return buf; |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
308 | } |
|
b5c721366f2d
[gaim-migrate @ 13235]
Evan Schoenberg <evands@pidgin.im>
parents:
11142
diff
changeset
|
309 | |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
310 | gboolean |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
311 | 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
|
312 | { |
|
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
313 | const char *normalized; |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
314 | |
|
36544
1bf8b6ef5aea
Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents:
36543
diff
changeset
|
315 | 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
|
316 | 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
|
317 | |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
318 | 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
|
319 | return FALSE; |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
320 | |
|
39759
ea1401483849
Rename *_GET_*_IFACE to more standard *_GET_IFACE.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
39527
diff
changeset
|
321 | 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
|
322 | return TRUE; |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
323 | |
|
40634
4d3018b00ad4
Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
324 | 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
|
325 | NULL, str); |
|
33090
99d719d058df
Remove extra trailing whitespace.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33087
diff
changeset
|
326 | |
|
33087
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
327 | 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
|
328 | } |
|
182da0516150
Libpurple: username validation support; Pidgin: use it in account setup dialog
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33066
diff
changeset
|
329 | |
|
8700
0c9288c5e40e
[gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents:
8686
diff
changeset
|
330 | gchar * |
| 15884 | 331 | purple_strdup_withhtml(const gchar *src) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
332 | { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
333 | gulong destsize, i, j; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
334 | gchar *dest; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
335 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
336 | g_return_val_if_fail(src != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
337 | |
|
13994
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
338 | /* 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
|
339 | destsize = 1; |
|
fb323d3eefee
[gaim-migrate @ 16475]
Mark Doliner <markdoliner@pidgin.im>
parents:
13994
diff
changeset
|
340 | for (i = 0; src[i] != '\0'; i++) |
|
13994
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
341 | { |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
342 | if (src[i] == '\n') |
|
13994
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
343 | destsize += 4; |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
344 | else if (src[i] != '\r') |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
345 | destsize++; |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
346 | } |
|
f3175c4c6d6a
[gaim-migrate @ 16459]
Mark Doliner <markdoliner@pidgin.im>
parents:
13985
diff
changeset
|
347 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
348 | dest = g_malloc(destsize); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
349 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
350 | /* Copy stuff, ignoring \r's, because they are dumb */ |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
351 | for (i = 0, j = 0; src[i] != '\0'; i++) { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
352 | if (src[i] == '\n') { |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
353 | strcpy(&dest[j], "<BR>"); |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
354 | j += 4; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
355 | } else if (src[i] != '\r') |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
356 | dest[j++] = src[i]; |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
357 | } |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
358 | |
|
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
359 | dest[destsize-1] = '\0'; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
360 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
361 | return dest; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
362 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
363 | |
| 7628 | 364 | gboolean |
|
35734
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
365 | 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
|
366 | { |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
367 | g_return_val_if_fail(s, FALSE); |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
368 | g_return_val_if_fail(p, FALSE); |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
369 | |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
370 | return (g_ascii_strncasecmp(s, p, strlen(p)) == 0); |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
371 | } |
|
ddad7176a0ec
Smiley manager: drag and drop
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35706
diff
changeset
|
372 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
373 | void |
| 15884 | 374 | purple_str_strip_char(char *text, char thechar) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
375 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
376 | int i, j; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
377 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
378 | g_return_if_fail(text != NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
379 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
380 | for (i = 0, j = 0; text[i]; i++) |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
381 | if (text[i] != thechar) |
|
11142
3ed4fc774b87
[gaim-migrate @ 13206]
Mark Doliner <markdoliner@pidgin.im>
parents:
11137
diff
changeset
|
382 | text[j++] = text[i]; |
|
3ed4fc774b87
[gaim-migrate @ 13206]
Mark Doliner <markdoliner@pidgin.im>
parents:
11137
diff
changeset
|
383 | |
|
30702
8a1938367841
These are dead increments.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30515
diff
changeset
|
384 | text[j] = '\0'; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
385 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
386 | |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
387 | void |
| 15884 | 388 | purple_util_chrreplace(char *string, char delimiter, |
|
11920
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
389 | char replacement) |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
390 | { |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
391 | int i = 0; |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
392 | |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
393 | g_return_if_fail(string != NULL); |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
394 | |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
395 | while (string[i] != '\0') |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
396 | { |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
397 | if (string[i] == delimiter) |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
398 | string[i] = replacement; |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
399 | i++; |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
400 | } |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
401 | } |
|
be80617ec59b
[gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11878
diff
changeset
|
402 | |
|
8341
dc43b1acfc1a
[gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents:
8163
diff
changeset
|
403 | gchar * |
| 15884 | 404 | purple_strreplace(const char *string, const char *delimiter, |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
405 | const char *replacement) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
406 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
407 | gchar **split; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
408 | gchar *ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
409 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
410 | g_return_val_if_fail(string != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
411 | g_return_val_if_fail(delimiter != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
412 | g_return_val_if_fail(replacement != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
413 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
414 | split = g_strsplit(string, delimiter, 0); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
415 | ret = g_strjoinv(replacement, split); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
416 | g_strfreev(split); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
417 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
418 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
419 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
420 | |
|
41479
3d2e114380f6
Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
41392
diff
changeset
|
421 | /* TODO: Expose this when we can add API */ |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
422 | 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
|
423 | 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
|
424 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
425 | const char *tmp, *ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
426 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
427 | g_return_val_if_fail(haystack != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
428 | g_return_val_if_fail(needle != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
429 | |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
430 | 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
|
431 | 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
|
432 | 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
|
433 | nlen = strlen(needle); |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
434 | tmp = haystack, |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
435 | ret = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
436 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
437 | g_return_val_if_fail(hlen > 0, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
438 | g_return_val_if_fail(nlen > 0, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
439 | |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
440 | while (*tmp && !ret && (hlen - (tmp - haystack)) >= nlen) { |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
441 | if (!g_ascii_strncasecmp(needle, tmp, nlen)) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
442 | ret = tmp; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
443 | else |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
444 | tmp++; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
445 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
446 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
447 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
448 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
449 | |
|
35204
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
450 | const char * |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
451 | 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
|
452 | { |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
453 | 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
|
454 | } |
|
cd529e1158d3
Fix purple_util_fetch_url_request variants to avoid implicitly trusting the
Daniel Atallah <datallah@pidgin.im>
parents:
33809
diff
changeset
|
455 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
456 | char * |
| 15884 | 457 | purple_str_seconds_to_string(guint secs) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
458 | { |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
459 | char *ret = NULL; |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
460 | guint days, hrs, mins; |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
461 | |
| 9424 | 462 | if (secs < 60) |
| 463 | { | |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
464 | return g_strdup_printf(dngettext(PACKAGE, "%d second", "%d seconds", secs), secs); |
| 9424 | 465 | } |
| 466 | ||
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
467 | days = secs / (60 * 60 * 24); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
468 | secs = secs % (60 * 60 * 24); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
469 | hrs = secs / (60 * 60); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
470 | secs = secs % (60 * 60); |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
471 | mins = secs / 60; |
|
35382
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
472 | /* secs = secs % 60; */ |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
473 | |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
474 | if (days > 0) |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
475 | { |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
476 | 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
|
477 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
478 | |
|
9233
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
479 | if (hrs > 0) |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
480 | { |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
481 | if (ret != NULL) |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
482 | { |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
483 | 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
|
484 | dngettext(PACKAGE, "%s, %d hour", "%s, %d hours", hrs), |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
485 | ret, hrs); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
486 | g_free(ret); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
487 | ret = tmp; |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
488 | } |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
489 | else |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
490 | 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
|
491 | } |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
492 | |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
493 | if (mins > 0) |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
494 | { |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
495 | if (ret != NULL) |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
496 | { |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
497 | 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
|
498 | dngettext(PACKAGE, "%s, %d minute", "%s, %d minutes", mins), |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
499 | ret, mins); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
500 | g_free(ret); |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
501 | ret = tmp; |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
502 | } |
|
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
503 | else |
|
16124
8e5e3e9ada60
Hopefully prevent libpurple causing problems for 3rd party UIs if they also
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
16078
diff
changeset
|
504 | 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
|
505 | } |
|
41fb39a8d21e
[gaim-migrate @ 10029]
Christian Hammond <chipx86@chipx86.com>
parents:
9230
diff
changeset
|
506 | |
|
13098
48f8b34a76bf
[gaim-migrate @ 15459]
Richard Laager <rlaager@pidgin.im>
parents:
13096
diff
changeset
|
507 | return ret; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
508 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
509 | |
|
34145
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
510 | void |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
511 | 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
|
512 | { |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
513 | if (str == NULL) |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
514 | return; |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
515 | 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
|
516 | g_free(str); |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
517 | } |
|
fa72f1e5cd77
Some polishing on files modified on this branch (mostly formatting)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33824
diff
changeset
|
518 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
519 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
520 | * URI/URL Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
521 | **************************************************************************/ |
|
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
|
522 | |
| 15884 | 523 | 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
|
524 | { |
|
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
|
525 | char proto[11]; |
|
28136
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
526 | 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
|
527 | 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
|
528 | 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
|
529 | GHashTable *params = NULL; |
|
34304
faf0414a8b51
Fix most of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
34297
diff
changeset
|
530 | 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
|
531 | if (!(tmp = strchr(uri, ':')) || tmp == uri) { |
| 15884 | 532 | 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
|
533 | 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
|
534 | } |
|
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
|
535 | |
|
36256
a437550a9308
Remove -Wno-sign-compare and backport fixes from default.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
36037
diff
changeset
|
536 | 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
|
537 | |
|
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
|
538 | 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
|
539 | 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
|
540 | |
|
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
|
541 | tmp++; |
|
28136
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
542 | |
|
38256
035f00c4fd87
Replace misused g_str_equal() with purple_strequal()
qarkai <qarkai@gmail.com>
parents:
38229
diff
changeset
|
543 | 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
|
544 | delimiter = ';'; |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
545 | else |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
546 | delimiter = '&'; |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
547 | |
|
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
548 | 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
|
549 | |
|
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
|
550 | 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
|
551 | 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
|
552 | 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
|
553 | |
|
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
|
554 | 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
|
555 | 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
|
556 | |
|
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
|
557 | 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
|
558 | 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
|
559 | |
|
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
|
560 | while (*tmp || *pairstart) { |
|
28136
a3b6446eb2c4
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <darkrain42@pidgin.im>
parents:
27902
diff
changeset
|
561 | 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
|
562 | /* If there is no explicit value */ |
|
35382
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
563 | 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
|
564 | keyend = tmp; |
|
35382
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
565 | } |
|
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
566 | /* without these brackets, clang won't |
|
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
567 | * recognize tmp as a non-NULL |
|
1b75f8a4129c
Fix some clang static analysis warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35298
diff
changeset
|
568 | */ |
|
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
|
569 | |
|
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
|
570 | 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
|
571 | 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
|
572 | 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
|
573 | /* 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
|
574 | 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
|
575 | 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
|
576 | 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
|
577 | *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
|
578 | 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
|
579 | } |
|
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
|
580 | 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
|
581 | 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
|
582 | } 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
|
583 | 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
|
584 | |
|
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
|
585 | 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
|
586 | 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
|
587 | } |
|
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
|
588 | } 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
|
589 | 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
|
590 | |
| 15884 | 591 | 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
|
592 | |
|
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
|
593 | 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
|
594 | 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
|
595 | 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
|
596 | } |
|
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
|
597 | |
| 7162 | 598 | const char * |
| 15884 | 599 | purple_url_encode(const char *str) |
| 7134 | 600 | { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
601 | const char *iter; |
| 7134 | 602 | static char buf[BUF_LEN]; |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
603 | char utf_char[6]; |
| 7631 | 604 | guint i, j = 0; |
| 7134 | 605 | |
| 606 | g_return_val_if_fail(str != NULL, NULL); | |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
607 | 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
|
608 | |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
609 | iter = str; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
610 | 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
|
611 | gunichar c = g_utf8_get_char(iter); |
|
10800
00a2c404c1dc
[gaim-migrate @ 12446]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10732
diff
changeset
|
612 | /* If the character is an ASCII character and is alphanumeric |
|
00a2c404c1dc
[gaim-migrate @ 12446]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10732
diff
changeset
|
613 | * 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
|
614 | if (c < 128 && (isalnum(c) || c == '-' || c == '.' || c == '_' || c == '~')) { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
615 | buf[j++] = c; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
616 | } else { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
617 | 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
|
618 | for (i = 0; (int)i < bytes; i++) { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
619 | if (j > (BUF_LEN - 4)) |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
620 | break; |
|
36037
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
621 | if (i >= sizeof(utf_char)) { |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
622 | g_warn_if_reached(); |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
623 | break; |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
624 | } |
|
28538
fb879aa298ee
Change purple_url_encode() to not encode . _ - ~ because it's not
Mark Doliner <markdoliner@pidgin.im>
parents:
28438
diff
changeset
|
625 | sprintf(buf + j, "%%%02X", utf_char[i] & 0xff); |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
626 | j += 3; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
627 | } |
| 7134 | 628 | } |
| 629 | } | |
| 630 | ||
| 631 | buf[j] = '\0'; | |
| 632 | ||
| 633 | return buf; | |
| 634 | } | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
635 | |
| 9054 | 636 | /* Originally lifted from |
| 637 | * http://www.oreillynet.com/pub/a/network/excerpt/spcookbook_chap03/index3.html | |
| 638 | * ... and slightly modified to be a bit more rfc822 compliant | |
| 639 | * ... and modified a bit more to make domain checking rfc1035 compliant | |
| 640 | * with the exception permitted in rfc1101 for domains to start with digit | |
| 641 | * but not completely checking to avoid conflicts with IP addresses | |
| 642 | */ | |
| 9045 | 643 | gboolean |
| 15884 | 644 | purple_email_is_valid(const char *address) |
| 9045 | 645 | { |
| 646 | const char *c, *domain; | |
| 647 | static char *rfc822_specials = "()<>@,;:\\\"[]"; | |
| 648 | ||
| 24645 | 649 | g_return_val_if_fail(address != NULL, FALSE); |
| 650 | ||
|
30444
d871c3fd6637
Catch some more invalid email addresses, thanks to Mark for additional
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
30437
diff
changeset
|
651 | 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
|
652 | |
| 9054 | 653 | /* first we validate the name portion (name@domain) (rfc822)*/ |
| 9045 | 654 | for (c = address; *c; c++) { |
| 655 | if (*c == '\"' && (c == address || *(c - 1) == '.' || *(c - 1) == '\"')) { | |
| 656 | while (*++c) { | |
| 9054 | 657 | if (*c == '\\') { |
|
38922
9f05d7f41a53
purple_email_is_valid: fix out of bounds read
dx <dx@dxzone.com.ar>
parents:
38737
diff
changeset
|
658 | if (*c++ && *c < 127 && *c > 0 && *c != '\n' && *c != '\r') continue; |
| 9054 | 659 | else return FALSE; |
| 660 | } | |
| 9045 | 661 | if (*c == '\"') break; |
| 9054 | 662 | if (*c < ' ' || *c >= 127) return FALSE; |
| 9045 | 663 | } |
| 664 | if (!*c++) return FALSE; | |
| 665 | if (*c == '@') break; | |
| 666 | if (*c != '.') return FALSE; | |
| 667 | continue; | |
| 668 | } | |
| 669 | if (*c == '@') break; | |
| 670 | if (*c <= ' ' || *c >= 127) return FALSE; | |
| 671 | if (strchr(rfc822_specials, *c)) return FALSE; | |
| 672 | } | |
|
18871
078df6ae587a
Valgrind was showing "Invalid read of size 1" when a string is passed
Mark Doliner <markdoliner@pidgin.im>
parents:
18813
diff
changeset
|
673 | |
|
078df6ae587a
Valgrind was showing "Invalid read of size 1" when a string is passed
Mark Doliner <markdoliner@pidgin.im>
parents:
18813
diff
changeset
|
674 | /* 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
|
675 | 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
|
676 | |
| 9054 | 677 | /* strictly we should return false if (*(c - 1) == '.') too, but I think |
| 678 | * we should permit user.@domain type addresses - they do work :) */ | |
| 679 | if (c == address) return FALSE; | |
| 680 | ||
| 681 | /* next we validate the domain portion (name@domain) (rfc1035 & rfc1011) */ | |
| 9045 | 682 | if (!*(domain = ++c)) return FALSE; |
| 683 | do { | |
| 9054 | 684 | if (*c == '.' && (c == domain || *(c - 1) == '.' || *(c - 1) == '-')) |
| 685 | return FALSE; | |
|
30444
d871c3fd6637
Catch some more invalid email addresses, thanks to Mark for additional
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
30437
diff
changeset
|
686 | if (*c == '-' && (*(c - 1) == '.' || *(c - 1) == '@')) return FALSE; |
| 9054 | 687 | if ((*c < '0' && *c != '-' && *c != '.') || (*c > '9' && *c < 'A') || |
| 688 | (*c > 'Z' && *c < 'a') || (*c > 'z')) return FALSE; | |
| 9045 | 689 | } while (*++c); |
| 690 | ||
| 9054 | 691 | if (*(c - 1) == '-') return FALSE; |
| 692 | ||
| 693 | return ((c - domain) > 3 ? TRUE : FALSE); | |
| 9045 | 694 | } |
| 695 | ||
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
696 | /* Stolen from gnome_uri_list_extract_uris */ |
|
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
697 | GList * |
| 15884 | 698 | purple_uri_list_extract_uris(const gchar *uri_list) |
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
699 | { |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
700 | const gchar *p, *q; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
701 | gchar *retval; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
702 | GList *result = NULL; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
703 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
704 | g_return_val_if_fail (uri_list != NULL, NULL); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
705 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
706 | p = uri_list; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
707 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
708 | /* 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
|
709 | * 2396, or even check for allowed characters - we just ignore |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
710 | * comments and trim whitespace off the ends. We also |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
711 | * allow LF delimination as well as the specified CRLF. |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
712 | */ |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
713 | while (p) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
714 | if (*p != '#') { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
715 | while (isspace(*p)) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
716 | p++; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
717 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
718 | q = p; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
719 | while (*q && (*q != '\n') && (*q != '\r')) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
720 | q++; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
721 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
722 | if (q > p) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
723 | q--; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
724 | while (q > p && isspace(*q)) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
725 | q--; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
726 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
727 | retval = (gchar*)g_malloc (q - p + 2); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
728 | strncpy (retval, p, q - p + 1); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
729 | retval[q - p + 1] = '\0'; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
730 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
731 | result = g_list_prepend (result, retval); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
732 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
733 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
734 | p = strchr (p, '\n'); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
735 | if (p) |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
736 | p++; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
737 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
738 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
739 | return g_list_reverse (result); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
740 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
741 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
742 | |
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
743 | /* Stolen from gnome_uri_list_extract_filenames */ |
|
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
744 | GList * |
| 15884 | 745 | purple_uri_list_extract_filenames(const gchar *uri_list) |
|
11135
063678d038f9
[gaim-migrate @ 13196]
Mark Doliner <markdoliner@pidgin.im>
parents:
11132
diff
changeset
|
746 | { |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
747 | GList *tmp_list, *node, *result; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
748 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
749 | g_return_val_if_fail (uri_list != NULL, NULL); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
750 | |
| 15884 | 751 | result = purple_uri_list_extract_uris(uri_list); |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
752 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
753 | tmp_list = result; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
754 | while (tmp_list) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
755 | gchar *s = (gchar*)tmp_list->data; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
756 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
757 | node = tmp_list; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
758 | tmp_list = tmp_list->next; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
759 | |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
760 | if (!strncmp (s, "file:", 5)) { |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
761 | node->data = g_filename_from_uri (s, NULL, NULL); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
762 | /* not sure if this fallback is useful at all */ |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
763 | if (!node->data) node->data = g_strdup (s+5); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
764 | } 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
|
765 | result = g_list_delete_link(result, node); |
|
9670
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
766 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
767 | g_free (s); |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
768 | } |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
769 | return result; |
|
4e8cb7ef72ab
[gaim-migrate @ 10522]
Daniel Atallah <datallah@pidgin.im>
parents:
9642
diff
changeset
|
770 | } |
| 9054 | 771 | |
|
38737
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
772 | char * |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
773 | 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
|
774 | { |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
775 | /* 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
|
776 | * 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
|
777 | * 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
|
778 | * $(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
|
779 | * 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
|
780 | 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
|
781 | } |
|
d85c241e3183
Add unit tests for xdg-open URI escaping
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
38371
diff
changeset
|
782 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
783 | /************************************************************************** |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
784 | * UTF8 String Functions |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
785 | **************************************************************************/ |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
786 | gchar * |
| 15884 | 787 | purple_utf8_try_convert(const char *str) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
788 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
789 | gsize converted; |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
790 | gchar *utf8; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
791 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
792 | g_return_val_if_fail(str != NULL, NULL); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
793 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
794 | if (g_utf8_validate(str, -1, NULL)) { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
795 | return g_strdup(str); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
796 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
797 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
798 | utf8 = g_locale_to_utf8(str, -1, &converted, NULL, NULL); |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
799 | if (utf8 != NULL) |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
800 | return utf8; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
801 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
802 | 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
|
803 | if ((utf8 != NULL) && (converted == strlen(str))) |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
804 | return utf8; |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
805 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14002
diff
changeset
|
806 | g_free(utf8); |
|
9642
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
807 | |
|
ec0b88cf9161
[gaim-migrate @ 10490]
Mark Doliner <markdoliner@pidgin.im>
parents:
9427
diff
changeset
|
808 | return NULL; |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
809 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
810 | |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
811 | gchar * |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
812 | 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
|
813 | { |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
814 | gchar *workstr, *iter; |
|
28389
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
815 | 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
|
816 | |
|
27243
fb50a38b034b
Strip unprintable UTF-8 characters from buddy list strings. Fixes #8776.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
817 | if (str == NULL) |
|
fb50a38b034b
Strip unprintable UTF-8 characters from buddy list strings. Fixes #8776.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
818 | /* 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
|
819 | return NULL; |
|
fb50a38b034b
Strip unprintable UTF-8 characters from buddy list strings. Fixes #8776.
Paul Aurich <darkrain42@pidgin.im>
parents:
27237
diff
changeset
|
820 | |
|
28390
5c701ddc9c81
Oops, I think it's either sleep or coffee time.
Paul Aurich <darkrain42@pidgin.im>
parents:
28389
diff
changeset
|
821 | 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
|
822 | 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
|
823 | "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
|
824 | str, *bad, *bad); |
|
3f6d1ba8a58b
Add more verbose debugging to purple_utf8_strip_unprintables.
Paul Aurich <darkrain42@pidgin.im>
parents:
28388
diff
changeset
|
825 | 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
|
826 | } |
|
27237
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
827 | |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
828 | 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
|
829 | while (*str) { |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
830 | 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
|
831 | 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
|
832 | /* |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
833 | * 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
|
834 | * [#x10000-#x10FFFF] |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
835 | */ |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
836 | 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
|
837 | (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
|
838 | (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
|
839 | (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
|
840 | 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
|
841 | 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
|
842 | } |
|
30143
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
843 | |
|
468e3b69fd10
util: Better validation of the allowed character values in XML 1.0
Paul Aurich <darkrain42@pidgin.im>
parents:
30031
diff
changeset
|
844 | 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
|
845 | } |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
846 | |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
847 | /* 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
|
848 | *iter = '\0'; |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
849 | |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
850 | return workstr; |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
851 | } |
|
0643ac0e5658
Add purple_utf8_strip_unprintables and use it on outgoing XMPP messages.
Paul Aurich <darkrain42@pidgin.im>
parents:
27234
diff
changeset
|
852 | |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
853 | char * |
| 15884 | 854 | purple_utf8_ncr_encode(const char *str) |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
855 | { |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
856 | GString *out; |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
857 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
858 | g_return_val_if_fail(str != NULL, NULL); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
859 | 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
|
860 | |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
861 | out = g_string_new(""); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
862 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
863 | for(; *str; str = g_utf8_next_char(str)) { |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
864 | gunichar wc = g_utf8_get_char(str); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
865 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
866 | /* super simple check. hopefully not too wrong. */ |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
867 | if(wc >= 0x80) { |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
868 | g_string_append_printf(out, "&#%u;", (guint32) wc); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
869 | } else { |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
870 | g_string_append_unichar(out, wc); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
871 | } |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
872 | } |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
873 | |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
874 | return g_string_free(out, FALSE); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
875 | } |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
876 | |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
877 | |
| 9161 | 878 | char * |
| 15884 | 879 | purple_utf8_ncr_decode(const char *str) |
| 9161 | 880 | { |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
881 | GString *out; |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
882 | char *buf, *b; |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
883 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
884 | g_return_val_if_fail(str != NULL, NULL); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
885 | 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
|
886 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
887 | buf = (char *) str; |
|
12813
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
888 | out = g_string_new(""); |
|
6f67cfa0e6a0
[gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents:
12802
diff
changeset
|
889 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
890 | while( (b = strstr(buf, "&#")) ) { |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
891 | gunichar wc; |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
892 | int base = 0; |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
893 | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
894 | /* append everything leading up to the &# */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
895 | g_string_append_len(out, buf, b-buf); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
896 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
897 | b += 2; /* skip past the &# */ |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
898 | |
|
13489
6fbb8904f434
[gaim-migrate @ 15864]
Christopher O'Brien <siege@pidgin.im>
parents:
13465
diff
changeset
|
899 | /* 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
|
900 | if(*b == 'x' || *b == 'X') { |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
901 | base = 16; |
|
13489
6fbb8904f434
[gaim-migrate @ 15864]
Christopher O'Brien <siege@pidgin.im>
parents:
13465
diff
changeset
|
902 | b++; |
|
6fbb8904f434
[gaim-migrate @ 15864]
Christopher O'Brien <siege@pidgin.im>
parents:
13465
diff
changeset
|
903 | } |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
904 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
905 | /* advances buf to the end of the ncr segment */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
906 | wc = (gunichar) strtoul(b, &buf, base); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
907 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
908 | /* this mimics the previous impl of ncr_decode */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
909 | if(*buf == ';') { |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
910 | g_string_append_unichar(out, wc); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
911 | buf++; |
| 9161 | 912 | } |
| 913 | } | |
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
914 | |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
915 | /* append whatever's left */ |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
916 | g_string_append(out, buf); |
|
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
917 | |
| 9161 | 918 | return g_string_free(out, FALSE); |
| 919 | } | |
| 920 | ||
|
12880
eb39a798ff9a
[gaim-migrate @ 15232]
Christopher O'Brien <siege@pidgin.im>
parents:
12813
diff
changeset
|
921 | |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
922 | int |
| 15884 | 923 | purple_utf8_strcasecmp(const char *a, const char *b) |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
924 | { |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
925 | char *a_norm = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
926 | char *b_norm = NULL; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
927 | int ret = -1; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
928 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
929 | if(!a && b) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
930 | return -1; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
931 | else if(!b && a) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
932 | return 1; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
933 | else if(!a && !b) |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
934 | return 0; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
935 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
936 | 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
|
937 | { |
| 15884 | 938 | purple_debug_error("purple_utf8_strcasecmp", |
|
7108
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
939 | "One or both parameters are invalid UTF8\n"); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
940 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
941 | } |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
942 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
943 | a_norm = g_utf8_casefold(a, -1); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
944 | b_norm = g_utf8_casefold(b, -1); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
945 | ret = g_utf8_collate(a_norm, b_norm); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
946 | g_free(a_norm); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
947 | g_free(b_norm); |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
948 | |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
949 | return ret; |
|
82655fa54acb
[gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents:
7107
diff
changeset
|
950 | } |
| 7162 | 951 | |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
952 | /* previously conversation::find_nick() */ |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13164
diff
changeset
|
953 | gboolean |
| 15884 | 954 | purple_utf8_has_word(const char *haystack, const char *needle) |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
955 | { |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
956 | 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
|
957 | 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
|
958 | gunichar before, after; |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
959 | int n; |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
960 | gboolean ret = FALSE; |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
961 | |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
962 | start = hay = g_utf8_strdown(haystack, -1); |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
963 | |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
964 | pin = g_utf8_strdown(needle, -1); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
965 | n = strlen(pin); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
966 | |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
967 | 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
|
968 | 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
|
969 | before = -2; |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
970 | 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
|
971 | 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
|
972 | } |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
973 | 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
|
974 | |
|
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
975 | 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
|
976 | /* 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
|
977 | ("!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
|
978 | 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
|
979 | 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
|
980 | (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
|
981 | && after != (gunichar)-2 && !g_unichar_isalnum(after)) { |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
982 | 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
|
983 | break; |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
984 | } |
|
25276
b178d389afe0
Make purple_utf8_has_word() better about detecting word boundaries (still not
Daniel Atallah <datallah@pidgin.im>
parents:
24857
diff
changeset
|
985 | start = p + 1; |
|
11552
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
986 | } |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
987 | |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
988 | g_free(pin); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
989 | g_free(hay); |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
990 | |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
991 | return ret; |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
992 | } |
|
674a2a79943a
[gaim-migrate @ 13812]
Casey Harkins <charkins@pidgin.im>
parents:
11493
diff
changeset
|
993 | |
|
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
|
994 | gboolean purple_message_meify(char *message, gssize len) |
| 7564 | 995 | { |
| 996 | char *c; | |
| 997 | gboolean inside_html = FALSE; | |
| 998 | ||
| 999 | g_return_val_if_fail(message != NULL, FALSE); | |
| 1000 | ||
| 1001 | if(len == -1) | |
| 1002 | len = strlen(message); | |
| 1003 | ||
| 1004 | for (c = message; *c; c++, len--) { | |
| 1005 | if(inside_html) { | |
| 1006 | if(*c == '>') | |
| 1007 | inside_html = FALSE; | |
| 1008 | } else { | |
| 1009 | if(*c == '<') | |
| 1010 | inside_html = TRUE; | |
| 1011 | else | |
| 1012 | break; | |
| 1013 | } | |
| 1014 | } | |
| 1015 | ||
| 1016 | if(*c && !g_ascii_strncasecmp(c, "/me ", 4)) { | |
| 1017 | memmove(c, c+4, len-3); | |
| 1018 | return TRUE; | |
| 1019 | } | |
| 1020 | ||
| 1021 | return FALSE; | |
| 1022 | } | |
| 1023 | ||
| 15884 | 1024 | char *purple_text_strip_mnemonic(const char *in) |
| 7889 | 1025 | { |
| 1026 | char *out; | |
| 1027 | char *a; | |
| 8561 | 1028 | char *a0; |
| 7889 | 1029 | const char *b; |
| 1030 | ||
| 1031 | g_return_val_if_fail(in != NULL, NULL); | |
| 1032 | ||
| 1033 | out = g_malloc(strlen(in)+1); | |
| 1034 | a = out; | |
| 1035 | b = in; | |
| 1036 | ||
| 8561 | 1037 | a0 = a; /* The last non-space char seen so far, or the first char */ |
| 1038 | ||
| 7889 | 1039 | while(*b) { |
| 1040 | if(*b == '_') { | |
| 8561 | 1041 | if(a > out && b > in && *(b-1) == '(' && *(b+1) && !(*(b+1) & 0x80) && *(b+2) == ')') { |
| 1042 | /* Detected CJK style shortcut (Bug 875311) */ | |
| 1043 | a = a0; /* undo the left parenthesis */ | |
| 1044 | b += 3; /* and skip the whole mess */ | |
| 1045 | } else if(*(b+1) == '_') { | |
| 7889 | 1046 | *(a++) = '_'; |
| 1047 | b += 2; | |
| 8561 | 1048 | a0 = a; |
| 7889 | 1049 | } else { |
| 1050 | b++; | |
| 1051 | } | |
| 8561 | 1052 | /* We don't want to corrupt the middle of UTF-8 characters */ |
| 1053 | } else if (!(*b & 0x80)) { /* other 1-byte char */ | |
| 1054 | if (*b != ' ') | |
| 1055 | a0 = a; | |
| 1056 | *(a++) = *(b++); | |
| 7889 | 1057 | } else { |
| 8561 | 1058 | /* Multibyte utf8 char, don't look for _ inside these */ |
| 1059 | int n = 0; | |
| 1060 | int i; | |
| 1061 | if ((*b & 0xe0) == 0xc0) { | |
| 1062 | n = 2; | |
| 1063 | } else if ((*b & 0xf0) == 0xe0) { | |
| 1064 | n = 3; | |
| 1065 | } else if ((*b & 0xf8) == 0xf0) { | |
| 1066 | n = 4; | |
| 1067 | } else if ((*b & 0xfc) == 0xf8) { | |
| 1068 | n = 5; | |
| 1069 | } else if ((*b & 0xfe) == 0xfc) { | |
| 1070 | n = 6; | |
| 1071 | } else { /* Illegal utf8 */ | |
| 1072 | n = 1; | |
| 1073 | } | |
| 1074 | a0 = a; /* unless we want to delete CJK spaces too */ | |
| 1075 | for (i = 0; i < n && *b; i += 1) { | |
| 1076 | *(a++) = *(b++); | |
| 1077 | } | |
| 7889 | 1078 | } |
| 1079 | } | |
| 1080 | *a = '\0'; | |
| 1081 | ||
| 1082 | return out; | |
| 1083 | } | |
| 1084 | ||
| 15884 | 1085 | /* this is almost identical to purple_url_encode (hence purple_url_decode |
| 9926 | 1086 | * being used above), but we want to keep certain characters unescaped |
| 1087 | * for compat reasons */ | |
| 1088 | const char * | |
| 15884 | 1089 | purple_escape_filename(const char *str) |
| 9926 | 1090 | { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1091 | const char *iter; |
| 9926 | 1092 | static char buf[BUF_LEN]; |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1093 | char utf_char[6]; |
| 9926 | 1094 | guint i, j = 0; |
| 1095 | ||
| 1096 | g_return_val_if_fail(str != NULL, NULL); | |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1097 | 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
|
1098 | |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1099 | iter = str; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1100 | 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
|
1101 | gunichar c = g_utf8_get_char(iter); |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1102 | /* If the character is an ASCII character and is alphanumeric, |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1103 | * 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
|
1104 | if (c < 128 && (g_ascii_isalnum(c) || c == '@' || c == '-' || |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1105 | c == '_' || c == '.' || c == '#')) { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1106 | buf[j++] = c; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1107 | } else { |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1108 | 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
|
1109 | for (i = 0; (int)i < bytes; i++) { |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1110 | if (j > (BUF_LEN - 4)) |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1111 | break; |
|
36037
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1112 | if (i >= sizeof(utf_char)) { |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1113 | g_warn_if_reached(); |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1114 | break; |
|
e2ef692ff10a
Fix outstaning Coverity bugs
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
36030
diff
changeset
|
1115 | } |
|
10700
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1116 | sprintf(buf + j, "%%%02x", utf_char[i] & 0xff); |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1117 | j += 3; |
|
93f5099b2775
[gaim-migrate @ 12273]
Daniel Atallah <datallah@pidgin.im>
parents:
10636
diff
changeset
|
1118 | } |
| 9926 | 1119 | } |
| 1120 | } | |
|
30414
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1121 | #ifdef _WIN32 |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1122 | /* 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
|
1123 | * 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
|
1124 | */ |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1125 | 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
|
1126 | j--; |
|
b334269e9ecf
Apparently file/directory names in windows cannot end in periods/spaces.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
30413
diff
changeset
|
1127 | #endif |
| 9926 | 1128 | buf[j] = '\0'; |
| 1129 | ||
| 1130 | return buf; | |
| 1131 | } | |
| 1132 | ||
|
22217
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1133 | static void |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1134 | 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
|
1135 | { |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1136 | va_list args; |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1137 | va_start(args, status); |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1138 | 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
|
1139 | va_end(args); |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1140 | } |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1141 | |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1142 | 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
|
1143 | { |
|
41181
e859c41d8996
Create the PurpleAccountManager API
Gary Kramlich <grim@reaperworld.com>
parents:
41155
diff
changeset
|
1144 | PurpleAccountManager *manager = purple_account_manager_get_default(); |
|
e859c41d8996
Create the PurpleAccountManager API
Gary Kramlich <grim@reaperworld.com>
parents:
41155
diff
changeset
|
1145 | GList *list = purple_account_manager_get_all(manager); |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1146 | 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
|
1147 | PurplePresence *presence; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1148 | PurpleStatus *tune; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1149 | PurpleAccount *account = list->data; |
|
41392
b5c84f55d5d2
Remove the ui parameter from purple_account_[gs]et_enabled
Gary Kramlich <grim@reaperworld.com>
parents:
41373
diff
changeset
|
1150 | if (!purple_account_get_enabled(account)) |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1151 | continue; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1152 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1153 | 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
|
1154 | 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
|
1155 | if (!tune) |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1156 | continue; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1157 | if (title) { |
|
22217
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1158 | 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
|
1159 | PURPLE_TUNE_TITLE, title, |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1160 | PURPLE_TUNE_ARTIST, artist, |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1161 | PURPLE_TUNE_ALBUM, album, |
|
f06fcbcb6ca5
Make setting 'now listening' actually work, thanks to khc.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22181
diff
changeset
|
1162 | NULL); |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1163 | } else { |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1164 | 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
|
1165 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1166 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1167 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1168 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1169 | 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
|
1170 | { |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1171 | GString *string; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1172 | char *esc; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1173 | |
|
22181
4b62573becd9
Ignore both NULL and empty strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22133
diff
changeset
|
1174 | 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
|
1175 | return NULL; |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1176 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1177 | 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
|
1178 | 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
|
1179 | 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
|
1180 | g_free(esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1181 | |
|
22181
4b62573becd9
Ignore both NULL and empty strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22133
diff
changeset
|
1182 | 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
|
1183 | 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
|
1184 | 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
|
1185 | g_free(esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1186 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1187 | |
|
22181
4b62573becd9
Ignore both NULL and empty strings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22133
diff
changeset
|
1188 | 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
|
1189 | 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
|
1190 | 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
|
1191 | g_free(esc); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1192 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1193 | |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1194 | 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
|
1195 | } |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21978
diff
changeset
|
1196 | |
|
34808
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1197 | GValue * |
|
35005
bff56dfca65d
Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents:
35001
diff
changeset
|
1198 | 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
|
1199 | { |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1200 | GValue *ret; |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1201 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1202 | 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
|
1203 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1204 | 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
|
1205 | 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
|
1206 | |
|
34822
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1207 | return ret; |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1208 | } |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1209 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1210 | GValue * |
|
35005
bff56dfca65d
Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents:
35001
diff
changeset
|
1211 | purple_value_dup(GValue *value) |
|
34822
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1212 | { |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1213 | GValue *ret; |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1214 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1215 | 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
|
1216 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1217 | ret = g_new0(GValue, 1); |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1218 | 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
|
1219 | g_value_copy(value, ret); |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1220 | |
|
5c3970547cda
Added purple_g_value_dup() to util
Ankit Vani <a@nevitus.org>
parents:
34808
diff
changeset
|
1221 | 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
|
1222 | } |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1223 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1224 | void |
|
35005
bff56dfca65d
Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents:
35001
diff
changeset
|
1225 | 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
|
1226 | { |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1227 | 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
|
1228 | |
|
442af3e72671
Added purple_g_value_new() and purple_g_value_free() to util
Ankit Vani <a@nevitus.org>
parents:
34754
diff
changeset
|
1229 | 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
|
1230 | 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
|
1231 | } |