| From 929b1a121c5ff0daa33b2107b4c1a68b650d93ee Mon Sep 17 00:00:00 2001 |
| From: Mike Frysinger <vapier@gentoo.org> |
| Date: Mon, 30 Apr 2012 00:40:49 -0400 |
| Subject: [PATCH] rpmatch: backport function |
| |
| rpmatch will match ^[Yy] and ^[Nn] regardless of locale |
| |
| Signed-off-by: Mike Frysinger <vapier@gentoo.org> |
| Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> |
| --- |
| include/stdlib.h | 2 +- |
| libc/stdlib/Makefile.in | 2 +- |
| libc/stdlib/rpmatch.c | 7 +++++++ |
| libc/stdlib/stdlib.c | 8 ++++++++ |
| 4 files changed, 17 insertions(+), 2 deletions(-) |
| create mode 100644 libc/stdlib/rpmatch.c |
| |
| diff --git a/include/stdlib.h b/include/stdlib.h |
| index 4aa1227..42b585c 100644 |
| --- a/include/stdlib.h |
| +++ b/include/stdlib.h |
| @@ -851,7 +851,7 @@ __END_NAMESPACE_STD |
| #endif /* __UCLIBC_HAS_WCHAR__ */ |
| |
| |
| -#if 0 /*def __USE_SVID*/ |
| +#ifdef __USE_SVID |
| /* Determine whether the string value of RESPONSE matches the affirmation |
| or negative response expression as specified by the LC_MESSAGES category |
| in the program's current locale. Returns 1 if affirmative, 0 if |
| diff --git a/libc/stdlib/Makefile.in b/libc/stdlib/Makefile.in |
| index f219d21..e802441 100644 |
| --- a/libc/stdlib/Makefile.in |
| +++ b/libc/stdlib/Makefile.in |
| @@ -33,7 +33,7 @@ endif |
| |
| # multi source stdlib.c |
| CSRC-y += abs.c labs.c atoi.c atol.c strtol.c strtoul.c _stdlib_strto_l.c \ |
| - qsort.c qsort_r.c bsearch.c \ |
| + qsort.c qsort_r.c bsearch.c rpmatch.c \ |
| llabs.c atoll.c strtoll.c strtoull.c _stdlib_strto_ll.c |
| # (aliases) strtoq.o strtouq.o |
| CSRC-$(UCLIBC_HAS_FLOATS) += atof.c |
| diff --git a/libc/stdlib/rpmatch.c b/libc/stdlib/rpmatch.c |
| new file mode 100644 |
| index 0000000..dce06b6 |
| --- /dev/null |
| +++ b/libc/stdlib/rpmatch.c |
| @@ -0,0 +1,7 @@ |
| +/* Copyright (C) 2012 Bernhard Reutner-Fischer <uclibc@uclibc.org> |
| + * |
| + * Licensed under the LGPL v2.1+, see the file COPYING.LIB in this tarball. |
| + */ |
| + |
| +#define L_rpmatch |
| +#include "stdlib.c" |
| diff --git a/libc/stdlib/stdlib.c b/libc/stdlib/stdlib.c |
| index 9e8c347..de8f084 100644 |
| --- a/libc/stdlib/stdlib.c |
| +++ b/libc/stdlib/stdlib.c |
| @@ -318,6 +318,14 @@ long long atoll(const char *nptr) |
| |
| #endif |
| /**********************************************************************/ |
| +#ifdef L_rpmatch |
| +int rpmatch (__const char *__response) |
| +{ |
| + return (__response[0] == 'y' || __response[0] == 'Y') ? 1 : |
| + (__response[0] == 'n' || __response[0] == 'N') ? 0 : -1; |
| +} |
| +#endif |
| +/**********************************************************************/ |
| #if defined(L_strtol) || defined(L_strtol_l) |
| |
| libc_hidden_proto(__XL_NPP(strtol)) |
| -- |
| 1.7.10.4 |
| |