Пример #1
0
static const char *
_nc_visbuf2n(int bufnum, const char *buf, int len)
{
    const char *vbuf = 0;
    char *tp;
    int count;

    if (buf == 0)
	return ("(null)");
    if (buf == CANCELLED_STRING)
	return ("(cancelled)");

    if (len < 0)
	len = (int) strlen(buf);

    count = len;
#ifdef TRACE
    vbuf = tp = _nc_trace_buf(bufnum, NormalLen(len));
#else
    {
	static char *mybuf[NUM_VISBUFS];
	int c;

	if (bufnum < 0) {
	    for (c = 0; c < NUM_VISBUFS; ++c) {
		FreeAndNull(mybuf[c]);
	    }
	    tp = 0;
	} else {
	    mybuf[bufnum] = typeRealloc(char, NormalLen(len), mybuf[bufnum]);
	    vbuf = tp = mybuf[bufnum];
	}
    }
#endif
    if (tp != 0) {
	int c;

	*tp++ = D_QUOTE;
	while ((--count >= 0) && (c = *buf++) != '\0') {
	    tp = VisChar(tp, UChar(c), NormalLen(len));
	}
	*tp++ = D_QUOTE;
	*tp = '\0';
    } else {
	vbuf = ("(_nc_visbuf2n failed)");
    }
    return (vbuf);
}
Пример #2
0
static const char *
_nc_visbuf2n(int bufnum, const char *buf, int len)
{
    const char *vbuf;
    char *tp;
    int c;

    if (buf == 0)
	return ("(null)");
    if (buf == CANCELLED_STRING)
	return ("(cancelled)");

    if (len < 0)
	len = (int) strlen(buf);

#ifdef TRACE
    vbuf = tp = _nc_trace_buf(bufnum, NormalLen(len));
#else
    {
	static char *mybuf[4];
	mybuf[bufnum] = typeRealloc(char, NormalLen(len), mybuf[bufnum]);
	vbuf = tp = mybuf[bufnum];
    }
#endif
    if (tp != 0) {
	*tp++ = D_QUOTE;
	while ((--len >= 0) && (c = *buf++) != '\0') {
	    tp = _nc_vischar(tp, UChar(c));
	}
	*tp++ = D_QUOTE;
	*tp++ = '\0';
    } else {
	vbuf = ("(_nc_visbuf2n failed)");
    }
    return (vbuf);
}