~ubuntu-branches/ubuntu/gutsy/findutils/gutsy-proposed

« back to all changes in this revision

Viewing changes to gnulib/lib/yesno.c

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Metzler
  • Date: 2005-07-04 11:37:37 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20050704113737-ll89ui8be35r0pir
Tags: 4.2.22-2
* Remove locatedb on purge. (Closes: #315343)
* revert regex-syntax back to emacs-re. (Closes: #315136) Future versions
  will allow to select this by commandline parameter.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* yesno.c -- read a yes/no response from stdin
2
 
   Copyright (C) 1990, 1998, 2001 Free Software Foundation, Inc.
 
2
 
 
3
   Copyright (C) 1990, 1998, 2001, 2003, 2004, 2005 Free Software
 
4
   Foundation, Inc.
3
5
 
4
6
   This program is free software; you can redistribute it and/or modify
5
7
   it under the terms of the GNU General Public License as published by
13
15
 
14
16
   You should have received a copy of the GNU General Public License
15
17
   along with this program; if not, write to the Free Software Foundation,
16
 
   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
18
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
17
19
 
18
20
#if HAVE_CONFIG_H
19
21
# include <config.h>
20
22
#endif
21
23
 
22
 
#include <ctype.h>
23
 
#if HAVE_STDLIB_H
24
 
# include <stdlib.h>
25
 
#endif
 
24
#include "yesno.h"
 
25
 
 
26
#include <stdlib.h>
26
27
#include <stdio.h>
27
 
#include "unlocked-io.h"
28
 
 
29
 
/* Read one line from standard input
30
 
   and return nonzero if that line begins with y or Y,
31
 
   otherwise return 0. */
32
 
 
33
 
int rpmatch ();
34
 
 
35
 
int
36
 
yesno ()
 
28
 
 
29
#include "getline.h"
 
30
 
 
31
/* Return true if we read an affirmative line from standard input.  */
 
32
 
 
33
extern int rpmatch (char const *response);
 
34
 
 
35
bool
 
36
yesno (void)
37
37
{
38
 
  /* We make some assumptions here:
39
 
     a) leading white space in the response are not vital
40
 
     b) the first 128 characters of the answer are enough (the rest can
41
 
        be ignored)
42
 
     I cannot think for a situation where this is not ok.  --drepper@gnu  */
43
 
  char buf[128];
44
 
  int len = 0;
45
 
  int c;
46
 
 
47
 
  while ((c = getchar ()) != EOF && c != '\n')
48
 
    if ((len > 0 && len < 127) || (len == 0 && !isspace (c)))
49
 
      buf[len++] = c;
50
 
  buf[len] = '\0';
51
 
 
52
 
  return rpmatch (buf) == 1;
 
38
  char *response = NULL;
 
39
  size_t response_size = 0;
 
40
  ssize_t response_len = getline (&response, &response_size, stdin);
 
41
  bool yes;
 
42
 
 
43
  if (response_len <= 0)
 
44
    yes = false;
 
45
  else
 
46
    {
 
47
      response[response_len - 1] = '\0';
 
48
      yes = (0 < rpmatch (response));
 
49
    }
 
50
 
 
51
  free (response);
 
52
  return yes;
53
53
}