X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=progs%2Ftset.c;h=8bc502a36967b7afeabe4709ca3641b893262106;hb=75a9c36c205ebefe07580acd0b1053a2abbd44b9;hp=c46977c966918cb11c71d0b9bb14d2bcbb2192e8;hpb=1f7a36fe16b11bb4aab51be89bbc1b0f75936b78;p=ncurses.git diff --git a/progs/tset.c b/progs/tset.c index c46977c9..8bc502a3 100644 --- a/progs/tset.c +++ b/progs/tset.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020-2021,2024 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -91,14 +91,14 @@ #include #include -#if HAVE_GETTTYNAM && HAVE_TTYENT_H +#if HAVE_GETTTYNAM #include #endif #ifdef NeXT char *ttyname(int fd); #endif -MODULE_ID("$Id: tset.c,v 1.123 2020/08/29 23:32:18 tom Exp $") +MODULE_ID("$Id: tset.c,v 1.134 2024/04/13 18:59:53 tom Exp $") #ifndef environ extern char **environ; @@ -108,7 +108,7 @@ const char *_nc_progname = "tset"; #define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c)) -static void exit_error(void) GCC_NORETURN; +static GCC_NORETURN void exit_error(void); static int CaselessCmp(const char *a, const char *b) @@ -122,7 +122,7 @@ CaselessCmp(const char *a, const char *b) return LOWERCASE(*a) - LOWERCASE(*b); } -static void +static GCC_NORETURN void exit_error(void) { restore_tty_settings(); @@ -132,7 +132,7 @@ exit_error(void) /* NOTREACHED */ } -static void +static GCC_NORETURN void err(const char *fmt, ...) { va_list ap; @@ -144,7 +144,7 @@ err(const char *fmt, ...) /* NOTREACHED */ } -static void +static GCC_NORETURN void failed(const char *msg) { char temp[BUFSIZ]; @@ -167,7 +167,6 @@ static const char * askuser(const char *dflt) { static char answer[256]; - char *p; /* We can get recalled; if so, don't continue uselessly. */ clearerr(stdin); @@ -176,7 +175,10 @@ askuser(const char *dflt) exit_error(); /* NOTREACHED */ } + for (;;) { + char *p; + if (dflt) (void) fprintf(stderr, "Terminal type? [%s] ", dflt); else @@ -231,8 +233,11 @@ typedef struct speeds { int speed; } SPEEDS; -#if (defined(_WIN32) || defined(_WIN64)) -static const SPEEDS speeds[] = { { "0", 0 } }; +#if defined(EXP_WIN32_DRIVER) +static const SPEEDS speeds[] = +{ + {"0", 0} +}; #else static const SPEEDS speeds[] = { @@ -540,12 +545,14 @@ get_termcap_entry(int fd, char *userarg) int errret; char *p; const char *ttype; +#if HAVE_PATH_TTYS #if HAVE_GETTTYNAM struct ttyent *t; #else FILE *fp; #endif char *ttypath; +#endif /* HAVE_PATH_TTYS */ (void) fd; @@ -558,6 +565,7 @@ get_termcap_entry(int fd, char *userarg) if ((ttype = getenv("TERM")) != 0) goto map; +#if HAVE_PATH_TTYS if ((ttypath = ttyname(fd)) != 0) { p = _nc_basename(ttypath); #if HAVE_GETTTYNAM @@ -595,6 +603,7 @@ get_termcap_entry(int fd, char *userarg) } #endif /* HAVE_GETTTYNAM */ } +#endif /* HAVE_PATH_TTYS */ /* If still undefined, use "unknown". */ ttype = "unknown"; @@ -770,7 +779,7 @@ main(int argc, char **argv) bool opt_w = FALSE; /* set window-size */ TTY mode, oldmode; - my_fd = STDERR_FILENO; + _nc_progname = _nc_rootname(*argv); obsolete(argv); noinit = noset = quiet = Sflag = sflag = showterm = 0; while ((ch = getopt(argc, argv, "a:cd:e:Ii:k:m:p:qQrSsVw")) != -1) { @@ -829,7 +838,6 @@ main(int argc, char **argv) } } - _nc_progname = _nc_rootname(*argv); argc -= optind; argv += optind; @@ -843,7 +851,7 @@ main(int argc, char **argv) oldmode = mode; #ifdef TERMIOS ospeed = (NCURSES_OSPEED) cfgetospeed(&mode); -#elif (defined(_WIN32) || defined(_WIN64)) +#elif defined(EXP_WIN32_DRIVER) ospeed = 0; #else ospeed = (NCURSES_OSPEED) mode.sg_ospeed; @@ -851,7 +859,7 @@ main(int argc, char **argv) if (same_program(_nc_progname, PROG_RESET)) { reset_start(stderr, TRUE, FALSE); - reset_tty_settings(my_fd, &mode); + reset_tty_settings(my_fd, &mode, noset); } else { reset_start(stderr, FALSE, TRUE); } @@ -870,9 +878,13 @@ main(int argc, char **argv) if (!noinit) { if (send_init_strings(my_fd, &oldmode)) { + const char *name; + (void) putc('\r', stderr); (void) fflush(stderr); - (void) napms(1000); /* Settle the terminal. */ + if (IsRealTty(my_fd, name)) { + (void) napms(1000); /* Settle the terminal. */ + } } }