From: Ralf Habacker Date: Sun, 28 Feb 2010 20:32:05 +0000 (+0100) Subject: _dbus_string_toupper_ascii(): new function, reviewed by Colin Walters. X-Git-Tag: dbus-1.3.1~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=47e37899a3daf33ab799f674c2dc8ce869cdd5fa;p=thirdparty%2Fdbus.git _dbus_string_toupper_ascii(): new function, reviewed by Colin Walters. --- diff --git a/dbus/dbus-1-symbols.def.in b/dbus/dbus-1-symbols.def.in index e943357d6..ca9eb59a5 100644 --- a/dbus/dbus-1-symbols.def.in +++ b/dbus/dbus-1-symbols.def.in @@ -388,6 +388,7 @@ _dbus_string_skip_white_reverse _dbus_string_split_on_byte _dbus_string_steal_data _dbus_string_tolower_ascii +_dbus_string_toupper_ascii _dbus_string_validate_ascii _dbus_string_validate_nul _dbus_string_validate_utf8 diff --git a/dbus/dbus-string-util.c b/dbus/dbus-string-util.c index 9ca5d6c02..666ffbd46 100644 --- a/dbus/dbus-string-util.c +++ b/dbus/dbus-string-util.c @@ -904,6 +904,38 @@ _dbus_string_test (void) _dbus_string_free (&str); } + { + const char lower_string[] = "toupperstring"; + const char upper_string[] = "TOUPPERSTRING"; + const char upper2_string[] = "TOUPPERstring"; + + if (!_dbus_string_init (&str)) + _dbus_assert_not_reached ("no memory"); + + if (!_dbus_string_append (&str, lower_string)) + _dbus_assert_not_reached ("no memory"); + + _dbus_string_toupper_ascii (&str, 0, _dbus_string_get_length(&str)); + + if (!_dbus_string_equal_c_str (&str, upper_string)) + _dbus_assert_not_reached ("_dbus_string_toupper_ascii failed"); + + _dbus_string_free (&str); + + if (!_dbus_string_init (&str)) + _dbus_assert_not_reached ("no memory"); + + if (!_dbus_string_append (&str, lower_string)) + _dbus_assert_not_reached ("no memory"); + + _dbus_string_toupper_ascii (&str, 0, 7); + + if (!_dbus_string_equal_c_str (&str, upper2_string)) + _dbus_assert_not_reached ("_dbus_string_toupper_ascii failed in partial conversion"); + + _dbus_string_free (&str); + } + return TRUE; } diff --git a/dbus/dbus-string.c b/dbus/dbus-string.c index 6a307b82b..4d799f995 100644 --- a/dbus/dbus-string.c +++ b/dbus/dbus-string.c @@ -2790,6 +2790,37 @@ _dbus_string_tolower_ascii (const DBusString *str, } } +/** + * Converts the given range of the string to upper case. + * + * @param str the string + * @param start first byte index to convert + * @param len number of bytes to convert + */ +void +_dbus_string_toupper_ascii (const DBusString *str, + int start, + int len) +{ + unsigned char *s; + unsigned char *end; + DBUS_STRING_PREAMBLE (str); + _dbus_assert (start >= 0); + _dbus_assert (start <= real->len); + _dbus_assert (len >= 0); + _dbus_assert (len <= real->len - start); + + s = real->str + start; + end = s + len; + + while (s != end) + { + if (*s >= 'a' && *s <= 'z') + *s += 'A' - 'a'; + ++s; + } +} + /** * Checks that the given range of the string is valid UTF-8. If the * given range is not entirely contained in the string, returns diff --git a/dbus/dbus-string.h b/dbus/dbus-string.h index 5a62bddca..cfb6f1630 100644 --- a/dbus/dbus-string.h +++ b/dbus/dbus-string.h @@ -291,6 +291,9 @@ dbus_bool_t _dbus_string_hex_decode (const DBusString *source, void _dbus_string_tolower_ascii (const DBusString *str, int start, int len); +void _dbus_string_toupper_ascii (const DBusString *str, + int start, + int len); dbus_bool_t _dbus_string_validate_ascii (const DBusString *str, int start, int len);