return
filename[0] == '.' ||
+ streq(filename, "lost+found") ||
endswith(filename, "~") ||
endswith(filename, ".rpmnew") ||
endswith(filename, ".rpmsave") ||
int r;
bool need_nl = true;
+ fputs("\x1B[1m", stdout);
+
va_start(ap, text);
vprintf(text, ap);
va_end(ap);
+ fputs("\x1B[0m", stdout);
+
fflush(stdout);
if ((r = read_one_char(stdin, &c, &need_nl)) < 0) {
int release_terminal(void) {
int r = 0, fd;
+ struct sigaction sa_old, sa_new;
- if ((fd = open("/dev/tty", O_RDWR)) < 0)
+ if ((fd = open("/dev/tty", O_RDWR|O_NOCTTY|O_NDELAY)) < 0)
return -errno;
+ /* Temporarily ignore SIGHUP, so that we don't get SIGHUP'ed
+ * by our own TIOCNOTTY */
+
+ zero(sa_new);
+ sa_new.sa_handler = SIG_IGN;
+ sa_new.sa_flags = SA_RESTART;
+ assert_se(sigaction(SIGHUP, &sa_new, &sa_old) == 0);
+
if (ioctl(fd, TIOCNOTTY) < 0)
r = -errno;
+ assert_se(sigaction(SIGHUP, &sa_old, NULL) == 0);
+
close_nointr_nofail(fd);
return r;
}