Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 017534196F2 for ; Tue, 13 Apr 2010 09:50:19 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0.401 X-Spam-Level: X-Spam-Status: No, score=0.401 tagged_above=-999 required=5 tests=[BAYES_05=-0.5, DKIM_ADSP_NXDOMAIN=0.9, NO_DNS_FOR_FROM=0.001] autolearn=no Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FDltHHGo+idq for ; Tue, 13 Apr 2010 09:50:18 -0700 (PDT) Received: from mail.hohndel.org (mail.hohndel.org [65.23.157.147]) by olra.theworths.org (Postfix) with ESMTP id 5EBD9431FC1 for ; Tue, 13 Apr 2010 09:50:18 -0700 (PDT) Received: by mail.hohndel.org (Postfix, from userid 112) id 9E326340FC; Tue, 13 Apr 2010 12:17:40 -0400 (EDT) Received: from x200.gr8dns.org (unknown [65.23.157.147]) by mail.hohndel.org (Postfix) with ESMTP id 84243340F8 for ; Tue, 13 Apr 2010 12:17:38 -0400 (EDT) Received: by x200.gr8dns.org (Postfix, from userid 500) id 58358C00E5; Tue, 13 Apr 2010 09:17:37 -0700 (PDT) From: Dirk Hohndel To: Subject: [PATCH] Add simplistic compat implementation for strcasestr Date: Tue, 13 Apr 2010 09:17:37 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailman-Approved-At: Tue, 13 Apr 2010 11:39:58 -0700 X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Apr 2010 16:50:19 -0000 v.2 of the patch, this time including the Makefile logic. All platforms I have access to support strcasestr - so please test that the implementation / integration works correctly on those plattforms. Signed-off-by: Dirk Hohndel --- compat/have_strcasestr.c | 10 ++++++++++ compat/strcasestr.c | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 0 deletions(-) create mode 100644 compat/have_strcasestr.c create mode 100644 compat/strcasestr.c diff --git a/compat/have_strcasestr.c b/compat/have_strcasestr.c new file mode 100644 index 0000000..c0fb762 --- /dev/null +++ b/compat/have_strcasestr.c @@ -0,0 +1,10 @@ +#define _GNU_SOURCE +#include + +int main() +{ + char *found; + const char *haystack, *needle; + + found = strcasestr(haystack, needle); +} diff --git a/compat/strcasestr.c b/compat/strcasestr.c new file mode 100644 index 0000000..50bc89d --- /dev/null +++ b/compat/strcasestr.c @@ -0,0 +1,41 @@ +/* + * slow simplistic reimplementation of strcasestr for systems that + * don't include it in their library + * + * based on a GPL implementation in OpenTTD found under GPL v2 + + 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, version 2. + + 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., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +/* Imported into notmuch by Dirk Hohndel - original author unknown. */ +/* the semantic here actually puzzles me: + how can haystack be const char * - yet the return value is char * + after all, it points to a sub-string of haystack... */ + +#include + +char *strcasestr(const char *haystack, const char *needle) +{ + size_t hay_len = strlen(haystack); + size_t needle_len = strlen(needle); + while (hay_len >= needle_len) { + if (strncasecmp(haystack, needle, needle_len) == 0) + return (char *) haystack; + + haystack++; + hay_len--; + } + + return NULL; +} -- 1.6.6.1 -- Dirk Hohndel Intel Open Source Technology Center