/****************************************************************************
- * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_mvcur.c,v 1.141 2017/04/07 00:34:22 tom Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.146 2018/03/03 22:40:47 tom Exp $")
#define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x] /* desired state */
/*
* A different, possibly better way to arrange this would be to set the
- * SCREEN's _endwin to TRUE at window initialization time and let this be
- * called by doupdate's return-from-shellout code.
+ * SCREEN's _endwin at window initialization time and let this be called by
+ * doupdate's return-from-shellout code.
*/
NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_ARG);
}
#endif /* MAIN */
if (usecost != INFINITY) {
+ TR(TRACE_MOVE, ("mvcur tactic %d", tactic));
TPUTS_TRACE("mvcur");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
buffer, 1, myOutCh);
int yold, int xold,
int ynew, int xnew)
{
- return _nc_real_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew,
- NCURSES_SP_NAME(_nc_outch),
- TRUE);
+ int rc;
+ rc = _nc_real_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew,
+ NCURSES_SP_NAME(_nc_outch),
+ TRUE);
+ /*
+ * With the terminal-driver, we cannot distinguish between internal and
+ * external calls. Flush the output if the screen has not been
+ * initialized, e.g., when used from low-level terminfo programs.
+ */
+ if ((SP_PARM != 0) && (SP_PARM->_endwin == ewInitial))
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ return rc;
}
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
{
- return _nc_real_mvcur(NCURSES_SP_ARGx
- yold, xold,
- ynew, xnew,
- NCURSES_SP_NAME(_nc_outch),
- TRUE);
+ int rc;
+ rc = _nc_real_mvcur(NCURSES_SP_ARGx
+ yold, xold,
+ ynew, xnew,
+ NCURSES_SP_NAME(_nc_outch),
+ TRUE);
+ if ((SP_PARM != 0) && (SP_PARM->_endwin == ewInitial))
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ return rc;
}
#else /* !USE_TERM_DRIVER */
int fy, fx, ty, tx, n, i;
char buf[BUFSIZ], capname[BUFSIZ];
- (void) fputs("> ", stdout);
- (void) fgets(buf, sizeof(buf), stdin);
+ if (fputs("> ", stdout) == EOF)
+ break;
+ if (fgets(buf, sizeof(buf), stdin) == 0)
+ break;
if (buf[0] == '?') {
(void) puts("? -- display this help message");