| 206 | } |
| 207 | |
| 208 | static char* getVersion(const char* str, const char* delims) { |
| 209 | if (str == NULL || delims == NULL) { |
| 210 | return NULL; |
| 211 | } |
| 212 | size_t str_len = strlen(str); |
| 213 | char* result = new char[str_len + 1]; |
| 214 | if (result == NULL) { |
| 215 | return NULL; |
| 216 | } |
| 217 | const char* delim_ptr = strstr(str, delims); |
| 218 | if (delim_ptr != NULL) { |
| 219 | size_t delims_len = strlen(delims); |
| 220 | size_t prefix_len = ((unsigned long) delim_ptr - (unsigned long) str) / sizeof(char) + 1; |
| 221 | size_t suffix_len = str_len - prefix_len - delims_len + 1; |
| 222 | strncpy(result, delim_ptr + delims_len, suffix_len); |
| 223 | result[suffix_len] = '\0'; |
| 224 | } else { |
| 225 | strncpy(result, str, str_len); |
| 226 | result[str_len] = '\0'; |
| 227 | } |
| 228 | return result; |
| 229 | } |
| 230 | |
| 231 | static char* getSocketName(const char* str, const char* delims) { |
| 232 | if (str == NULL || delims == NULL) { |