char *EstEID_jsonString(const char *src) {
	size_t specialSymbolCount = 0u;
	char *s = (char *)src;
	size_t srcLen = 0u;
	for (; *s; srcLen++) if (isEscapedSymbol(*(s++))) specialSymbolCount++;
	if (SIZE_MAX - srcLen < specialSymbolCount)
		return NULL;
	if (SIZE_MAX - srcLen - specialSymbolCount < 1u)
		return NULL;
	char *result = (char*)malloc(srcLen + specialSymbolCount + 1u);
	if (!result)
		return NULL;
	s = (char *)src;
	char *r = result;
	while (*s) {
		if (isEscapedSymbol(*s)) *(r++) = '\\';
		switch (*s) {
			case '\n' : *(r++) = 'n'; break;
			case '\r' : *(r++) = 'r'; break;
			case '\t' : *(r++) = 't'; break;
			default: *(r++) = *s;
		}
		s++;
	}
	*r = 0;
	return result;
}
Ejemplo n.º 2
0
char *EstEID_jsonString(const char *src) {
	int specialSymbolCount = 0;
	char *s = (char *)src;
	while (*s) if (isEscapedSymbol(*(s++))) specialSymbolCount++;
	char *result = (char*)malloc(strlen(src) + specialSymbolCount + 1);
	s = (char *)src;
	char *r = result;
  while (*s) {
		if (isEscapedSymbol(*s)) *(r++) = '\\';
		switch (*s) {
			case '\n' : *(r++) = 'n'; break;
			case '\r' : *(r++) = 'r'; break;
			case '\t' : *(r++) = 't'; break;
			default: *(r++) = *s;
		}
		s++;
	}
	*r = 0;
	return result;
}