-#ifdef ICONV_OPTION
- if (convert) {
- iconv(ic_send, NULL, 0, NULL, 0);
- defer_forwarding_messages++;
- while (len) {
- ICONV_CONST char *ibuf = (ICONV_CONST char *)buf;
- char *obuf = buffer;
- size_t ocnt = sizeof buffer;
- while (len && iconv(ic_send, &ibuf,&len,
- &obuf,&ocnt) == (size_t)-1) {
- if (errno == E2BIG || !ocnt)
- break;
- *obuf++ = *ibuf++;
- ocnt--, len--;
- }
- n = obuf - buffer;
- writefd_unbuffered(fd, buffer, n);
- }
- if (!--defer_forwarding_messages)
- msg_flush();
- } else
-#endif
- if (len) {
- defer_forwarding_messages++;
- writefd_unbuffered(fd, buf, len);
- if (!--defer_forwarding_messages)
- msg_flush();
- }