Beispiel #1
0
const char *str_escape(const char *str)
{
	const char *p;
	string_t *ret;

	/* see if we need to quote it */
	for (p = str; *p != '\0'; p++) {
		if (IS_ESCAPED_CHAR(*p))
			break;
	}

	if (*p == '\0')
		return str;

	/* quote */
	ret = t_str_new((size_t) (p - str) + 128);
	str_append_n(ret, str, (size_t) (p - str));

	for (; *p != '\0'; p++) {
		if (IS_ESCAPED_CHAR(*p))
			str_append_c(ret, '\\');
		str_append_c(ret, *p);
	}
	return str_c(ret);
}
char *ezcfg_util_javascript_var_escaped(const char *src)
{
	int len;
	char *dst;
	char *p;

	if (src == NULL) {
		return NULL;
	}

	len = var_escaped_length(src);
	if (len < 1) {
		return NULL;
	}

	dst = malloc(len);
	if (dst == NULL) {
		return NULL;
	}

	p = dst;
	while(*src != '\0') {
		if (IS_ESCAPED_CHAR(*src)) {
			*p = '\\';
			p++;
		}
		*p++ = *src++;
	}

	/* 0-terminated string */
	*p = '\0';

	return dst;
}
static int var_escaped_length(const char *s)
{
	int len;

	len = 0;
	while(*s != '\0') {
		if (IS_ESCAPED_CHAR(*s)) len++;
		s++;
		len++;
	}

	/* one more for '\0' */
	len++;

	return len;
}