On Sat, Feb 25, 2023 at 09:28:13AM -0300, Crystal Kolipe wrote: > On Sat, Feb 25, 2023 at 11:55:50AM +0100, Peter J. Philipp wrote: > > I have found this function in tcpdump/util.c called fn_printn() that escapes > > text. > > Why would we want to use this function instead of just passing the string > directly to vis? The transformation it performs is not even uniquely > invertible.
As promised I wrote a function called fn_print_vis() for inclusion in tcpdump/util.c so that we can use this in future fixing of printf()'s. Please give this some scrutiny and commit it to util if you like it. Until then I view this bug report as AWAITING RESPONSE :-). /* returns -1 on error, 0 on success */ int fn_print_vis(char *bp, int bplen) { char *name, *cp; int i; if (cplen <= 0) return (-1); if (&bp[bplen] > snaplen) return (-1); name = calloc(bplen, 2); /* big enough? */ if (name == NULL) return (-1); cp = name; for (i = 0; i < bplen && bp[i] != '\0'; i++) { cp = vis(cp, bp[i], VIS_WHITE, 0); } printf("%s", name); free(name); return (0); } Best Regards, -peter