1.1 --- a/core/sm_stringutil.cpp Thu Sep 17 13:08:18 2009 -0400
1.2 +++ b/core/sm_stringutil.cpp Sat Sep 26 17:12:23 2009 -0400
1.3 @@ -1580,3 +1580,50 @@
1.4 return str;
1.5 }
1.6
1.7 +size_t UTIL_DecodeHexString(unsigned char *buffer, size_t maxlength, const char *hexstr)
1.8 +{
1.9 + size_t written = 0;
1.10 + size_t length = strlen(hexstr);
1.11 +
1.12 + for (size_t i = 0; i < length; i++)
1.13 + {
1.14 + if (written >= maxlength)
1.15 + break;
1.16 + buffer[written++] = hexstr[i];
1.17 + if (hexstr[i] == '\\' && hexstr[i + 1] == 'x')
1.18 + {
1.19 + if (i + 3 >= length)
1.20 + continue;
1.21 + /* Get the hex part. */
1.22 + char s_byte[3];
1.23 + int r_byte;
1.24 + s_byte[0] = hexstr[i + 2];
1.25 + s_byte[1] = hexstr[i + 3];
1.26 + s_byte[2] = '\0';
1.27 + /* Read it as an integer */
1.28 + sscanf(s_byte, "%x", &r_byte);
1.29 + /* Save the value */
1.30 + buffer[written - 1] = r_byte;
1.31 + /* Adjust index */
1.32 + i += 3;
1.33 + }
1.34 + }
1.35 +
1.36 + return written;
1.37 +}
1.38 +
1.39 +char *UTIL_ToLowerCase(const char *str)
1.40 +{
1.41 + size_t len = strlen(str);
1.42 + char *buffer = new char[len + 1];
1.43 + for (size_t i = 0; i < len; i++)
1.44 + {
1.45 + if (str[i] >= 'A' && str[i] <= 'Z')
1.46 + buffer[i] = tolower(str[i]);
1.47 + else
1.48 + buffer[i] = str[i];
1.49 + }
1.50 + buffer[len] = '\0';
1.51 + return buffer;
1.52 +}
1.53 +