1/* yesno.c -- read a yes/no response from stdin 2 3 Copyright (C) 1990, 1998, 2001, 2003, 2004, 2005 Free Software 4 Foundation, Inc. 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software Foundation, 18 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ 19#include <sys/cdefs.h> 20__RCSID("$NetBSD: yesno.c,v 1.2 2016/05/17 14:00:09 christos Exp $"); 21 22 23#ifdef HAVE_CONFIG_H 24# include <config.h> 25#endif 26 27#include "yesno.h" 28 29#include <stdlib.h> 30#include <stdio.h> 31 32#include "getline.h" 33 34/* Return true if we read an affirmative line from standard input. */ 35 36extern int rpmatch (char const *response); 37 38bool 39yesno (void) 40{ 41 char *response = NULL; 42 size_t response_size = 0; 43 ssize_t response_len = getline (&response, &response_size, stdin); 44 bool yes; 45 46 if (response_len <= 0) 47 yes = false; 48 else 49 { 50 response[response_len - 1] = '\0'; 51 yes = (0 < rpmatch (response)); 52 } 53 54 free (response); 55 return yes; 56} 57