aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorGravatar David Bremner <bremner@debian.org>2011-10-23 12:05:13 -0300
committerGravatar David Bremner <bremner@debian.org>2011-10-30 23:09:49 -0300
commit1dedfc90f6eee7cad10f1a1ceb39a7a1c4dbd1b1 (patch)
tree79cb128de2cf3a5249b2c31e0d319ed14134505e /lib
parenta1ca7e8ebb49ee92ebe8e4abe3db27491d7bbddf (diff)
xutil.c: remove duplicate copies, create new library libutil.a to contain xutil.
We keep the lib/xutil.c version. As a consequence, also factor out _internal_error and associated macros. It might be overkill to make a new file error_util.c for this, but _internal_error does not really belong in database.cc.
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile.local5
-rw-r--r--lib/database.cc15
-rw-r--r--lib/notmuch-private.h20
-rw-r--r--lib/xutil.c134
-rw-r--r--lib/xutil.h55
5 files changed, 3 insertions, 226 deletions
diff --git a/lib/Makefile.local b/lib/Makefile.local
index be51eaa1..d58552c4 100644
--- a/lib/Makefile.local
+++ b/lib/Makefile.local
@@ -54,8 +54,7 @@ libnotmuch_c_srcs = \
$(dir)/message-file.c \
$(dir)/messages.c \
$(dir)/sha1.c \
- $(dir)/tags.c \
- $(dir)/xutil.c
+ $(dir)/tags.c
libnotmuch_cxx_srcs = \
$(dir)/database.cc \
@@ -71,7 +70,7 @@ $(dir)/libnotmuch.a: $(libnotmuch_modules)
$(call quiet,AR) rcs $@ $^
$(dir)/$(LIBNAME): $(libnotmuch_modules) notmuch.sym
- $(call quiet,CXX $(CXXFLAGS)) $(libnotmuch_modules) $(FINAL_LIBNOTMUCH_LDFLAGS) $(LIBRARY_LINK_FLAG) -o $@
+ $(call quiet,CXX $(CXXFLAGS)) $(libnotmuch_modules) $(FINAL_LIBNOTMUCH_LDFLAGS) $(LIBRARY_LINK_FLAG) -o $@ -L$(srcdir)/util -lutil
notmuch.sym: $(srcdir)/$(dir)/notmuch.h $(libnotmuch_modules)
sh $(srcdir)/$(lib)/gen-version-script.sh $< $(libnotmuch_modules) > $@
diff --git a/lib/database.cc b/lib/database.cc
index e77fd536..88be9391 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -209,21 +209,6 @@ static prefix_t PROBABILISTIC_PREFIX[]= {
{ "folder", "XFOLDER"}
};
-int
-_internal_error (const char *format, ...)
-{
- va_list va_args;
-
- va_start (va_args, format);
-
- fprintf (stderr, "Internal error: ");
- vfprintf (stderr, format, va_args);
-
- exit (1);
-
- return 1;
-}
-
const char *
_find_prefix (const char *name)
{
diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
index d3195305..0d3cc27e 100644
--- a/lib/notmuch-private.h
+++ b/lib/notmuch-private.h
@@ -47,6 +47,7 @@ NOTMUCH_BEGIN_DECLS
#include <talloc.h>
#include "xutil.h"
+#include "error_util.h"
#pragma GCC visibility push(hidden)
@@ -60,25 +61,6 @@ NOTMUCH_BEGIN_DECLS
#define STRNCMP_LITERAL(var, literal) \
strncmp ((var), (literal), sizeof (literal) - 1)
-/* There's no point in continuing when we've detected that we've done
- * something wrong internally (as opposed to the user passing in a
- * bogus value).
- *
- * Note that PRINTF_ATTRIBUTE comes from talloc.h
- */
-int
-_internal_error (const char *format, ...) PRINTF_ATTRIBUTE (1, 2);
-
-/* There's no point in continuing when we've detected that we've done
- * something wrong internally (as opposed to the user passing in a
- * bogus value).
- *
- * Note that __location__ comes from talloc.h.
- */
-#define INTERNAL_ERROR(format, ...) \
- _internal_error (format " (%s).\n", \
- ##__VA_ARGS__, __location__)
-
#define unused(x) x __attribute__ ((unused))
#ifdef __cplusplus
diff --git a/lib/xutil.c b/lib/xutil.c
deleted file mode 100644
index 268225b8..00000000
--- a/lib/xutil.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* xutil.c - Various wrapper functions to abort on error.
- *
- * Copyright © 2009 Carl Worth
- *
- * 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 3 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, see http://www.gnu.org/licenses/ .
- *
- * Author: Carl Worth <cworth@cworth.org>
- */
-
-#include "notmuch-private.h"
-
-#include <stdio.h>
-
-void *
-xcalloc (size_t nmemb, size_t size)
-{
- void *ret;
-
- ret = calloc (nmemb, size);
- if (ret == NULL) {
- fprintf (stderr, "Out of memory.\n");
- exit (1);
- }
-
- return ret;
-}
-
-void *
-xmalloc (size_t size)
-{
- void *ret;
-
- ret = malloc (size);
- if (ret == NULL) {
- fprintf (stderr, "Out of memory.\n");
- exit (1);
- }
-
- return ret;
-}
-
-void *
-xrealloc (void *ptr, size_t size)
-{
- void *ret;
-
- ret = realloc (ptr, size);
- if (ret == NULL) {
- fprintf (stderr, "Out of memory.\n");
- exit (1);
- }
-
- return ret;
-}
-
-char *
-xstrdup (const char *s)
-{
- char *ret;
-
- ret = strdup (s);
- if (ret == NULL) {
- fprintf (stderr, "Out of memory.\n");
- exit (1);
- }
-
- return ret;
-}
-
-char *
-xstrndup (const char *s, size_t n)
-{
- char *ret;
-
- if (strlen (s) <= n)
- n = strlen (s);
-
- ret = malloc (n + 1);
- if (ret == NULL) {
- fprintf (stderr, "Out of memory.\n");
- exit (1);
- }
- memcpy (ret, s, n);
- ret[n] = '\0';
-
- return ret;
-}
-
-void
-xregcomp (regex_t *preg, const char *regex, int cflags)
-{
- int rerr;
-
- rerr = regcomp (preg, regex, cflags);
- if (rerr) {
- size_t error_size = regerror (rerr, preg, NULL, 0);
- char *error = xmalloc (error_size);
-
- regerror (rerr, preg, error, error_size);
- INTERNAL_ERROR ("compiling regex %s: %s\n",
- regex, error);
- }
-}
-
-int
-xregexec (const regex_t *preg, const char *string,
- size_t nmatch, regmatch_t pmatch[], int eflags)
-{
- unsigned int i;
- int rerr;
-
- rerr = regexec (preg, string, nmatch, pmatch, eflags);
- if (rerr)
- return rerr;
-
- for (i = 0; i < nmatch; i++) {
- if (pmatch[i].rm_so == -1)
- INTERNAL_ERROR ("matching regex against %s: Sub-match %d not found\n",
- string, i);
- }
-
- return 0;
-}
diff --git a/lib/xutil.h b/lib/xutil.h
deleted file mode 100644
index fd77f733..00000000
--- a/lib/xutil.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* xutil.h - Various wrapper functions to abort on error.
- *
- * Copyright © 2009 Carl Worth
- *
- * 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 3 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, see http://www.gnu.org/licenses/ .
- *
- * Author: Carl Worth <cworth@cworth.org>
- */
-
-#ifndef NOTMUCH_XUTIL_H
-#define NOTMUCH_XUTIL_H
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <regex.h>
-
-#pragma GCC visibility push(hidden)
-
-/* xutil.c */
-void *
-xcalloc (size_t nmemb, size_t size);
-
-void *
-xmalloc (size_t size);
-
-void *
-xrealloc (void *ptrr, size_t size);
-
-char *
-xstrdup (const char *s);
-
-char *
-xstrndup (const char *s, size_t n);
-
-void
-xregcomp (regex_t *preg, const char *regex, int cflags);
-
-int
-xregexec (const regex_t *preg, const char *string,
- size_t nmatch, regmatch_t pmatch[], int eflags);
-
-#pragma GCC visibility pop
-
-#endif