lsb_err_value lsb_serialize_binary(lsb_output_buffer *ob, const void *src, size_t len) { lsb_err_value ret = NULL; const char *uc = (const char *)src; for (unsigned i = 0; !ret && i < len; ++i) { switch (uc[i]) { case '\n': ret = lsb_outputs(ob, "\\n", 2); break; case '\r': ret = lsb_outputs(ob, "\\r", 2); break; case '"': ret = lsb_outputs(ob, "\\\"", 2); break; case '\\': ret = lsb_outputs(ob, "\\\\", 2); break; default: ret = lsb_outputc(ob, uc[i]); break; } } return ret; }
void Put(Ch c) { const char *err = lsb_outputc(ob_, c); if (err) err_ = err; }