-
-/*
- * prompter.c -- simple prompting editor front-end
+/* prompter.c -- simple prompting editor front-end
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
#include <h/mh.h>
#include <fcntl.h>
#include <h/signals.h>
+#include <h/utils.h>
+#include "../sbr/m_mktemp.h"
#include <setjmp.h>
#include <termios.h>
int body = 1, prepend = 1, rapid = 0;
int doteof = 0, fdi, fdo, i, state;
char *cp, *drft = NULL, *erasep = NULL;
- char *killp = NULL, name[NAMESZ], field[BUFSIZ];
+ char *killp = NULL, name[NAMESZ], field[NMH_BUFSIZ];
char buffer[BUFSIZ];
char **arguments, **argp;
FILE *in, *out;
char *tmpfil;
m_getfld_state_t gstate = 0;
- if (nmh_init(argv[0], 1)) { return 1; }
+ if (nmh_init(argv[0], 2)) { return 1; }
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
while (state == FLDPLUS) {
fieldsz = sizeof field;
state = m_getfld (&gstate, name, field, &fieldsz, in);
- printf ("%s", field);
- fprintf (out, "%s", field);
+ fputs(field, stdout);
+ fputs(field, out);
}
} else {
/* Else, get value of header field */
do {
if (field[0] != ' ' && field[0] != '\t')
putc (' ', out);
- fprintf (out, "%s", field);
+ fputs(field, out);
} while (i == 1
&& (i = getln (field, sizeof(field))) >= 0);
if (i == -1)
break;
fprintf (out, "--------\n");
if (field[0] == 0 || !prepend)
- printf ("--------\n");
+ puts("--------");
if (field[0]) {
if (prepend && body) {
printf ("\n--------Enter initial text\n\n");
break;
if (buffer[0] == 0)
break;
- fprintf (out, "%s", buffer);
+ fputs(buffer, out);
}
}
do {
- fprintf (out, "%s", field);
+ fputs(field, out);
if (!rapid && !sigint)
- printf ("%s", field);
+ fputs(field, stdout);
} while (state == BODY &&
(fieldsz = sizeof field,
state = m_getfld (&gstate, name, field, &fieldsz, in)));
break;
if (field[0] == 0)
break;
- fprintf (out, "%s", field);
+ fputs(field, out);
}
break;
m_getfld_state_destroy (&gstate);
if (body)
- printf ("--------\n");
+ puts("--------");
fflush (stdout);
fclose (in);
char *cp;
static int quoting = 0;
- cp = buffer;
- *cp = 0;
+ *buffer = 0;
switch (setjmp (sigenv)) {
case OK:
return NOTOK;
}
+ cp = buffer;
+ *cp = 0;
+
for (;;) {
switch (c = getchar ()) {
case EOF: