string.c
changeset 4370 c7bd128b1670
parent 4300 687a17c9c557
child 4912 d04b3f2bca70
equal deleted inserted replaced
4369:02b9ab2cf501 4370:c7bd128b1670
    50 	va_list va;
    50 	va_list va;
    51 	int len;
    51 	int len;
    52 	char* p;
    52 	char* p;
    53 
    53 
    54 	va_start(va, str);
    54 	va_start(va, str);
    55 	len = vsprintf(buf, str, va);
    55 	len = vsnprintf(buf, lengthof(buf), str, va);
    56 	va_end(va);
    56 	va_end(va);
    57 	p = malloc(len + 1);
    57 	p = malloc(len + 1);
    58 	if (p != NULL) memcpy(p, buf, len + 1);
    58 	if (p != NULL) memcpy(p, buf, len + 1);
    59 	return p;
    59 	return p;
    60 }
    60 }
    99 
    99 
   100 void strtolower(char *str)
   100 void strtolower(char *str)
   101 {
   101 {
   102 	for (; *str != '\0'; str++) *str = tolower(*str);
   102 	for (; *str != '\0'; str++) *str = tolower(*str);
   103 }
   103 }
       
   104 
       
   105 #ifdef WIN32
       
   106 int CDECL snprintf(char *str, size_t size, const char *format, ...)
       
   107 {
       
   108 	va_list ap;
       
   109 	int ret;
       
   110 
       
   111 	va_start(ap, format);
       
   112 	ret = vsnprintf(str, size, format, ap);
       
   113 	va_end(ap);
       
   114 	return ret;
       
   115 }
       
   116 
       
   117 #ifdef _MSC_VER
       
   118 int CDECL vsnprintf(char *str, size_t size, const char *format, va_list ap)
       
   119 {
       
   120 	int ret;
       
   121 	ret = _vsnprintf(str, size, format, ap);
       
   122 	if (ret < 0) str[size - 1] = '\0';
       
   123 	return ret;
       
   124 }
       
   125 #endif /* _MSC_VER */
       
   126 
       
   127 #endif /* WIN32 */