Exemplo n.º 1
0
static ssize_t
cc_write(Sfio_t* sp, const void* buf, size_t n, Sfdisc_t* disc)
{
	register State_t*	state = (State_t*)((Codex_t*)disc)->data;
	char*			fb;
	char*			tb;
	size_t			fn;
	size_t			tn;
	size_t			r;

	fb = (char*)buf;
	fn = n;
	n = 0;
	while (fn > 0)
	{
		tb = (char*)state->buf;
		tn = sizeof(buf);
		if ((r = iconv(state->cvt, &fb, &fn, &tb, &tn)) == (size_t)(-1))
			return n ? n : -1;
		n += r;
		if (sfwr(sp, state->buf, r, disc) != r)
			return n ? n : -1;
	}
	return n;
}
Exemplo n.º 2
0
static int
flush(register State_t* state, int c)
{
	size_t	n;

	if (c < 0 && state->col)
	{
		state->col = 0;
		PUTCHAR(state, '=');
		PUTCHAR(state, '\n');
	}
	if (state->bp && (n = state->bp - state->buf) && sfwr(state->codex->sp, state->buf, n, &state->codex->sfdisc) != n)
		return EOF;
	state->be = (state->bp = state->buf) + sizeof(state->buf);
	if (c >= 0)
		*state->bp++ = c;
	return 0;
}
Exemplo n.º 3
0
ssize_t sasl_write(Sfio_t *f, const Void_t *buf, size_t size, Sfdisc_t *disc)
{
    int result;
    const char *outbuf;
    int outlen;
    Sasldisc_t *sd = (Sasldisc_t *) disc;

    result = sasl_encode(sd->conn, buf, size, &outbuf, &outlen);

    if (result != SASL_OK) {
	return -1;
    }

    if (outbuf != NULL) {
	sfwr(f, outbuf, outlen, disc);
    }

    return size;
}