aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-08-17 17:57:30 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2011-08-17 17:57:30 +0000
commite22604d840c4db32fed14e59f56c5e4f419692d8 (patch)
treedc3260374404d1ce013bbcd1a29164b3e14aef7e
parent360cc1a82c0bebebd70f4890a8dcaa78891c032a (diff)
downloadgdbm-e22604d840c4db32fed14e59f56c5e4f419692d8.tar.gz
gdbm-e22604d840c4db32fed14e59f56c5e4f419692d8.tar.bz2
Introduce new error code.
* configure.ac, NEWS: Raise patchlevel to 90. * src/gdbm.h.in: Enclose entire file in conditional extern "C". (GDBM_FILE_STAT_ERROR): New error code. (_GDBM_MAX_ERRNO): Update. * src/gdbmerrno.c (gdbm_errlist): Update. * src/gdbmopen.c: Set GDBM_FILE_STAT_ERROR on fstat failure. * src/gdbmreorg.c: Likewise. * src/mmap.c: Likewise. * src/systems.h: Include errno.h * gdbm.texinfo: Document GDBM_FILE_STAT_ERROR.
-rw-r--r--ChangeLog17
-rw-r--r--NEWS7
-rw-r--r--configure.ac2
-rw-r--r--doc/gdbm.texinfo5
-rw-r--r--po/Makefile557
-rw-r--r--src/gdbm.h.in23
-rw-r--r--src/gdbmerrno.c3
-rw-r--r--src/gdbmopen.c13
-rw-r--r--src/gdbmreorg.c10
-rw-r--r--src/mmap.c10
-rw-r--r--src/systems.h1
11 files changed, 65 insertions, 583 deletions
diff --git a/ChangeLog b/ChangeLog
index d332413..460ab4f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,23 @@
+2011-08-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Introduce new error code.
+
+ * configure.ac, NEWS: Raise patchlevel to 90.
+ * src/gdbm.h.in: Enclose entire file in conditional
+ extern "C".
+ (GDBM_FILE_STAT_ERROR): New error code.
+ (_GDBM_MAX_ERRNO): Update.
+ * src/gdbmerrno.c (gdbm_errlist): Update.
+ * src/gdbmopen.c: Set GDBM_FILE_STAT_ERROR on fstat
+ failure.
+ * src/gdbmreorg.c: Likewise.
+ * src/mmap.c: Likewise.
+ * src/systems.h: Include errno.h
+ * gdbm.texinfo: Document GDBM_FILE_STAT_ERROR.
+
2011-08-16 Sergey Poznyakoff <gray@gnu.org.ua>
Minor housekeeping for Gnits compliance.
* README-alpha: New file.
* README-hacking: New file.
diff --git a/NEWS b/NEWS
index 3756252..47683a6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,12 +1,17 @@
-GNU dbm NEWS -- history of user-visible changes. 2011-08-13
+GNU dbm NEWS -- history of user-visible changes. 2011-08-17
Copyright (C) 1990-2011 Free Software Foundation, Inc.
See the end of file for copying conditions.
Please send gdbm bug reports to <bug-gdbm@gnu.org>.
+Version 1.9.90 (Git)
+
+* Internationalization
+
+
Version 1.9.1
* Bugfix
Improperly used preprocessor directive caused compilation failure
when using gcc 4.4.4 or newer.
diff --git a/configure.ac b/configure.ac
index 23da438..bd6c591 100644
--- a/configure.ac
+++ b/configure.ac
@@ -13,13 +13,13 @@
#
# You should have received a copy of the GNU General Public License
# along with GDBM. If not, see <http://www.gnu.org/licenses/>. */
m4_define([_GDBM_VERSION_MAJOR], 1)
m4_define([_GDBM_VERSION_MINOR], 9)
-m4_define([_GDBM_VERSION_PATCH], 1)
+m4_define([_GDBM_VERSION_PATCH], 90)
AC_INIT([gdbm],
_GDBM_VERSION_MAJOR._GDBM_VERSION_MINOR[]m4_ifdef([_GDBM_VERSION_PATCH],._GDBM_VERSION_PATCH),
[bug-gdbm@gnu.org])
AC_PREREQ(2.63)
AC_CONFIG_SRCDIR([src/gdbmdefs.h])
diff --git a/doc/gdbm.texinfo b/doc/gdbm.texinfo
index 3463b84..98e3bc3 100644
--- a/doc/gdbm.texinfo
+++ b/doc/gdbm.texinfo
@@ -1456,12 +1456,17 @@ The @code{gdbm_open} function (@pxref{Open}) sets this error code if
the file it tries to open has a wrong magic number.
@kwindex GDBM_BAD_OPEN_FLAGS
@item GDBM_BAD_OPEN_FLAGS
Set by the @code{gdbm_export} function if supplied an invalid
@var{flags} argument. @xref{Flat files}.
+
+@kwindex GDBM_FILE_STAT_ERROR
+@item GDBM_FILE_STAT_ERROR
+Getting information about a disk file failed. The system @code{errno}
+will give more details about the error.
@end table
@node Compatibility
@chapter Compatibility with standard @code{dbm} and @code{ndbm}.
@cindex compatibility layer
diff --git a/po/Makefile b/po/Makefile
deleted file mode 100644
index 2a987f0..0000000
--- a/po/Makefile
+++ /dev/null
@@ -1,557 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-#
-# Origin: gettext-0.18
-GETTEXT_MACRO_VERSION = 0.18
-
-PACKAGE = gdbm
-VERSION = 1.9.1
-PACKAGE_BUGREPORT = bug-gdbm@gnu.org
-
-SHELL = /bin/sh
-
-
-srcdir = .
-top_srcdir = ..
-
-
-prefix = /home/gray/alpha
-exec_prefix = ${prefix}
-datarootdir = ${prefix}/share
-datadir = ${datarootdir}
-localedir = ${datarootdir}/locale
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = /usr/bin/ginstall -c
-INSTALL_DATA = ${INSTALL} -m 644
-
-# We use $(mkdir_p).
-# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
-# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
-# ${SHELL} /home/gray/gnu/gdbm/build-aux/install-sh does not start with $(SHELL), so we add it.
-# In automake >= 1.10, /usr/bin/mkdir -p is derived from ${MKDIR_P}, which is defined
-# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
-# versions, $(mkinstalldirs) and $(install_sh) are unused.
-mkinstalldirs = $(SHELL) ${SHELL} /home/gray/gnu/gdbm/build-aux/install-sh -d
-install_sh = $(SHELL) ${SHELL} /home/gray/gnu/gdbm/build-aux/install-sh
-MKDIR_P = /usr/bin/mkdir -p
-mkdir_p = /usr/bin/mkdir -p
-
-GMSGFMT_ = /usr/bin/msgfmt
-GMSGFMT_no = /usr/bin/msgfmt
-GMSGFMT_yes = /usr/bin/msgfmt
-GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = /usr/bin/msgfmt
-MSGFMT_no = /usr/bin/msgfmt
-MSGFMT_yes = /usr/bin/msgfmt
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
-XGETTEXT_ = /usr/bin/xgettext
-XGETTEXT_no = /usr/bin/xgettext
-XGETTEXT_yes = /usr/bin/xgettext
-XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = /usr/bin/msgmerge --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES =
-GMOFILES =
-UPDATEPOFILES =
-DUMMYPOFILES =
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
- ../src/gdbmerrno.c \
- ../src/bucket.c \
- ../src/falloc.c \
- ../src/findkey.c \
- ../src/gdbmseq.c \
- ../src/testgdbm.c \
- ../src/update.c
-CATALOGS =
-
-# Makevars gets inserted here. (Don't remove this line!)
-# Gettext variables for GDBM
-# Copyright (C) 2011 Free Software Foundation, Inc.
-#
-# GDBM 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, or (at your option)
-# any later version.
-#
-# GDBM 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 GDBM. If not, see <http://www.gnu.org/licenses/>.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = \
- --keyword=_\
- --keyword=N_\
- --flag=_:1:pass-c-format\
- --flag=N_:1:pass-c-format\
- --flag=error:2:c-format
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = Free Software Foundation, Inc.
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS = bug-gdbm@gnu.org
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
- @echo "$(MSGFMT) -c -o $@ $<"; \
- $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
- @lang=`echo $* | sed -e 's,.*/,,'`; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
- sed -e '/^#/d' $< > t-$@
- mv t-$@ $@
-
-
-all: check-macro-version all-yes
-
-all-yes: stamp-po
-all-no:
-
-# Ensure that the gettext macros and this Makefile.in.in are in sync.
-check-macro-version:
- @test "$(GETTEXT_MACRO_VERSION)" = "0.18" \
- || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.18" 1>&2; \
- exit 1; \
- }
-
-# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
-# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
-# we don't want to bother translators with empty POT files). We assume that
-# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
- test ! -f $(srcdir)/$(DOMAIN).pot || \
- test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
- @test ! -f $(srcdir)/$(DOMAIN).pot || { \
- echo "touch stamp-po" && \
- echo timestamp > stamp-poT && \
- mv stamp-poT stamp-po; \
- }
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
- if LC_ALL=C grep 'GNU gdbm' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
- package_gnu='GNU '; \
- else \
- package_gnu=''; \
- fi; \
- if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
- msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
- else \
- msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
- fi; \
- case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --msgid-bugs-address="$$msgid_bugs_address" \
- ;; \
- *) \
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --package-name="$${package_gnu}gdbm" \
- --package-version='1.9.1' \
- --msgid-bugs-address="$$msgid_bugs_address" \
- ;; \
- esac
- test ! -f $(DOMAIN).po || { \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
- sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
- if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
- else \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- else \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- }
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
- $(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
- @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
- if test -f "$(srcdir)/$${lang}.po"; then \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
- cd $(srcdir) \
- && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
- *) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
- esac; \
- }; \
- else \
- $(MAKE) $${lang}.po-create; \
- fi
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data-yes
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
- for file in $(DISTFILES.common) Makevars.template; do \
- $(INSTALL_DATA) $(srcdir)/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- for file in Makevars; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-install-data-no: all
-install-data-yes: all
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkdir_p) $(DESTDIR)$$dir; \
- if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
- $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
- echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
- fi; \
- done; \
- done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data-yes
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-installdirs-data-no:
-installdirs-data-yes:
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkdir_p) $(DESTDIR)$$dir; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- fi; \
- done; \
- done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data-yes
- if test "$(PACKAGE)" = "gettext-tools"; then \
- for file in $(DISTFILES.common) Makevars.template; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-uninstall-data-no:
-uninstall-data-yes:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- done; \
- done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
- rm -f remove-potcdate.sed
- rm -f stamp-poT
- rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
- $(MAKE) update-po
- @$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
- dists="$(DISTFILES)"; \
- if test "$(PACKAGE)" = "gettext-tools"; then \
- dists="$$dists Makevars.template"; \
- fi; \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- dists="$$dists $(DOMAIN).pot stamp-po"; \
- fi; \
- if test -f $(srcdir)/ChangeLog; then \
- dists="$$dists ChangeLog"; \
- fi; \
- for i in 0 1 2 3 4 5 6 7 8 9; do \
- if test -f $(srcdir)/ChangeLog.$$i; then \
- dists="$$dists ChangeLog.$$i"; \
- fi; \
- done; \
- if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
- for file in $$dists; do \
- if test -f $$file; then \
- cp -p $$file $(distdir) || exit 1; \
- else \
- cp -p $(srcdir)/$$file $(distdir) || exit 1; \
- fi; \
- done
-
-update-po: Makefile
- $(MAKE) $(DOMAIN).pot-update
- test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
- $(MAKE) update-gmo
-
-# General rule for creating PO files.
-
-.nop.po-create:
- @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
- echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
- exit 1
-
-# General rule for updating PO files.
-
-.nop.po-update:
- @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
- if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
- cd $(srcdir); \
- if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
- *) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
- esac; \
- }; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "msgmerge for $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
- @:
-
-# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
-# because execution permission bits may not work on the current file system.
-# Use /bin/sh, which is the shell determined by autoconf for the use by its
-# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
-Makefile: Makefile.in.in Makevars $(top_builddir)/config.status POTFILES.in
- cd $(top_builddir) \
- && /bin/sh ./config.status $(subdir)/$@.in po-directories
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-# Special Makefile rules for English message catalogs with quotation marks.
-
-DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
-
-.SUFFIXES: .insert-header .po-update-en
-
-en@quot.po-create:
- $(MAKE) en@quot.po-update
-en@boldquot.po-create:
- $(MAKE) en@boldquot.po-update
-
-en@quot.po-update: en@quot.po-update-en
-en@boldquot.po-update: en@boldquot.po-update-en
-
-.insert-header.po-update-en:
- @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
- if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- ll=`echo $$lang | sed -e 's/@.*//'`; \
- LC_ALL=C; export LC_ALL; \
- cd $(srcdir); \
- if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "creation of $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-en@quot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
-
-en@boldquot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
-
-mostlyclean: mostlyclean-quot
-mostlyclean-quot:
- rm -f *.insert-header
diff --git a/src/gdbm.h.in b/src/gdbm.h.in
index d9a52da..a7cd49e 100644
--- a/src/gdbm.h.in
+++ b/src/gdbm.h.in
@@ -26,12 +26,17 @@
*************************************************************************/
/* Protection for multiple includes. */
#ifndef _GDBM_H_
# define _GDBM_H_
+/* GDBM C++ support */
+# if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+# endif
+
/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
can create the database. */
# define GDBM_READER 0 /* A reader. */
# define GDBM_WRITER 1 /* A writer. */
# define GDBM_WRCREAT 2 /* A writer. Create the db if needed. */
# define GDBM_NEWDB 3 /* A writer. Always create a new db. */
@@ -87,17 +92,12 @@ extern const char *gdbm_version;
# define GDBM_VERSION_MAJOR @GDBM_VERSION_MAJOR@
# define GDBM_VERSION_MINOR @GDBM_VERSION_MINOR@
# define GDBM_VERSION_PATCH @GDBM_VERSION_PATCH@
extern int const gdbm_version_number[3];
-/* GDBM C++ support */
-# if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-# endif
-
/* GDBM external functions. */
extern GDBM_FILE gdbm_open (const char *, int, int, int,
void (*)(const char *));
extern void gdbm_close (GDBM_FILE);
extern int gdbm_store (GDBM_FILE, datum, datum, int);
@@ -110,16 +110,12 @@ extern void gdbm_sync (GDBM_FILE);
extern int gdbm_exists (GDBM_FILE, datum);
extern int gdbm_setopt (GDBM_FILE, int, void *, int);
extern int gdbm_fdesc (GDBM_FILE);
extern int gdbm_export (GDBM_FILE, const char *, int, int);
extern int gdbm_import (GDBM_FILE, const char *, int);
-# if defined(__cplusplus) || defined(c_plusplus)
-}
-# endif
-
# define GDBM_NO_ERROR 0
# define GDBM_MALLOC_ERROR 1
# define GDBM_BLOCK_SIZE_ERROR 2
# define GDBM_FILE_OPEN_ERROR 3
# define GDBM_FILE_WRITE_ERROR 4
# define GDBM_FILE_SEEK_ERROR 5
@@ -138,25 +134,22 @@ extern int gdbm_import (GDBM_FILE, const char *, int);
# define GDBM_ILLEGAL_DATA 18
# define GDBM_OPT_ALREADY_SET 19
# define GDBM_OPT_ILLEGAL 20
# define GDBM_BYTE_SWAPPED 21
# define GDBM_BAD_FILE_OFFSET 22
# define GDBM_BAD_OPEN_FLAGS 23
+# define GDBM_FILE_STAT_ERROR 24
+
# define _GDBM_MIN_ERRNO 0
-# define _GDBM_MAX_ERRNO GDBM_BAD_OPEN_FLAGS
+# define _GDBM_MAX_ERRNO GDBM_FILE_STAT_ERROR
typedef int gdbm_error; /* For compatibilities sake. */
extern gdbm_error gdbm_errno;
extern const char * const gdbm_errlist[];
/* extra prototypes */
-/* GDBM C++ support */
-# if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-# endif
-
extern const char *gdbm_strerror (gdbm_error);
extern int gdbm_version_cmp (int const a[], int const b[]);
# if defined(__cplusplus) || defined(c_plusplus)
}
# endif
diff --git a/src/gdbmerrno.c b/src/gdbmerrno.c
index 16c07c2..9d7a2bf 100644
--- a/src/gdbmerrno.c
+++ b/src/gdbmerrno.c
@@ -48,13 +48,14 @@ const char * const gdbm_errlist[_GDBM_MAX_ERRNO+1] = {
N_("Cannot replace"), /* GDBM_CANNOT_REPLACE */
N_("Illegal data"), /* GDBM_ILLEGAL_DATA */
N_("Option already set"), /* GDBM_OPT_ALREADY_SET */
N_("Illegal option"), /* GDBM_OPT_ILLEGAL */
N_("Byte-swapped file"), /* GDBM_BYTE_SWAPPED */
N_("Wrong file offset"), /* GDBM_BAD_FILE_OFFSET */
- N_("Bad file flags") /* GDBM_BAD_OPEN_FLAGS */
+ N_("Bad file flags"), /* GDBM_BAD_OPEN_FLAGS */
+ N_("Cannot stat file"), /* GDBM_FILE_STAT_ERROR */
};
const char *
gdbm_strerror (gdbm_error error)
{
if (((int)error < _GDBM_MIN_ERRNO) || ((int)error > _GDBM_MAX_ERRNO))
diff --git a/src/gdbmopen.c b/src/gdbmopen.c
index 71292b5..2029499 100644
--- a/src/gdbmopen.c
+++ b/src/gdbmopen.c
@@ -149,14 +149,23 @@ gdbm_open (const char *file, int block_size, int flags, int mode,
free (dbf);
gdbm_errno = GDBM_FILE_OPEN_ERROR;
return NULL;
}
/* Get the status of the file. */
- fstat (dbf->desc, &file_stat);
-
+ if (fstat (dbf->desc, &file_stat))
+ {
+ int ec = errno;
+ close (dbf->desc);
+ free (dbf->name);
+ free (dbf);
+ gdbm_errno = GDBM_FILE_STAT_ERROR;
+ errno = ec;
+ return NULL;
+ }
+
/* Zero-length file can't be a reader... */
if (((flags & GDBM_OPENMASK) == GDBM_READER) && (file_stat.st_size == 0))
{
close (dbf->desc);
free (dbf->name);
free (dbf);
diff --git a/src/gdbmreorg.c b/src/gdbmreorg.c
index 506a1b9..5fc0d68 100644
--- a/src/gdbmreorg.c
+++ b/src/gdbmreorg.c
@@ -70,12 +70,19 @@ gdbm_reorganize (GDBM_FILE dbf)
if (dbf->read_write == GDBM_READER)
{
gdbm_errno = GDBM_READER_CANT_REORGANIZE;
return -1;
}
+ /* Get the mode for the old file */
+ if (fstat (dbf->desc, &fileinfo))
+ {
+ gdbm_errno = GDBM_FILE_STAT_ERROR;
+ return -1;
+ }
+
/* Initialize the gdbm_errno variable. */
gdbm_errno = GDBM_NO_ERROR;
/* Construct new name for temporary file. */
len = strlen (dbf->name);
new_name = (char *) malloc (len + 3);
@@ -91,14 +98,13 @@ gdbm_reorganize (GDBM_FILE dbf)
{
new_name[len] = new_name[len-1];
len -= 1;
}
new_name[len] = '#';
- /* Get the mode for the old file and open the new database. */
- fstat (dbf->desc, &fileinfo);
+ /* Open the new database. */
new_dbf = gdbm_open (new_name, dbf->header->block_size, GDBM_WRCREAT,
fileinfo.st_mode, dbf->fatal_err);
if (new_dbf == NULL)
{
free (new_name);
diff --git a/src/mmap.c b/src/mmap.c
index f0cd4e3..44101e9 100644
--- a/src/mmap.c
+++ b/src/mmap.c
@@ -131,15 +131,16 @@ int
_gdbm_mapped_remap (GDBM_FILE dbf, off_t size, int flag)
{
off_t file_size, pos;
if (_gdbm_file_size (dbf, &file_size))
{
- gdbm_errno = GDBM_MALLOC_ERROR; /* FIXME: Need a special error code?
- */
+ int ec = errno;
+ gdbm_errno = GDBM_FILE_STAT_ERROR;
_gdbm_mapped_unmap (dbf);
+ errno = ec;
return -1;
}
if (flag == _REMAP_END && size < file_size)
size = file_size;
@@ -328,14 +329,15 @@ _gdbm_mapped_lseek (GDBM_FILE dbf, off_t offset, int whence)
case SEEK_END:
{
off_t file_size;
if (_gdbm_file_size (dbf, &file_size))
{
- gdbm_errno = GDBM_MALLOC_ERROR; /* FIXME: Need a special error
- code? */
+ int ec = errno;
+ gdbm_errno = GDBM_FILE_STAT_ERROR;
+ errno = ec;
return -1;
}
needle = file_size - offset;
break;
}
}
diff --git a/src/systems.h b/src/systems.h
index b24729f..9a8f449 100644
--- a/src/systems.h
+++ b/src/systems.h
@@ -37,12 +37,13 @@
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#if HAVE_FCNTL_H
# include <fcntl.h>
#endif
+#include <errno.h>
#ifndef SEEK_SET
# define SEEK_SET 0
#endif
#ifndef L_SET

Return to:

Send suggestions and report system problems to the System administrator.