MCPcopy Create free account
hub / github.com/F-Stack/f-stack / xo_escape_sdparams

Function xo_escape_sdparams

tools/libxo/libxo/libxo.c:844–878  ·  view source on GitHub ↗

* PARAM-VALUE = UTF-8-STRING ; characters '"', '\' and * ; ']' MUST be escaped. */

Source from the content-addressed store, hash-verified

842 * ; ']' MUST be escaped.
843 */
844static ssize_t
845xo_escape_sdparams (xo_buffer_t *xbp, ssize_t len, xo_xff_flags_t flags UNUSED)
846{
847 ssize_t delta = 0;
848 char *cp, *ep, *ip;
849
850 for (cp = xbp->xb_curp, ep = cp + len; cp < ep; cp++) {
851 if (*cp == '\\' || *cp == '"' || *cp == ']')
852 delta += 1;
853 }
854
855 if (delta == 0) /* Nothing to escape; bail */
856 return len;
857
858 if (!xo_buf_has_room(xbp, delta)) /* No room; bail, but don't append */
859 return 0;
860
861 ep = xbp->xb_curp;
862 cp = ep + len;
863 ip = cp + delta;
864 do {
865 cp -= 1;
866 ip -= 1;
867
868 if (*cp == '\\' || *cp == '"' || *cp == ']') {
869 *ip-- = *cp;
870 *ip = '\\';
871 } else {
872 *ip = *cp;
873 }
874
875 } while (cp > ep && cp != ip);
876
877 return len + delta;
878}
879
880static void
881xo_buf_escape (xo_handle_t *xop, xo_buffer_t *xbp,

Callers 2

xo_buf_escapeFunction · 0.85
xo_do_format_fieldFunction · 0.85

Calls 1

xo_buf_has_roomFunction · 0.85

Tested by

no test coverage detected