aboutsummaryrefslogtreecommitdiffstats
path: root/kbx
diff options
context:
space:
mode:
Diffstat (limited to 'kbx')
-rw-r--r--kbx/ChangeLog7
-rw-r--r--kbx/Makefile.am5
-rw-r--r--kbx/keybox-file.c16
-rw-r--r--kbx/keybox-update.c32
4 files changed, 58 insertions, 2 deletions
diff --git a/kbx/ChangeLog b/kbx/ChangeLog
index 3688174bd..7c112085c 100644
--- a/kbx/ChangeLog
+++ b/kbx/ChangeLog
@@ -1,3 +1,10 @@
+2005-06-01 Werner Koch <[email protected]>
+
+ * keybox-file.c (ftello) [!HAVE_FSEEKO]: New replacement
+ function. Copied from ../common/ftello.c.
+ * keybox-update.c (fseeko) [!HAVE_FSEEKO]: New replacement
+ function. Copied from ../common/iobuf.c.
+
2004-12-18 Werner Koch <[email protected]>
* keybox-defs.h (map_assuan_err): Define in terms of
diff --git a/kbx/Makefile.am b/kbx/Makefile.am
index ea8436d72..85704eb66 100644
--- a/kbx/Makefile.am
+++ b/kbx/Makefile.am
@@ -23,7 +23,7 @@ localedir = $(datadir)/locale
INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\"
EXTRA_DIST = mkerrors
-AM_CPPFLAGS = -I$(top_srcdir)/common -I$(top_srcdir)/intl \
+AM_CPPFLAGS = -I$(top_srcdir)/gl -I$(top_srcdir)/common -I$(top_srcdir)/intl \
$(LIBGCRYPT_CFLAGS) $(KSBA_CFLAGS)
noinst_LIBRARIES = libkeybox.a
@@ -45,6 +45,7 @@ libkeybox_a_SOURCES = $(common_sources)
# Note that libcommon is only required to resolve the LIBOBJS.
kbxutil_SOURCES = kbxutil.c $(common_sources)
-kbxutil_LDADD = ../jnlib/libjnlib.a $(KSBA_LIBS) $(LIBGCRYPT_LIBS) \
+kbxutil_LDADD = ../gl/libgnu.a ../jnlib/libjnlib.a \
+ $(KSBA_LIBS) $(LIBGCRYPT_LIBS) \
-lgpg-error $(LIBINTL) ../common/libcommon.a
diff --git a/kbx/keybox-file.c b/kbx/keybox-file.c
index db3164fef..fe02c1f9f 100644
--- a/kbx/keybox-file.c
+++ b/kbx/keybox-file.c
@@ -27,6 +27,22 @@
#include "keybox-defs.h"
+
+#if !defined(HAVE_FTELLO) && !defined(ftello)
+static off_t
+ftello (FILE *stream)
+{
+ long int off;
+
+ off = ftell (stream);
+ if (off == -1)
+ return (off_t)-1;
+ return off;
+}
+#endif /* !defined(HAVE_FTELLO) && !defined(ftello) */
+
+
+
/* Read a block at the current postion and return it in r_blob.
r_blob may be NULL to simply skip the current block */
int
diff --git a/kbx/keybox-update.c b/kbx/keybox-update.c
index eabaa1db2..a16c18e23 100644
--- a/kbx/keybox-update.c
+++ b/kbx/keybox-update.c
@@ -31,6 +31,38 @@
#define EXTSEP_S "."
+#if !defined(HAVE_FSEEKO) && !defined(fseeko)
+
+#ifdef HAVE_LIMITS_H
+# include <limits.h>
+#endif
+#ifndef LONG_MAX
+# define LONG_MAX ((long) ((unsigned long) -1 >> 1))
+#endif
+#ifndef LONG_MIN
+# define LONG_MIN (-1 - LONG_MAX)
+#endif
+
+/****************
+ * A substitute for fseeko, for hosts that don't have it.
+ */
+static int
+fseeko (FILE * stream, off_t newpos, int whence)
+{
+ while (newpos != (long) newpos)
+ {
+ long pos = newpos < 0 ? LONG_MIN : LONG_MAX;
+ if (fseek (stream, pos, whence) != 0)
+ return -1;
+ newpos -= pos;
+ whence = SEEK_CUR;
+ }
+ return fseek (stream, (long) newpos, whence);
+}
+#endif /* !defined(HAVE_FSEEKO) && !defined(fseeko) */
+
+
+
static int
create_tmp_file (const char *template,
char **r_bakfname, char **r_tmpfname, FILE **r_fp)