| 91 gchar * |
92 gchar * |
| 92 msim_unescape(const gchar *msg) |
93 msim_unescape(const gchar *msg) |
| 93 { |
94 { |
| 94 GString *gs; |
95 GString *gs; |
| 95 guint i, j; |
96 guint i, j; |
| |
97 guint msg_len; |
| 96 |
98 |
| 97 gs = g_string_new(""); |
99 gs = g_string_new(""); |
| 98 |
100 msg_len = strlen(msg); |
| 99 for (i = 0; i < strlen(msg); ++i) { |
101 |
| |
102 for (i = 0; i < msg_len; ++i) { |
| 100 struct MSIM_ESCAPE_REPLACEMENT *replacement; |
103 struct MSIM_ESCAPE_REPLACEMENT *replacement; |
| 101 gchar replace; |
104 gchar replace; |
| 102 |
105 |
| 103 replace = msg[i]; |
106 replace = msg[i]; |
| 104 |
107 |
| 105 for (j = 0; (replacement = &msim_escape_replacements[j]) && |
108 for (j = 0; (replacement = &msim_escape_replacements[j]) && |
| 106 replacement->code != NULL; ++j) { |
109 replacement->code != NULL; ++j) { |
| 107 if (msg[i] == replacement->code[0] && |
110 if (msg[i] == replacement->code[0] && |
| 108 i + 1 < strlen(msg) && |
111 i + 1 < msg_len && |
| 109 msg[i + 1] == replacement->code[1]) { |
112 msg[i + 1] == replacement->code[1]) { |
| 110 replace = replacement->text; |
113 replace = replacement->text; |
| 111 ++i; |
114 ++i; |
| 112 break; |
115 break; |
| 113 } |
116 } |