static const char * _iostream_error_string (struct _mu_stream *str, int rc) { struct _mu_iostream *sp = (struct _mu_iostream *)str; mu_stream_t transport = sp->transport[sp->last_err_str]; if (transport) return mu_stream_strerror (transport, rc); return mu_strerror (rc); }
static const char * _streamref_error_string (struct _mu_stream *str, int rc) { struct _mu_streamref *sp = (struct _mu_streamref *)str; const char *p = mu_stream_strerror (sp->transport, rc); if (!p) p = mu_strerror (rc); return p; }
static int set_strerr_flt () { mu_stream_t flt, trans[2]; int rc; rc = mu_stream_ioctl (mu_strerr, MU_IOCTL_TOPSTREAM, MU_IOCTL_OP_GET, trans); if (rc == 0) { char sessidstr[10]; char *argv[] = { "inline-comment", NULL, "-S", NULL }; snprintf (sessidstr, sizeof sessidstr, "%08lx:", mu_session_id); argv[1] = sessidstr; rc = mu_filter_create_args (&flt, trans[0], "inline-comment", 3, (const char **)argv, MU_FILTER_ENCODE, MU_STREAM_WRITE); mu_stream_unref (trans[0]); if (rc == 0) { mu_stream_set_buffer (flt, mu_buffer_line, 0); trans[0] = flt; trans[1] = NULL; rc = mu_stream_ioctl (mu_strerr, MU_IOCTL_TOPSTREAM, MU_IOCTL_OP_SET, trans); mu_stream_unref (trans[0]); if (rc) mu_error (_("%s failed: %s"), "MU_IOCTL_SET_STREAM", mu_stream_strerror (mu_strerr, rc)); } else mu_error (_("cannot create log filter stream: %s"), mu_strerror (rc)); } else { mu_error (_("%s failed: %s"), "MU_IOCTL_GET_STREAM", mu_stream_strerror (mu_strerr, rc)); } return rc; }
int imap4d_init_tls_server () { mu_stream_t tlsstream, stream[2]; int rc; rc = mu_stream_ioctl (iostream, MU_IOCTL_SUBSTREAM, MU_IOCTL_OP_GET, stream); if (rc) { mu_error (_("%s failed: %s"), "MU_IOCTL_GET_STREAM", mu_stream_strerror (iostream, rc)); return 1; } rc = mu_tls_server_stream_create (&tlsstream, stream[0], stream[1], 0); if (rc) { mu_diag_output (MU_DIAG_ERROR, _("cannot open TLS stream: %s"), mu_stream_strerror (tlsstream, rc)); return 1; } mu_stream_unref (stream[0]); mu_stream_unref (stream[1]); stream[0] = stream[1] = tlsstream; rc = mu_stream_ioctl (iostream, MU_IOCTL_SUBSTREAM, MU_IOCTL_OP_SET, stream); if (rc) { mu_error (_("%s failed: %s"), "MU_IOCTL_SET_STREAM", mu_stream_strerror (iostream, rc)); imap4d_bye (ERR_STREAM_CREATE); } mu_stream_unref (stream[0]); mu_stream_unref (stream[1]); return 0; }
static void check_input_err (int rc, size_t sz) { if (rc) { const char *p = mu_stream_strerror (iostream, rc); if (!p) p = mu_strerror (rc); mu_diag_output (MU_DIAG_INFO, _("error reading from input file: %s"), p); imap4d_bye (ERR_NO_IFILE); } else if (sz == 0) { mu_diag_output (MU_DIAG_INFO, _("unexpected eof on input")); imap4d_bye (ERR_NO_IFILE); } }
void ioloop (char *id, mu_stream_t in, mu_stream_t out) { char *buf = NULL; size_t size = 0, n; int rc; while ((rc = mu_stream_getline (in, &buf, &size, &n)) == 0 && n > 0) { if (rc) { mu_error("%s: read error: %s", id, mu_stream_strerror (in, rc)); exit (1); } MU_ASSERT (mu_stream_write (out, buf, n, NULL)); } mu_stream_flush (out); if (verbose) fprintf (stderr, "%s exited\n", id); }