aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libibex/ChangeLog13
-rw-r--r--libibex/Makefile.am22
-rw-r--r--libibex/ibex_block.c57
-rw-r--r--libibex/ibex_db.c512
-rw-r--r--libibex/lookup.c83
-rw-r--r--libibex/mkindex.c84
6 files changed, 35 insertions, 736 deletions
diff --git a/libibex/ChangeLog b/libibex/ChangeLog
index 36d2764167..be70a14906 100644
--- a/libibex/ChangeLog
+++ b/libibex/ChangeLog
@@ -1,3 +1,16 @@
+2001-04-25 Dan Winship <danw@ximian.com>
+
+ * Makefile.am (libibex_la_LIBADD): Add GAL_LIBS for gunicode stuff
+ (until glib 2.0)
+ (INCLUDES): Use EXTRA_GNOME_CFLAGS
+ (dumpindex_LDADD, testindex_LDADD): fix
+ Remove references to mkindex and lookup.
+
+ * ibex_block.c (ibex_normalise_word, utf8_category): Convert to
+ gunicode interfaces
+
+ * ibex_db.c, lookup.c, mkindex.c: Unused, remove.
+
2001-03-26 Kjartan Maraas <kmaraas@gnome.org>
* disktail.c: Header shuffling. Move glibc headers before
diff --git a/libibex/Makefile.am b/libibex/Makefile.am
index ab7c92206c..e0d9728a56 100644
--- a/libibex/Makefile.am
+++ b/libibex/Makefile.am
@@ -11,30 +11,24 @@ libibex_la_SOURCES = \
libibex_la_LDFLAGS = -static
+libibex_la_LIBADD = \
+ $(GAL_LIBS)
+
noinst_HEADERS = \
ibex_internal.h \
block.h \
wordindex.h \
index.h
-INCLUDES = -I$(srcdir) $(GLIB_CFLAGS) $(UNICODE_CFLAGS) \
- $(THREADS_CFLAGS) \
- -DG_LOG_DOMAIN=\"libibex\"
+INCLUDES = \
+ $(EXTRA_GNOME_CFLAGS) \
+ -DG_LOG_DOMAIN=\"libibex\"
noinst_PROGRAMS = dumpindex testindex
dumpindex_SOURCES = dumpindex.c
-dumpindex_LDADD = libibex.la $(GLIB_LIBS) $(UNICODE_LIBS) $(THREADS_LIBS)
+dumpindex_LDADD = libibex.la $(THREADS_LIBS)
testindex_SOURCES = testindex.c
-testindex_LDADD = libibex.la $(GLIB_LIBS) $(UNICODE_LIBS) $(THREADS_LIBS) -lm
-
-#noinst_PROGRAMS = mkindex lookup
-#
-#mkindex_SOURCES = mkindex.c
-#mkindex_LDADD = libibex.la $(GLIB_LIBS) $(UNICODE_LIBS)
-#
-#lookup_SOURCES = lookup.c
-#lookup_LDADD = libibex.la $(GLIB_LIBS) $(UNICODE_LIBS)
-
+testindex_LDADD = libibex.la $(THREADS_LIBS) -lm
diff --git a/libibex/ibex_block.c b/libibex/ibex_block.c
index faeee232ac..c1aad5e78a 100644
--- a/libibex/ibex_block.c
+++ b/libibex/ibex_block.c
@@ -2,7 +2,7 @@
#include <glib.h>
#include <stdio.h>
-#include <unicode.h>
+#include <gal/unicode/gunicode.h>
#include <ctype.h>
#include <string.h>
#include <errno.h>
@@ -46,7 +46,7 @@ static void
ibex_normalise_word(char *start, char *end, char *buf)
{
unsigned char *s, *d;
- unicode_char_t uc;
+ gunichar uc;
s = (unsigned char *)start;
d = (unsigned char *)buf;
@@ -59,7 +59,8 @@ ibex_normalise_word(char *start, char *end, char *buf)
*d++ = tolower (*s);
s++;
} else {
- char *next = unicode_get_utf8 (s, &uc);
+ char *next = g_utf8_next_char (s);
+ uc = g_utf8_get_char (s);
if (uc >= 0xc0 && uc < 0xc0 + sizeof (utf8_trans)) {
signed char ch = utf8_trans[uc - 0xc0];
if (ch > 0)
@@ -80,54 +81,24 @@ ibex_normalise_word(char *start, char *end, char *buf)
enum { IBEX_ALPHA, IBEX_NONALPHA, IBEX_INVALID, IBEX_INCOMPLETE };
-/* This incorporates parts of libunicode, because there's no way to
- * force libunicode to not read past a certain point.
- */
static int
-utf8_category (char *sp, char **snp, char *send)
+utf8_category (char *p, char **np, char *end)
{
- unsigned char *p = (unsigned char *)sp, **np = (unsigned char **)snp;
- unsigned char *end = (unsigned char *)send;
-
- if (isascii (*p)) {
+ if (isascii ((unsigned char)*p)) {
*np = p + 1;
- if (isalpha (*p) || *p == '\'')
+ if (isalpha ((unsigned char)*p) || *p == '\'')
return IBEX_ALPHA;
return IBEX_NONALPHA;
} else {
- unicode_char_t uc;
- int more;
-
- if ((*p & 0xe0) == 0xc0) {
- more = 1;
- uc = *p & 0x1f;
- } else if ((*p & 0xf0) == 0xe0) {
- more = 2;
- uc = *p & 0x0f;
- } else if ((*p & 0xf8) == 0xf0) {
- more = 3;
- uc = *p & 0x07;
- } else if ((*p & 0xfc) == 0xf8) {
- more = 4;
- uc = *p & 0x03;
- } else if ((*p & 0xfe) == 0xfc) {
- more = 5;
- uc = *p & 0x01;
- } else
- return IBEX_INVALID;
+ gunichar uc;
- if (p + more > end)
+ *np = g_utf8_find_next_char (p, end);
+ if (!*np)
return IBEX_INCOMPLETE;
-
- while (more--) {
- if ((*++p & 0xc0) != 0x80)
- return IBEX_INVALID;
- uc <<= 6;
- uc |= *p & 0x3f;
- }
-
- *np = p + 1;
- if (unicode_isalpha (uc))
+ uc = g_utf8_get_char (p);
+ if (uc == (gunichar) -1)
+ return IBEX_INVALID;
+ else if (g_unichar_isalpha (uc))
return IBEX_ALPHA;
else
return IBEX_NONALPHA;
diff --git a/libibex/ibex_db.c b/libibex/ibex_db.c
deleted file mode 100644
index 1ef0b3d1bc..0000000000
--- a/libibex/ibex_db.c
+++ /dev/null
@@ -1,512 +0,0 @@
-
-#include <glib.h>
-
-#include <db.h>
-#include <stdio.h>
-#include <unicode.h>
-#include <ctype.h>
-
-#include "ibex_internal.h"
-
-#define d(x)
-
-/*
- Uses 2 databases:
-
- names - HASH - lists which files are stored
- words - BTREE - index words to files
-
-*/
-
-static int
-db_delete_name(DB *db, const char *name)
-{
- DBC *cursor;
- int err, namelen;
- DBT key, data;
-
- printf("called to delete name %s\n", name);
- return 0;
-
- err = db->cursor(db, NULL, &cursor, 0);
- if (err != 0) {
- printf("Error occured?: %s\n", db_strerror(err));
- return err;
- }
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- namelen = strlen(name);
-
- err = cursor->c_get(cursor, &key, &data, DB_FIRST);
- while (err == 0) {
- if (data.size == namelen && memcmp(data.data, name, namelen) == 0) {
- d(printf("Found match, removing it\n"));
- cursor->c_del(cursor, 0);
- } else {
- data.size = namelen;
- data.data = (void *)name;
- if (cursor->c_get(cursor, &key, &data, DB_GET_BOTH) == 0) {
- d(printf("seek to match, removing it\n"));
- cursor->c_del(cursor, 0);
- } else {
- d(printf("seek to match, not found\n"));
- }
- }
- err = cursor->c_get(cursor, &key, &data, DB_NEXT_NODUP);
- }
-
- cursor->c_close(cursor);
-
- return 0;
-}
-
-static int
-db_index_words(DB *db, char *name, char **words)
-{
- DBT key, data;
- int err = 0;
- char *word;
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- data.data = name;
- data.size = strlen(name);
- for (;(word=*words);words++) {
- /* normalise word first ... */
- key.data = word;
- key.size = strlen(word);
-
- err = db->put(db, NULL, &key, &data, 0);
- if (err != 0)
- printf("Error occured?: %s\n", db_strerror(err));
- }
-
- return err;
-}
-
-static int
-db_index_word(DB *db, char *name, char *word)
-{
- DBT key, data;
- int err = 0;
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
- data.data = name;
- data.size = strlen(name);
- key.data = word;
- key.size = strlen(word);
-
- err = db->put(db, NULL, &key, &data, 0);
- if (err != 0)
- printf("Error occured?: %s\n", db_strerror(err));
-
- return err;
-}
-
-static GPtrArray *
-db_find(DB *db, char *word)
-{
- DBT key, data;
- int err;
- DBC *cursor;
- GPtrArray *matches = g_ptr_array_new();
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- err = db->cursor(db, NULL, &cursor, 0);
- if (err != 0) {
- printf("Error occured?: %s\n", db_strerror(err));
- return matches;
- }
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- key.size = strlen(word);
- key.data = word;
-
- err = cursor->c_get(cursor, &key, &data, DB_SET);
- while (err == 0) {
- char *name;
- name = g_malloc(data.size+1);
- memcpy(name, data.data, data.size);
- name[data.size] = '\0';
- g_ptr_array_add(matches, name);
- err = cursor->c_get(cursor, &key, &data, DB_NEXT_DUP);
- }
- if (err != DB_NOTFOUND) {
- printf("Error occured?: %s\n", db_strerror(err));
- /* what to do? doesn't matter too much its just a search ... */
- }
-
- cursor->c_close(cursor);
-
- return matches;
-}
-
-/* check that db contains key @word, optionally with contents @name */
-static gboolean
-db_contains_word(DB *db, char *name, char *word)
-{
- DBT key, data;
-
- memset(&key, 0, sizeof(key));
- memset(&data, 0, sizeof(data));
-
- if (name != NULL) {
- data.size = strlen(name);
- data.data = name;
- }
- key.size = strlen(word);
- key.data = word;
-
- return db->get(db, NULL, &key, &data, name?DB_GET_BOTH:DB_SET) == 0;
-}
-
-static int
-db_delete_word(DB *db, char *word)
-{
- DBT key;
-
- memset(&key, 0, sizeof(key));
- key.size = strlen(word);
- key.data = word;
- return db->del(db, NULL, &key, 0);
-}
-
-
-static signed char utf8_trans[] = {
- 'A', 'A', 'A', 'A', 'A', 'A', -1, 'C', 'E', 'E', 'E', 'E', 'I', 'I',
- 'I', 'I', -2, 'N', 'O', 'O', 'O', 'O', 'O', '*', 'O', 'U', 'U', 'U',
- 'U', 'Y', -3, -4, 'a', 'a', 'a', 'a', 'a', 'a', -5, 'c', 'e', 'e',
- 'e', 'e', 'i', 'i', 'i', 'i', -6, 'n', 'o', 'o', 'o', 'o', 'o', '/',
- 'o', 'u', 'u', 'u', 'u', 'y', -7, 'y', 'A', 'a', 'A', 'a', 'A', 'a',
- 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e',
- 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g',
- 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i',
- 'I', 'i', -8, -9, 'J', 'j', 'K', 'k', 'k', 'L', 'l', 'L', 'l', 'L',
- 'l', 'L', 'l', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', -10, -11,
- 'O', 'o', 'O', 'o', 'O', 'o', -12, -13, 'R', 'r', 'R', 'r', 'R', 'r',
- 'S', 'r', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't',
- 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w',
- 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's'
-};
-
-static char *utf8_long_trans[] = {
- "AE", "TH", "TH", "ss", "ae", "th", "th", "IJ", "ij",
- "NG", "ng", "OE", "oe"
-};
-
-/* This is a bit weird. It takes pointers to the start and end (actually
- * just past the end) of a UTF-8-encoded word, and a buffer at least 1
- * byte longer than the length of the word. It copies the word into the
- * buffer in all lowercase without accents, and splits up ligatures.
- * (Since any ligature would be a multi-byte character in UTF-8, splitting
- * them into two US-ASCII characters won't overrun the buffer.)
- *
- * It is not safe to call this routine with bad UTF-8.
- */
-static void
-ibex_normalise_word(char *start, char *end, char *buf)
-{
- unsigned char *s, *d;
- unicode_char_t uc;
-
- s = (unsigned char *)start;
- d = (unsigned char *)buf;
- while (s < (unsigned char *)end) {
- if (*s < 0x80) {
- /* US-ASCII character: copy unless it's
- * an apostrophe.
- */
- if (*s != '\'')
- *d++ = tolower (*s);
- s++;
- } else {
- char *next = unicode_get_utf8 (s, &uc);
- if (uc >= 0xc0 && uc < 0xc0 + sizeof (utf8_trans)) {
- signed char ch = utf8_trans[uc - 0xc0];
- if (ch > 0)
- *d++ = tolower (ch);
- else {
- *d++ = tolower (utf8_long_trans[-ch - 1][0]);
- *d++ = tolower (utf8_long_trans[-ch - 1][1]);
- }
- s = next;
- } else {
- while (s < (unsigned char *)next)
- *d++ = *s++;
- }
- }
- }
- *d = '\0';
-}
-
-enum { IBEX_ALPHA, IBEX_NONALPHA, IBEX_INVALID, IBEX_INCOMPLETE };
-
-/* This incorporates parts of libunicode, because there's no way to
- * force libunicode to not read past a certain point.
- */
-static int
-utf8_category (char *sp, char **snp, char *send)
-{
- unsigned char *p = (unsigned char *)sp, **np = (unsigned char **)snp;
- unsigned char *end = (unsigned char *)send;
-
- if (isascii (*p)) {
- *np = p + 1;
- if (isalpha (*p) || *p == '\'')
- return IBEX_ALPHA;
- return IBEX_NONALPHA;
- } else {
- unicode_char_t uc;
- int more;
-
- if ((*p & 0xe0) == 0xc0) {
- more = 1;
- uc = *p & 0x1f;
- } else if ((*p & 0xf0) == 0xe0) {
- more = 2;
- uc = *p & 0x0f;
- } else if ((*p & 0xf8) == 0xf0) {
- more = 3;
- uc = *p & 0x07;
- } else if ((*p & 0xfc) == 0xf8) {
- more = 4;
- uc = *p & 0x03;
- } else if ((*p & 0xfe) == 0xfc) {
- more = 5;
- uc = *p & 0x01;
- } else
- return IBEX_INVALID;
-
- if (p + more > end)
- return IBEX_INCOMPLETE;
-
- while (more--) {
- if ((*++p & 0xc0) != 0x80)
- return IBEX_INVALID;
- uc <<= 6;
- uc |= *p & 0x3f;
- }
-
- *np = p + 1;
- if (unicode_isalpha (uc))
- return IBEX_ALPHA;
- else
- return IBEX_NONALPHA;
- }
-}
-
-static void
-do_insert_words(char *key, char *name, ibex *ib)
-{
- db_index_word(ib->words, name, key);
- g_free(key);
-}
-
-static void
-do_free_words(char *key, char *name, void *data)
-{
- g_free(key);
-}
-
-/**
- * ibex_index_buffer: the lowest-level ibex indexing interface
- * @ib: an ibex
- * @name: the name of the file being indexed
- * @buffer: a buffer containing data from the file
- * @len: the length of @buffer
- * @unread: an output argument containing the number of unread bytes
- *
- * This routine indexes up to @len bytes from @buffer into @ib.
- * If @unread is NULL, the indexer assumes that the buffer ends on a
- * word boundary, and will index all the way to the end of the
- * buffer. If @unread is not NULL, and the buffer ends with an
- * alphabetic character, the indexer will assume that the buffer has
- * been cut off in the middle of a word, and return the number of
- * un-indexed bytes at the end of the buffer in *@unread. The caller
- * should then read in more data through whatever means it has
- * and pass in the unread bytes from the original buffer, followed
- * by the new data, on its next call.
- *
- * Return value: 0 on success, -1 on failure.
- **/
-int
-ibex_index_buffer (ibex *ib, char *name, char *buffer, size_t len, size_t *unread)
-{
- char *p, *q, *nq, *end, *word;
- int wordsiz, cat;
- GHashTable *words = g_hash_table_new(g_str_hash, g_str_equal);
-
- if (unread)
- *unread = 0;
-
- end = buffer + len;
- wordsiz = 20;
- word = g_malloc (wordsiz);
-
- p = buffer;
- while (p < end) {
- while (p < end) {
- cat = utf8_category (p, &q, end);
- if (cat != IBEX_NONALPHA)
- break;
- p = q;
- }
- if (p == end) {
- goto done;
- } else if (cat == IBEX_INVALID) {
- goto error;
- } else if (cat == IBEX_INCOMPLETE)
- q = end;
-
- while (q < end) {
- cat = utf8_category (q, &nq, end);
- if (cat != IBEX_ALPHA)
- break;
- q = nq;
- }
- if (cat == IBEX_INVALID ||
- (cat == IBEX_INCOMPLETE && !unread)) {
- goto error;
- } else if (cat == IBEX_INCOMPLETE || (q == end && unread)) {
- *unread = end - p;
- goto done;
- }
-
- if (wordsiz < q - p + 1) {
- wordsiz = q - p + 1;
- word = g_realloc (word, wordsiz);
- }
- ibex_normalise_word (p, q, word);
- if (word[0]) {
- if (g_hash_table_lookup(words, word) == 0) {
- g_hash_table_insert(words, g_strdup(word), name);
- }
- }
- p = q;
- }
-done:
- /* FIXME: do this and inserts within a transaction */
- if (!db_contains_word(ib->names, NULL, name)) {
- printf("adding '%s' to database\n", name);
- db_index_word(ib->names, "", name);
- }
- g_hash_table_foreach(words, (GHFunc)do_insert_words, ib);
- g_hash_table_destroy(words);
- g_free (word);
- return 0;
-error:
- g_hash_table_foreach(words, (GHFunc)do_free_words, NULL);
- g_hash_table_destroy(words);
- g_free (word);
- return -1;
-}
-
-
-ibex *ibex_open (char *file, int flags, int mode)
-{
- ibex *ib;
- u_int32_t dbflags = 0;
- int err;
-
- ib = g_malloc0(sizeof(*ib));
- err = db_create(&ib->words, NULL, 0);
- if (err != 0) {
- g_warning("create: Error occured?: %s\n", db_strerror(err));
- g_free(ib);
- return NULL;
- }
-
- err = ib->words->set_flags(ib->words, DB_DUP);
- if (err != 0) {
- g_warning("set flags: Error occured?: %s\n", db_strerror(err));
- ib->words->close(ib->words, 0);
- g_free(ib);
- return NULL;
- }
-
- if (flags & O_CREAT)
- dbflags |= DB_CREATE;
- if (flags & O_EXCL)
- dbflags |= DB_EXCL;
- if (flags & O_RDONLY)
- dbflags |= DB_RDONLY;
-
- /* 1MB cache size? */
- ib->words->set_cachesize(ib->words, 0, 1000000, 0);
-
- err = ib->words->open(ib->words, file, "words", DB_BTREE, dbflags, mode);
- if (err != 0) {
- printf("open: Error occured?: %s\n", db_strerror(err));
- ib->words->close(ib->words, 0);
- g_free(ib);
- return NULL;
- }
-
- /* FIXME: check returns */
- err = db_create(&ib->names, NULL, 0);
- err = ib->names->open(ib->names, file, "names", DB_HASH, dbflags, mode);
-
- return ib;
-}
-
-int ibex_save (ibex *ib)
-{
- printf("syncing database\n");
- ib->names->sync(ib->names, 0);
- return ib->words->sync(ib->words, 0);
-}
-
-int ibex_close (ibex *ib)
-{
- int ret;
-
- printf("closing database\n");
-
- ret = ib->names->close(ib->names, 0);
- ret = ib->words->close(ib->words, 0);
- g_free(ib);
- return ret;
-}
-
-void ibex_unindex (ibex *ib, char *name)
-{
- printf("trying to unindex '%s'\n", name);
- if (db_contains_word(ib->names, NULL, name)) {
- /* FIXME: do within transaction? */
- db_delete_name(ib->words, name);
- db_delete_word(ib->names, name);
- }
-}
-
-GPtrArray *ibex_find (ibex *ib, char *word)
-{
- char *normal;
- int len;
-
- len = strlen(word);
- normal = alloca(len+1);
- ibex_normalise_word(word, word+len, normal);
- return db_find(ib->words, normal);
-}
-
-gboolean ibex_find_name (ibex *ib, char *name, char *word)
-{
- char *normal;
- int len;
-
- len = strlen(word);
- normal = alloca(len+1);
- ibex_normalise_word(word, word+len, normal);
- return db_contains_word(ib->words, name, normal);
-}
-
-gboolean ibex_contains_name(ibex *ib, char *name)
-{
- return db_contains_word(ib->names, NULL, name);
-}
diff --git a/libibex/lookup.c b/libibex/lookup.c
deleted file mode 100644
index 2d01dbf850..0000000000
--- a/libibex/lookup.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code 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 of the License, 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
- */
-
-/* lookup.c: a simple client, part 2 */
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "ibex.h"
-
-extern int optind;
-extern char *optarg;
-
-static void
-usage (void)
-{
- fprintf (stderr, "Usage: lookup [-f indexfile] word ...\n");
- exit (1);
-}
-
-int
-main (int argc, char **argv)
-{
- ibex *ib;
- GPtrArray *ans, *words;
- int opt, i;
- char *file = "INDEX";
-
- while ((opt = getopt (argc, argv, "f:")) != -1) {
- switch (opt) {
- case 'f':
- file = optarg;
- break;
-
- default:
- usage ();
- break;
- }
- }
- argc -= optind;
- argv += optind;
-
- if (argc == 0)
- usage ();
-
- ib = ibex_open (file, O_RDWR|O_CREAT, 0600);
- if (!ib) {
- printf ("Couldn't open %s: %s\n", file, strerror (errno));
- exit (1);
- }
-
- words = g_ptr_array_new ();
- while (argc--)
- g_ptr_array_add (words, argv[argc]);
-
- ans = ibex_find_all (ib, words);
- if (ans) {
- for (i = 0; i < ans->len; i++)
- printf ("%s\n", (char *)g_ptr_array_index (ans, i));
- exit (0);
- } else {
- printf ("Nope.\n");
- exit (1);
- }
-}
diff --git a/libibex/mkindex.c b/libibex/mkindex.c
deleted file mode 100644
index 151dcecb2d..0000000000
--- a/libibex/mkindex.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2000 Helix Code 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 of the License, 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
- */
-
-/* mkindex.c: a simple client, part 1 */
-
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "ibex.h"
-
-extern int optind;
-extern char *optarg;
-
-static void
-usage (void)
-{
- fprintf (stderr, "Usage: mkindex [-f indexfile] file ...\n");
- exit (1);
-}
-
-int
-main (int argc, char **argv)
-{
- ibex *ib;
- int opt;
- char *file = "INDEX";
-
- while ((opt = getopt (argc, argv, "f:")) != -1) {
- switch (opt) {
- case 'f':
- file = optarg;
- break;
-
- default:
- usage ();
- break;
- }
- }
- argc -= optind;
- argv += optind;
-
- if (argc == 0)
- usage ();
-
- ib = ibex_open (file, O_CREAT|O_RDWR, 0600);
- if (!ib) {
- fprintf (stderr, "Couldn't open index file %s: %s\n",
- file, strerror (errno));
- exit (1);
- }
-
- while (argc--) {
- if (ibex_index_file (ib, argv[argc]) == -1) {
- fprintf (stderr, "Couldn't index %s: %s\n",
- argv[argc], strerror (errno));
- exit (1);
- }
- }
-
- if (ibex_close (ib) != 0) {
- fprintf (stderr, "Failed to write index file %s: %s\n",
- file, strerror (errno));
- exit (1);
- }
- exit (0);
-}