+
+int
+mexp_printf (mexp_h *h, const char *fs, ...)
+{
+ int r;
+ va_list args;
+
+ va_start (args, fs);
+ r = mexp_vprintf (h, 0, fs, args);
+ va_end (args);
+ return r;
+}
+
+int
+mexp_printf_password (mexp_h *h, const char *fs, ...)
+{
+ int r;
+ va_list args;
+
+ va_start (args, fs);
+ r = mexp_vprintf (h, 1, fs, args);
+ va_end (args);
+ return r;
+}
+
+int
+mexp_send_interrupt (mexp_h *h)
+{
+ return write (h->fd, "\003", 1);
+}
+
+/* Print escaped buffer to fp. */
+static void
+debug_buffer (FILE *fp, const char *buf)
+{
+ while (*buf) {
+ if (isprint (*buf))
+ fputc (*buf, fp);
+ else {
+ switch (*buf) {
+ case '\0': fputs ("\\0", fp); break;
+ case '\a': fputs ("\\a", fp); break;
+ case '\b': fputs ("\\b", fp); break;
+ case '\f': fputs ("\\f", fp); break;
+ case '\n': fputs ("\\n", fp); break;
+ case '\r': fputs ("\\r", fp); break;
+ case '\t': fputs ("\\t", fp); break;
+ case '\v': fputs ("\\v", fp); break;
+ default:
+ fprintf (fp, "\\x%x", (unsigned char) *buf);
+ }
+ }
+ buf++;
+ }
+}