mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-27 06:27:51 +00:00
Support MAKE_TERMOUT and MAKE_TERMERR on MS-Windows.
* w32/compat/posixfcn.c (isatty, ttyname): New functions. * config.h.W32.template (HAVE_TTYNAME): Define. Add a prototype for ttyname.
This commit is contained in:
parent
562344122f
commit
b484efca56
2 changed files with 32 additions and 1 deletions
|
@ -296,7 +296,8 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
|
|||
#define HAVE_ISATTY 1
|
||||
|
||||
/* Define to 1 if you have the `ttyname' function. */
|
||||
/* #undef HAVE_TTYNAME */
|
||||
#define HAVE_TTYNAME 1
|
||||
char *ttyname (int);
|
||||
|
||||
/* Define to 1 if 'n_un.n_name' is a member of 'struct nlist'. */
|
||||
/* #undef HAVE_STRUCT_NLIST_N_UN_N_NAME */
|
||||
|
|
|
@ -454,3 +454,33 @@ dlclose (void *handle)
|
|||
|
||||
#endif /* MAKE_LOAD */
|
||||
|
||||
|
||||
/* MS runtime's isatty returns non-zero for any character device,
|
||||
including the null device, which is not what we want. */
|
||||
int
|
||||
isatty (int fd)
|
||||
{
|
||||
HANDLE fh = (HANDLE) _get_osfhandle (fd);
|
||||
DWORD con_mode;
|
||||
|
||||
if (fh == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
errno = EBADF;
|
||||
return 0;
|
||||
}
|
||||
if (GetConsoleMode (fh, &con_mode))
|
||||
return 1;
|
||||
|
||||
errno = ENOTTY;
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *
|
||||
ttyname (int fd)
|
||||
{
|
||||
/* This "knows" that Make only asks about stdout and stderr. A more
|
||||
sophisticated implementation should test whether FD is open for
|
||||
input or output. We can do that by looking at the mode returned
|
||||
by GetConsoleMode. */
|
||||
return "CONOUT$";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue