static volatile sig_atomic_t signo[NSIG];
-static void handler __P((int));
+static RETSIGTYPE handler __P((int));
static char *getln __P((int, char *, size_t, int));
static char *sudo_askpass __P((const char *));
/* If using a helper program to get the password, run it instead. */
if (ISSET(flags, TGP_ASKPASS) && user_askpass)
- return(sudo_askpass(prompt));
+ return sudo_askpass(prompt);
restart:
for (i = 0; i < NSIG; i++)
sa.sa_handler = SIG_IGN;
(void) sigaction(SIGPIPE, &sa, &savepipe);
- if (prompt)
- (void) write(output, prompt, strlen(prompt));
+ if (prompt) {
+ if (write(output, prompt, strlen(prompt)) == -1)
+ goto restore;
+ }
if (timeout > 0)
alarm(timeout);
alarm(0);
save_errno = errno;
- if (neednl || pass == NULL)
- (void) write(output, "\n", 1);
+ if (neednl || pass == NULL) {
+ if (write(output, "\n", 1) == -1)
+ goto restore;
+ }
+restore:
/* Restore old tty settings and signals. */
if (!ISSET(flags, TGP_ECHO))
term_restore(input, 1);
if (save_errno)
errno = save_errno;
- return(pass);
+ return pass;
}
/*
(void) close(pfd[0]);
(void) sigaction(SIGPIPE, &saved_sa_pipe, NULL);
- return(pass);
+ return pass;
}
extern int term_erase, term_kill;
if (left == 0) {
errno = EINVAL;
- return(NULL); /* sanity */
+ return NULL; /* sanity */
}
while (--left) {
if (feedback) {
if (c == term_kill) {
while (cp > buf) {
- (void) write(fd, "\b \b", 3);
+ if (write(fd, "\b \b", 3) == -1)
+ break;
--cp;
}
left = bufsiz;
continue;
} else if (c == term_erase) {
if (cp > buf) {
- (void) write(fd, "\b \b", 3);
+ if (write(fd, "\b \b", 3) == -1)
+ break;
--cp;
left++;
}
continue;
}
- (void) write(fd, "*", 1);
+ if (write(fd, "*", 1) == -1)
+ /* shut up glibc */;
}
*cp++ = c;
}
if (feedback) {
/* erase stars */
while (cp > buf) {
- (void) write(fd, "\b \b", 3);
+ if (write(fd, "\b \b", 3) == -1)
+ break;
--cp;
}
}
- return(nr == 1 ? buf : NULL);
+ return nr == 1 ? buf : NULL;
}
-static void
+static RETSIGTYPE
handler(s)
int s;
{
if ((fd = open(_PATH_TTY, O_RDWR|O_NOCTTY)) != -1)
close(fd);
- return(fd != -1);
+ return fd != -1;
}