char *tmpfil;
m_getfld_state_t gstate = 0;
-#ifdef LOCALE
- setlocale(LC_ALL, "");
-#endif
- invo_name = r1bindex (argv[0], '/');
-
- /* read user profile/context */
- context_read();
+ if (nmh_init(argv[0], 2)) { return 1; }
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
if ((in = fopen (drft, "r")) == NULL)
adios (drft, "unable to open");
- tmpfil = m_mktemp2(NULL, invo_name, NULL, &out);
- if (tmpfil == NULL) adios("prompter", "unable to create temporary file");
- chmod (tmpfil, 0600);
+ if ((tmpfil = m_mktemp2(NULL, invo_name, NULL, &out)) == NULL) {
+ adios(NULL, "unable to create temporary file in %s", get_temp_dir());
+ }
/*
* Are we changing the kill or erase character?
if (killp || erasep) {
tcsetattr(0, TCSADRAIN, &tio);
}
- unlink (tmpfil);
+ (void) m_unlink (tmpfil);
done (1);
}
if (i != 0 || (field[0] != '\n' && field[0] != 0)) {
cpydata (fdi, fdo, tmpfil, drft);
close (fdi);
close (fdo);
- unlink (tmpfil);
+ (void) m_unlink (tmpfil);
context_save (); /* save the context file */
done (0);
{
int c;
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:
+ 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;
}
return 0;
default:
+ if (c == QUOTE) {
+ quoting = 1;
+ } else {
+ quoting = 0;
+ }
if (cp < buffer + n)
*cp++ = c;
*cp = 0;