X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/68e6f227c103b3f8d975cd9d4996058d00b31be0..38c0aa73edd0e2951218a7f7f64658eb7a0eebaa:/uip/prompter.c diff --git a/uip/prompter.c b/uip/prompter.c index 303d2ad4..1564852d 100644 --- a/uip/prompter.c +++ b/uip/prompter.c @@ -8,8 +8,9 @@ #include #include #include +#include "h/done.h" #include -#include "../sbr/m_mktemp.h" +#include "sbr/m_mktemp.h" #include #include @@ -40,7 +41,7 @@ DEFINE_SWITCH_ARRAY(PROMPTER, switches); static struct termios tio; -static int wtuser = 0; +static bool wtuser; static int sigint = 0; static jmp_buf sigenv; @@ -64,9 +65,9 @@ main (int argc, char **argv) char **arguments, **argp; FILE *in, *out; char *tmpfil; - m_getfld_state_t gstate = 0; + m_getfld_state_t gstate; - if (nmh_init(argv[0], 2)) { return 1; } + if (nmh_init(argv[0], true, false)) { return 1; } arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -78,7 +79,7 @@ main (int argc, char **argv) ambigsw (cp, switches); done (1); case UNKWNSW: - adios (NULL, "-%s unknown", cp); + die("-%s unknown", cp); case HELPSW: snprintf (buffer, sizeof(buffer), "%s [switches] file", @@ -91,11 +92,11 @@ main (int argc, char **argv) case ERASESW: if (!(erasep = *argp++) || *erasep == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case KILLSW: if (!(killp = *argp++) || *killp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); continue; case PREPSW: @@ -132,12 +133,12 @@ main (int argc, char **argv) } if (!drft) - adios (NULL, "usage: %s [switches] file", invo_name); + die("usage: %s [switches] file", invo_name); if ((in = fopen (drft, "r")) == NULL) adios (drft, "unable to open"); if ((tmpfil = m_mktemp2(NULL, invo_name, NULL, &out)) == NULL) { - adios(NULL, "unable to create temporary file in %s", get_temp_dir()); + die("unable to create temporary file in %s", get_temp_dir()); } /* @@ -182,9 +183,10 @@ main (int argc, char **argv) /* * Loop through the lines of the draft skeleton. */ + gstate = m_getfld_state_init(in); for (;;) { int fieldsz = sizeof field; - switch (state = m_getfld (&gstate, name, field, &fieldsz, in)) { + switch (state = m_getfld2(&gstate, name, field, &fieldsz)) { case FLD: case FLDPLUS: /* @@ -201,7 +203,7 @@ main (int argc, char **argv) fprintf (out, "%s:%s", name, field); while (state == FLDPLUS) { fieldsz = sizeof field; - state = m_getfld (&gstate, name, field, &fieldsz, in); + state = m_getfld2(&gstate, name, field, &fieldsz); fputs(field, stdout); fputs(field, out); } @@ -242,7 +244,7 @@ abort: puts("--------"); if (field[0]) { if (prepend && body) { - printf ("\n--------Enter initial text\n\n"); + puts("\n--------Enter initial text\n"); fflush (stdout); for (;;) { getln (buffer, sizeof(buffer)); @@ -260,11 +262,10 @@ abort: fputs(field, stdout); } while (state == BODY && (fieldsz = sizeof field, - state = m_getfld (&gstate, name, field, &fieldsz, in))); + state = m_getfld2(&gstate, name, field, &fieldsz))); if (prepend || !body) break; - else - printf ("\n--------Enter additional text\n\n"); + puts("\n--------Enter additional text\n"); } fflush (stdout); @@ -279,7 +280,7 @@ abort: break; default: - adios (NULL, "skeleton is poorly formatted"); + die("skeleton is poorly formatted"); } break; } @@ -317,21 +318,21 @@ getln (char *buffer, int n) { int c; char *cp; - static int quoting = 0; + static bool quoting; *buffer = 0; switch (setjmp (sigenv)) { case OK: - wtuser = 1; + wtuser = true; break; case DONE: - wtuser = 0; + wtuser = false; return 0; default: - wtuser = 0; + wtuser = false; return NOTOK; } @@ -341,27 +342,27 @@ getln (char *buffer, int n) for (;;) { switch (c = getchar ()) { case EOF: - quoting = 0; + quoting = false; clearerr (stdin); longjmp (sigenv, DONE); case '\n': if (quoting) { *(cp - 1) = c; - quoting = 0; - wtuser = 0; + quoting = false; + wtuser = false; return 1; } *cp++ = c; *cp = 0; - wtuser = 0; + wtuser = false; return 0; default: if (c == QUOTE) { - quoting = 1; + quoting = true; } else { - quoting = 0; + quoting = false; } if (cp < buffer + n) *cp++ = c; @@ -385,7 +386,7 @@ intrser (int i) static int chrcnv (char *cp) { - return (*cp != QUOTE ? *cp : m_atoi (++cp)); + return *cp != QUOTE ? *cp : m_atoi(++cp); }