X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/b56c88e2847c582f9b18ae5bbda44f033cd49c42..2bd2ea37d43ab626c0139f1fc4d0bdfb23970b03:/uip/prompter.c diff --git a/uip/prompter.c b/uip/prompter.c index 35052e62..304c9a5d 100644 --- a/uip/prompter.c +++ b/uip/prompter.c @@ -227,7 +227,7 @@ abort: if (killp || erasep) { tcsetattr(0, TCSADRAIN, &tio); } - unlink (tmpfil); + (void) m_unlink (tmpfil); done (1); } if (i != 0 || (field[0] != '\n' && field[0] != 0)) { @@ -316,7 +316,7 @@ abort: cpydata (fdi, fdo, tmpfil, drft); close (fdi); close (fdo); - unlink (tmpfil); + (void) m_unlink (tmpfil); context_save (); /* save the context file */ done (0); @@ -329,6 +329,7 @@ getln (char *buffer, int n) { int c; char *cp; + static int quoting = 0; cp = buffer; *cp = 0; @@ -350,12 +351,14 @@ getln (char *buffer, int n) for (;;) { switch (c = getchar ()) { case EOF: + quoting = 0; clearerr (stdin); longjmp (sigenv, DONE); case '\n': - if (cp[-1] == QUOTE) { - cp[-1] = c; + if (quoting) { + *(cp - 1) = c; + quoting = 0; wtuser = 0; return 1; } @@ -365,6 +368,11 @@ getln (char *buffer, int n) return 0; default: + if (c == QUOTE) { + quoting = 1; + } else { + quoting = 0; + } if (cp < buffer + n) *cp++ = c; *cp = 0;