skill: use rpmatch() to yes/no question

The patch also removes fixed size of input, which can be problematic.
I do not know how long the string `yes' might be in all of the worlds
languages.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
Sami Kerola 2011-11-13 13:23:17 +01:00
parent 72e37c7d11
commit b40353c91e
2 changed files with 10 additions and 6 deletions

View File

@ -73,6 +73,7 @@ AC_FUNC_REALLOC
AC_FUNC_STRTOD
AC_CHECK_FUNCS([\
alarm \
getline \
getpagesize \
gettimeofday \
iswprint \
@ -83,6 +84,7 @@ AC_CHECK_FUNCS([\
nl_langinfo \
putenv \
regcomp \
rpmatch \
select \
setlocale \
strcasecmp \

14
skill.c
View File

@ -82,15 +82,17 @@ static void hurt_proc(int tty, int uid, int pid, const char *restrict const cmd,
char dn_buf[1000];
dev_to_tty(dn_buf, 999, tty, pid, ABBREV_DEV);
if (run_time->interactive) {
char buf[8];
char *buf;
size_t len = 0;
fprintf(stderr, "%-8s %-8s %5d %-16.16s ? ",
(char *)dn_buf, user_from_uid(uid), pid, cmd);
if (!fgets(buf, 7, stdin)) {
printf("\n");
exit(EXIT_FAILURE);
}
if (*buf != 'y' && *buf != 'Y')
fflush (stdout);
getline(&buf, &len, stdin);
if (rpmatch(buf) < 1) {
free(buf);
return;
}
free(buf);
}
/* do the actual work */
errno = 0;