Mercurial > hg > octave-kai > gnulib-hg
view lib/rpmatch.c @ 4333:fcd34d3861a4
in lib:
* addext.c, backupfile.c, fsusage.c, human.c, pathmax.h,
rpmatch.c, userspec.c, xreadlink.c, xstrtol.c: Include <limits.h>
without checking for HAVE_LIMITS_H.
* backupfile.c, fsusage.c, hash.c, human.c, safe-read.c, userspec.c,
xstrtol.c (CHAR_BIT) : Don't define, since <limits.h> is guaranteed
to do that.
* fatal.c: Include <stdarg.h> without checking for __STDC__.
* exclude.c: Include <stdbool.h> unconditionally.
* tempname.c: Include <stddef.h> unconditionally.
* hash.c: Include <limits.h>, since we no longer define CHAR_BIT.
* modechange.c, rpmatch.c (NULL): Don't define, since
<stddef.h> does that.
* quote.c: Dont include <stddef.h> or <sys/types.h>; not needed.
* safe-read.c (INT_MAX): Don't define, since <limits.h> does that.
* safe-read.c (TYPE_MINIMUM, TYPE_MAXIMUM): Remove; no longer needed.
* xstrtol.c: Likewise.
* safe-read.c: Remove TYPE_SIGNED; no longer needed.
* savedir.c: Include <stddef.h> instead of defining NULL.
in m4:
* backupfile.m4 (gl_BACKUPFILE): Don't check for limits.h.
* fsusage.m4 (gl_PREREQ_FSUSAGE_EXTRA): Likewise.
* human.m4 (gl_HUMAN): Likewise.
* pathmax.m4 (gl_PATHMAX): Likewise.
* rpmatch.m4 (gl_FUNC_RPMATCH): Likewise.
* userspec.m4 (gl_USERSPEC): Likewise.
* xreadlink.m4 (gl_XREADLINK): Likewise.
* m4/xstrtol.m4 (gl_PREREQ_XSTRTOL): Likewise.
* quote.m4 (gl_QUOTE): Don't check for stddef.h.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Thu, 29 May 2003 07:21:59 +0000 |
parents | 22d3032f0239 |
children | 092d9a2797a7 |
line wrap: on
line source
/* Determine whether string value is affirmation or negative response according to current locale's data. Copyright (C) 1996, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #if HAVE_CONFIG_H # include <config.h> #endif #include <stddef.h> #if STDC_HEADERS || _LIBC # include <stdlib.h> #endif #if ENABLE_NLS # include <sys/types.h> # include <limits.h> # include <regex.h> # include "gettext.h" # define _(msgid) gettext (msgid) static int try (const char *response, const char *pattern, const int match, const int nomatch, const char **lastp, regex_t *re) { if (pattern != *lastp) { /* The pattern has changed. */ if (*lastp) { /* Free the old compiled pattern. */ regfree (re); *lastp = NULL; } /* Compile the pattern and cache it for future runs. */ if (regcomp (re, pattern, REG_EXTENDED) != 0) return -1; *lastp = pattern; } /* See if the regular expression matches RESPONSE. */ return regexec (re, response, 0, NULL, 0) == 0 ? match : nomatch; } #endif int rpmatch (const char *response) { #if ENABLE_NLS /* Match against one of the response patterns, compiling the pattern first if necessary. */ /* We cache the response patterns and compiled regexps here. */ static const char *yesexpr, *noexpr; static regex_t yesre, nore; int result; return ((result = try (response, _("^[yY]"), 1, 0, &yesexpr, &yesre)) ? result : try (response, _("^[nN]"), 0, -1, &noexpr, &nore)); #else /* Test against "^[yY]" and "^[nN]", hardcoded to avoid requiring regex */ return (*response == 'y' || *response == 'Y' ? 1 : *response == 'n' || *response == 'N' ? 0 : -1); #endif }