log_sds log_sdscatrepr()

in Sources/aliyun-log-c-sdk/log_sds.c [408:431]


log_sds log_sdscatrepr(log_sds s, const char *p, size_t len) {
    s = log_sdscatlen(s,"\"",1);
    while(len--) {
        switch(*p) {
            case '\\':
            case '"':
                s = log_sdscatprintf(s,"\\%c",*p);
                break;
            case '\n': s = log_sdscatlen(s,"\\n",2); break;
            case '\r': s = log_sdscatlen(s,"\\r",2); break;
            case '\t': s = log_sdscatlen(s,"\\t",2); break;
            case '\a': s = log_sdscatlen(s,"\\a",2); break;
            case '\b': s = log_sdscatlen(s,"\\b",2); break;
            default:
                if (isprint(*p))
                    s = log_sdscatprintf(s,"%c",*p);
                else
                    s = log_sdscatprintf(s,"\\\\x%02x",(unsigned char)*p);
                break;
        }
        p++;
    }
    return log_sdscatlen(s,"\"",1);
}