equal
deleted
inserted
replaced
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 */ |