git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/5] Adapt the kwset code to Git

From
Fredrik Kuivinen <frekui@gmail.com>
Date
Feb 13, 2010, 14:20 UTC
Message-ID
<20100213142050.GD9543@fredrik-laptop>
In-Reply-To
<20100213141558.22851.13660.stgit@fredrik-laptop>
Signed-off-by: Fredrik Kuivinen <frekui@gmail.com>
---
 kwset.c |   24 ++++++++++--------------
 kwset.h |   17 +++++++++++------
 2 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/kwset.c b/kwset.c
index 0957f66..2853859 100644
--- a/kwset.c
+++ b/kwset.c
@@ -1,3 +1,7 @@
+/* This file has been copied from GNU grep 2.5.4. A few small changes
+ * have been made to adapt the code to Git.
+ */
+
 /* kwset.c - search for any of a set of keywords.
    Copyright (C) 1989, 1998, 2000, 2005, 2007, 2009
    Free Software Foundation, Inc.
@@ -29,22 +33,14 @@
    String Matching:  An Aid to Bibliographic Search," CACM June 1975,
    Vol. 18, No. 6, which describes the failure function used below. */
 
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include "cache.h"
+
 #include <sys/types.h>
-#include "system.h"
 #include "kwset.h"
 #include "obstack.h"
 
-#ifdef GREP
-# include "xalloc.h"
-# undef malloc
-# define malloc xmalloc
-#endif
-
 #define NCHAR (UCHAR_MAX + 1)
-#define obstack_chunk_alloc malloc
+#define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
 #define U(c) ((unsigned char) (c))
@@ -175,7 +171,7 @@ kwsincr (kwset_t kws, char const *text, size_t len)
 	  link = (struct tree *) obstack_alloc(&kwset->obstack,
 					       sizeof (struct tree));
 	  if (!link)
-	    return _("memory exhausted");
+	    return "memory exhausted";
 	  link->llink = NULL;
 	  link->rlink = NULL;
 	  link->trie = (struct trie *) obstack_alloc(&kwset->obstack,
@@ -183,7 +179,7 @@ kwsincr (kwset_t kws, char const *text, size_t len)
 	  if (!link->trie)
 	    {
 	      obstack_free(&kwset->obstack, link);
-	      return _("memory exhausted");
+	      return "memory exhausted";
 	    }
 	  link->trie->accepting = 0;
 	  link->trie->links = NULL;
@@ -406,7 +402,7 @@ kwsprep (kwset_t kws)
       /* Looking for just one string.  Extract it from the trie. */
       kwset->target = obstack_alloc(&kwset->obstack, kwset->mind);
       if (!kwset->target)
-	return _("memory exhausted");
+	return "memory exhausted";
       for (i = kwset->mind - 1, curr = kwset->trie; i >= 0; --i)
 	{
 	  kwset->target[i] = curr->links->label;
diff --git a/kwset.h b/kwset.h
index e8dec04..48c2ff1 100644
--- a/kwset.h
+++ b/kwset.h
@@ -1,3 +1,7 @@
+/* This file has been copied from GNU grep 2.5.4. A few small changes
+ * have been made to adapt the code to Git.
+ */
+
 /* kwset.h - header declaring the keyword set library.
    Copyright (C) 1989, 1998, 2005, 2007, 2009 Free Software Foundation, Inc.
 
@@ -27,22 +31,23 @@ struct kwsmatch
   size_t size[1];		/* Length of each submatch. */
 };
 
-typedef ptr_t kwset_t;
+struct kwset_t;
+typedef struct kwset_t* kwset_t;
 
 /* Return an opaque pointer to a newly allocated keyword set, or NULL
    if enough memory cannot be obtained.  The argument if non-NULL
    specifies a table of character translations to be applied to all
    pattern and search text. */
-extern kwset_t kwsalloc PARAMS((char const *));
+extern kwset_t kwsalloc(char const *);
 
 /* Incrementally extend the keyword set to include the given string.
    Return NULL for success, or an error message.  Remember an index
    number for each keyword included in the set. */
-extern const char *kwsincr PARAMS((kwset_t, char const *, size_t));
+extern const char *kwsincr(kwset_t, char const *, size_t);
 
 /* When the keyword set has been completely built, prepare it for
    use.  Return NULL for success, or an error message. */
-extern const char *kwsprep PARAMS((kwset_t));
+extern const char *kwsprep(kwset_t);
 
 /* Search through the given buffer for a member of the keyword set.
    Return a pointer to the leftmost longest match found, or NULL if
@@ -50,8 +55,8 @@ extern const char *kwsprep PARAMS((kwset_t));
    the matching substring in the integer it points to.  Similarly,
    if foundindex is non-NULL, store the index of the particular
    keyword found therein. */
-extern size_t kwsexec PARAMS((kwset_t, char const *, size_t, struct kwsmatch *));
+extern size_t kwsexec(kwset_t, char const *, size_t, struct kwsmatch *);
 
 /* Deallocate the given keyword set and all its associated storage. */
-extern void kwsfree PARAMS((kwset_t));
+extern void kwsfree(kwset_t);
 
Previous: Fredrik KuivinenNext: Fredrik Kuivinen
Message 6 of 11 in “Add obstack.[ch] from EGLIBC 2.10”
  1. 1/5 Add obstack.[ch] from EGLIBC 2.10Fredrik Kuivinen, Feb 13, 2010
  2. 2/5 Add string search routines from GNU grepFredrik Kuivinen, Feb 13, 2010
  3. Dmitry PotapovFeb 13, 2010
  4. Paolo BonziniFeb 13, 2010
  5. Fredrik KuivinenFeb 14, 2010
  6. 3/5 Adapt the kwset code to GitFredrik Kuivinen, Feb 13, 2010
  7. 4/5 Use kwset in pickaxeFredrik Kuivinen, Feb 13, 2010
  8. 5/5 Use kwset in grepFredrik Kuivinen, Feb 13, 2010
  9. Paolo BonziniFeb 13, 2010
  10. Paolo BonziniFeb 13, 2010
  11. Fredrik KuivinenFeb 14, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.