comparison src/util.c @ 10800:8002e95c0809

[gaim-migrate @ 12446] Fix URL and filename encoding in non-UTF8 locales where isalnum is true for some non-ASCII characters committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Sat, 09 Apr 2005 14:12:38 +0000
parents c4cb90065e1d
children 6240d7fd5b2c
comparison
equal deleted inserted replaced
10799:6f67d4088da0 10800:8002e95c0809
3073 g_return_val_if_fail(g_utf8_validate(str, -1, NULL), NULL); 3073 g_return_val_if_fail(g_utf8_validate(str, -1, NULL), NULL);
3074 3074
3075 iter = str; 3075 iter = str;
3076 for (; *iter && j < (BUF_LEN - 1) ; iter = g_utf8_next_char(iter)) { 3076 for (; *iter && j < (BUF_LEN - 1) ; iter = g_utf8_next_char(iter)) {
3077 gunichar c = g_utf8_get_char(iter); 3077 gunichar c = g_utf8_get_char(iter);
3078 /* If the character is an ASCII character and is alphanumeric, 3078 /* If the character is an ASCII character and is alphanumeric
3079 * or one of the specified values, no need to escape */ 3079 * no need to escape */
3080 if (c < 256 && isalnum(c)) { 3080 if (c < 128 && isalnum(c)) {
3081 buf[j++] = c; 3081 buf[j++] = c;
3082 } else { 3082 } else {
3083 int bytes = g_unichar_to_utf8(c, utf_char); 3083 int bytes = g_unichar_to_utf8(c, utf_char);
3084 for (i = 0; i < bytes; i++) { 3084 for (i = 0; i < bytes; i++) {
3085 if (j > (BUF_LEN - 4)) 3085 if (j > (BUF_LEN - 4))
3450 iter = str; 3450 iter = str;
3451 for (; *iter && j < (BUF_LEN - 1) ; iter = g_utf8_next_char(iter)) { 3451 for (; *iter && j < (BUF_LEN - 1) ; iter = g_utf8_next_char(iter)) {
3452 gunichar c = g_utf8_get_char(iter); 3452 gunichar c = g_utf8_get_char(iter);
3453 /* If the character is an ASCII character and is alphanumeric, 3453 /* If the character is an ASCII character and is alphanumeric,
3454 * or one of the specified values, no need to escape */ 3454 * or one of the specified values, no need to escape */
3455 if (c < 256 && (isalnum(c) || c == '@' || c == '-' || 3455 if (c < 128 && (isalnum(c) || c == '@' || c == '-' ||
3456 c == '_' || c == '.' || c == '#')) { 3456 c == '_' || c == '.' || c == '#')) {
3457 buf[j++] = c; 3457 buf[j++] = c;
3458 } else { 3458 } else {
3459 int bytes = g_unichar_to_utf8(c, utf_char); 3459 int bytes = g_unichar_to_utf8(c, utf_char);
3460 for (i = 0; i < bytes; i++) { 3460 for (i = 0; i < bytes; i++) {