一、函数功能概述
sds sdscatrepr(sds s, const char *p, size_t len)
函数的核心功能是将字符串p
追加到字符串s
中。在追加过程中,它会对字符串p
中的字符进行判断,使用isprint()
函数识别不可打印字符,并对这些字符进行转义处理,确保最终追加后的字符串s
符合特定的格式要求 。
此函数主要用在Monitor模式下。
二、原始版本代码分析
sds sdscatrepr(sds s, const char *p, size_t len) {
s = sdscatlen(s,"\"",1);
while(len--) {
switch(*p) {
case '\\':
case '"':
s = sdscatprintf(s,"\\%c",*p);
break;
case '\n': s = sdscatlen(s,"\\n",2); break;
case '\r': s = sdscatlen(s,"\\r",2); break;
case '\t': s = sdscatlen(s,"\\t",2); break;
case '\a': s = sdscatlen(s,"\\a",2); break;
case '\b': s = sdscatlen(s,"\\b",2); break;
default:
if (isprint(*p))
s = sdscatprintf(s,"%c",*p);<