X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fprompter.c;h=db61fb34d755be86ad1a706c111960b4add5f935;hp=5b2131ce00fc3ab2587d32ec7394ae0937b6ba91;hb=5b792c4424571f05bc2008e3109797d18d7d00d1;hpb=8e5be81f784682822f5e868c1bf3c8624682bd23 diff --git a/uip/prompter.c b/uip/prompter.c index 5b2131c..db61fb3 100644 --- a/uip/prompter.c +++ b/uip/prompter.c @@ -121,58 +121,60 @@ main(int argc, char **argv) while ((cp = *argp++)) if (*cp == '-') { switch (smatch(++cp, switches)) { - case AMBIGSW: - ambigsw(cp, switches); - done(1); - case UNKWNSW: - adios(NULL, "-%s unknown", cp); - - case HELPSW: - snprintf(buffer, sizeof(buffer), - "%s [switches] file", - invo_name); - print_help(buffer, switches, 1); - done(1); - case VERSIONSW: - print_version(invo_name); - done(1); + case AMBIGSW: + ambigsw(cp, switches); + done(1); + case UNKWNSW: + adios(NULL, "-%s unknown", cp); + + case HELPSW: + snprintf(buffer, sizeof(buffer), + "%s [switches] file", + invo_name); + print_help(buffer, switches, 1); + done(1); + case VERSIONSW: + print_version(invo_name); + done(1); + + case ERASESW: + if (!(erasep = *argp++) || *erasep == '-') + adios(NULL, "missing argument to %s", + argp[-2]); + continue; + case KILLSW: + if (!(killp = *argp++) || *killp == '-') + adios(NULL, "missing argument to %s", + argp[-2]); + continue; - case ERASESW: - if (!(erasep = *argp++) || *erasep == '-') - adios(NULL, "missing argument to %s", argp[-2]); - continue; - case KILLSW: - if (!(killp = *argp++) || *killp == '-') - adios(NULL, "missing argument to %s", argp[-2]); - continue; - - case PREPSW: - prepend++; - continue; - case NPREPSW: - prepend = 0; - continue; - - case RAPDSW: - rapid++; - continue; - case NRAPDSW: - rapid = 0; - continue; - - case BODYSW: - body++; - continue; - case NBODYSW: - body = 0; - continue; - - case DOTSW: - doteof++; - continue; - case NDOTSW: - doteof = 0; - continue; + case PREPSW: + prepend++; + continue; + case NPREPSW: + prepend = 0; + continue; + + case RAPDSW: + rapid++; + continue; + case NRAPDSW: + rapid = 0; + continue; + + case BODYSW: + body++; + continue; + case NBODYSW: + body = 0; + continue; + + case DOTSW: + doteof++; + continue; + case NDOTSW: + doteof = 0; + continue; } } else if (!drft) { drft = cp; @@ -255,115 +257,115 @@ main(int argc, char **argv) for (state = FLD;;) { switch (state = m_getfld(state, name, field, sizeof(field), in)) { - case FLD: - case FLDEOF: - case FLDPLUS: - /* - ** Check if the value of field contains - ** anything other than space or tab. - */ - for (cp = field; *cp; cp++) - if (*cp != ' ' && *cp != '\t') - break; - - /* If so, just add header line to draft */ - if (*cp++ != '\n' || *cp != 0) { - printf("%s:%s", name, field); - fprintf(out, "%s:%s", name, field); - while (state == FLDPLUS) { - state = m_getfld(state, name, field, sizeof(field), in); - printf("%s", field); - fprintf(out, "%s", field); - } - } else { - /* Else, get value of header field */ - printf("%s: ", name); - fflush(stdout); - i = getln(field, sizeof(field)); - if (i == -1) { + case FLD: + case FLDEOF: + case FLDPLUS: + /* + ** Check if the value of field contains + ** anything other than space or tab. + */ + for (cp = field; *cp; cp++) + if (*cp != ' ' && *cp != '\t') + break; + + /* If so, just add header line to draft */ + if (*cp++ != '\n' || *cp != 0) { + printf("%s:%s", name, field); + fprintf(out, "%s:%s", name, field); + while (state == FLDPLUS) { + state = m_getfld(state, name, field, + sizeof(field), in); + printf("%s", field); + fprintf(out, "%s", field); + } + } else { + /* Else, get value of header field */ + printf("%s: ", name); + fflush(stdout); + i = getln(field, sizeof(field)); + if (i == -1) { abort: - if (killp || erasep) { + if (killp || erasep) { #ifdef HAVE_TERMIOS_H - tcsetattr(0, TCSADRAIN, &tio); + tcsetattr(0, TCSADRAIN, &tio); #else # ifdef HAVE_TERMIO - ioctl(0, TCSETA, &tio); + ioctl(0, TCSETA, &tio); # else - ioctl(0, TIOCSETN, (char *) &tio); + ioctl(0, TIOCSETN, (char *) &tio); # endif #endif - } - unlink(tmpfil); - done(1); - } - if (i != 0 || (field[0] != '\n' && field[0] != 0)) { - fprintf(out, "%s:", name); - do { - if (field[0] != ' ' && field[0] != '\t') - putc(' ', out); - fprintf(out, "%s", field); - } while (i == 1 && (i = getln(field, sizeof(field))) >= 0); - if (i == -1) - goto abort; } + unlink(tmpfil); + done(1); } - - if (state == FLDEOF) { /* moby hack */ - fprintf(out, "--------\n"); - printf("--------\n"); - if (!body) - break; - goto no_body; + if (i != 0 || (field[0] != '\n' && field[0] != 0)) { + fprintf(out, "%s:", name); + do { + if (field[0] != ' ' && field[0] != '\t') + putc(' ', out); + fprintf(out, "%s", field); + } while (i == 1 && (i = getln(field, sizeof(field))) >= 0); + if (i == -1) + goto abort; } - continue; + } - case BODY: - case BODYEOF: - case FILEEOF: + if (state == FLDEOF) { /* moby hack */ + fprintf(out, "--------\n"); + printf("--------\n"); if (!body) break; - fprintf(out, "--------\n"); - if (field[0] == 0 || !prepend) - printf("--------\n"); - if (field[0]) { - if (prepend && body) { - printf("\n--------Enter initial text\n\n"); - fflush(stdout); - for (;;) { - getln(buffer, sizeof(buffer)); - if (doteof && buffer[0] == '.' && buffer[1] == '\n') - break; - if (buffer[0] == 0) - break; - fprintf(out, "%s", buffer); - } - } + goto no_body; + } + continue; - do { - fprintf(out, "%s", field); - if (!rapid && !sigint) - printf("%s", field); - } while (state == BODY && - (state = m_getfld(state, name, field, sizeof(field), in))); - if (prepend || !body) - break; - else - printf ("\n--------Enter additional text\n\n"); + case BODY: + case BODYEOF: + case FILEEOF: + if (!body) + break; + fprintf(out, "--------\n"); + if (field[0] == 0 || !prepend) + printf("--------\n"); + if (field[0]) { + if (prepend && body) { + printf("\n--------Enter initial text\n\n"); + fflush(stdout); + for (;;) { + getln(buffer, sizeof(buffer)); + if (doteof && buffer[0] == '.' && buffer[1] == '\n') + break; + if (buffer[0] == 0) + break; + fprintf(out, "%s", buffer); + } } + + do { + fprintf(out, "%s", field); + if (!rapid && !sigint) + printf("%s", field); + } while (state == BODY && (state = m_getfld(state, name, field, sizeof(field), in))); + if (prepend || !body) + break; + else + printf ("\n--------Enter additional text\n\n"); + } no_body: - fflush(stdout); - for (;;) { - getln(field, sizeof(field)); - if (doteof && field[0] == '.' && field[1] == '\n') - break; - if (field[0] == 0) - break; - fprintf(out, "%s", field); - } - break; + fflush(stdout); + for (;;) { + getln(field, sizeof(field)); + if (doteof && field[0] == '.' && field[1] == '\n') + break; + if (field[0] == 0) + break; + fprintf(out, "%s", field); + } + break; - default: - adios(NULL, "skeleton is poorly formatted"); + default: + adios(NULL, "skeleton is poorly formatted"); } break; } @@ -413,40 +415,40 @@ getln(char *buffer, int n) *cp = 0; switch (setjmp(sigenv)) { - case OK: - wtuser = 1; - break; + case OK: + wtuser = 1; + break; - case DONE: - wtuser = 0; - return 0; + case DONE: + wtuser = 0; + return 0; - default: - wtuser = 0; - return NOTOK; + default: + wtuser = 0; + return NOTOK; } for (;;) { switch (c = getchar()) { - case EOF: - clearerr(stdin); - longjmp(sigenv, DONE); - - case '\n': - if (cp[-1] == QUOTE) { - cp[-1] = c; - wtuser = 0; - return 1; - } - *cp++ = c; - *cp = 0; + case EOF: + clearerr(stdin); + longjmp(sigenv, DONE); + + case '\n': + if (cp[-1] == QUOTE) { + cp[-1] = c; wtuser = 0; - return 0; + return 1; + } + *cp++ = c; + *cp = 0; + wtuser = 0; + return 0; - default: - if (cp < buffer + n) - *cp++ = c; - *cp = 0; + default: + if (cp < buffer + n) + *cp++ = c; + *cp = 0; } } }