adding/removing patch files
This commit is contained in:
parent
a02bb8e4da
commit
2a8acaf6bc
@ -1,138 +0,0 @@
|
|||||||
diff -up gdbm-1.8.3/Makefile.in.fhs gdbm-1.8.3/Makefile.in
|
|
||||||
--- gdbm-1.8.3/Makefile.in.fhs 2002-10-08 18:09:12.000000000 +0200
|
|
||||||
+++ gdbm-1.8.3/Makefile.in 2010-03-10 15:41:01.516025096 +0100
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
#### Start of system configuration section. ####
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
-top_builddir = .
|
|
||||||
+top_builddir = @top_builddir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
|
|
||||||
CC = @CC@
|
|
||||||
@@ -14,17 +14,13 @@ INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
|
|
||||||
-# File ownership and group
|
|
||||||
-BINOWN = bin
|
|
||||||
-BINGRP = bin
|
|
||||||
-
|
|
||||||
MAKEINFO = makeinfo
|
|
||||||
TEXI2DVI = texi2dvi
|
|
||||||
|
|
||||||
-DEFS =
|
|
||||||
+DEFS = @DEFS@
|
|
||||||
|
|
||||||
# Where the system [n]dbm routines are...
|
|
||||||
-LIBS = @LIBS@ -lc
|
|
||||||
+LIBS = @LIBS@
|
|
||||||
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
@@ -32,16 +28,17 @@ LDFLAGS = @LDFLAGS@
|
|
||||||
# Common prefix for installation directories
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
-binprefix = $(exec_prefix)
|
|
||||||
-manprefix = $(prefix)
|
|
||||||
+datarootdir = @datarootdir@
|
|
||||||
|
|
||||||
# Directory in which to put libgdbm.a.
|
|
||||||
libdir = @libdir@
|
|
||||||
# The include directory for gdbm.h and dbm.h.
|
|
||||||
includedir = @includedir@
|
|
||||||
+pkgincludedir = $(includedir)/gdbm
|
|
||||||
# Info and man directories.
|
|
||||||
infodir = @infodir@
|
|
||||||
-man3dir = @mandir@/man3
|
|
||||||
+mandir = @mandir@
|
|
||||||
+man3dir = $(mandir)/man3
|
|
||||||
manext = 3
|
|
||||||
|
|
||||||
#### End of system configuration section. ####
|
|
||||||
@@ -57,7 +54,7 @@ manext = 3
|
|
||||||
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
-PROGS = libgdbm.la testgdbm testdbm testndbm tndbm tdbm conv2gdbm
|
|
||||||
+PROGS = libgdbm.la testgdbm testdbm testndbm conv2gdbm
|
|
||||||
|
|
||||||
DBM_CF = dbminit.c delete.c fetch.c store.c seq.c close.c
|
|
||||||
|
|
||||||
@@ -127,26 +124,17 @@ all: libgdbm.la libgdbm_compat.la
|
|
||||||
progs: $(PROGS)
|
|
||||||
|
|
||||||
install: libgdbm.la gdbm.h gdbm.info
|
|
||||||
- $(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
|
|
||||||
- $(INSTALL_ROOT)$(includedir) $(INSTALL_ROOT)$(man3dir) \
|
|
||||||
- $(INSTALL_ROOT)$(infodir)
|
|
||||||
- $(LIBTOOL) $(INSTALL) -c libgdbm.la $(INSTALL_ROOT)$(libdir)/libgdbm.la
|
|
||||||
- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) gdbm.h \
|
|
||||||
- $(INSTALL_ROOT)$(includedir)/gdbm.h
|
|
||||||
- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.3 \
|
|
||||||
- $(INSTALL_ROOT)$(man3dir)/gdbm.3
|
|
||||||
- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.info \
|
|
||||||
- $(INSTALL_ROOT)$(infodir)/gdbm.info
|
|
||||||
+ $(srcdir)/mkinstalldirs $(libdir) $(pkgincludedir) $(man3dir) $(infodir)
|
|
||||||
+ $(LIBTOOL) install install libgdbm.la $(libdir)/libgdbm.la
|
|
||||||
+ $(INSTALL_DATA) gdbm.h $(pkgincludedir)/gdbm.h
|
|
||||||
+ $(INSTALL_DATA) $(srcdir)/gdbm.3 $(man3dir)/gdbm.3
|
|
||||||
+ $(INSTALL_DATA) $(srcdir)/gdbm.info $(infodir)/gdbm.info
|
|
||||||
|
|
||||||
install-compat:
|
|
||||||
- $(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
|
|
||||||
- $(INSTALL_ROOT)$(includedir)
|
|
||||||
- $(LIBTOOL) $(INSTALL) -c libgdbm_compat.la \
|
|
||||||
- $(INSTALL_ROOT)$(libdir)/libgdbm_compat.la
|
|
||||||
- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/dbm.h \
|
|
||||||
- $(INSTALL_ROOT)$(includedir)/dbm.h
|
|
||||||
- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/ndbm.h \
|
|
||||||
- $(INSTALL_ROOT)$(includedir)/ndbm.h
|
|
||||||
+ $(srcdir)/mkinstalldirs $(libdir) $(pkgincludedir)
|
|
||||||
+ $(LIBTOOL) install install libgdbm_compat.la $(libdir)/libgdbm_compat.la
|
|
||||||
+ $(INSTALL_DATA) $(srcdir)/dbm.h $(pkgincludedir)/dbm.h
|
|
||||||
+ $(INSTALL_DATA) $(srcdir)/ndbm.h $(pkgincludedir)/ndbm.h
|
|
||||||
|
|
||||||
#libgdbm.a: $(OBJS) gdbm.h
|
|
||||||
# rm -f libgdbm.a
|
|
||||||
@@ -161,7 +149,7 @@ libgdbm.la: $(LOBJS) gdbm.h
|
|
||||||
libgdbm_compat.la: $(C_LOBJS) gdbm.h
|
|
||||||
rm -f libgdbm_compat.la
|
|
||||||
$(LIBTOOL) --mode=link $(CC) -o libgdbm_compat.la -rpath $(libdir) \
|
|
||||||
- -version-info $(SHLIB_VER) $(C_LOBJS)
|
|
||||||
+ -version-info $(SHLIB_VER) $(C_LOBJS) -lgdbm
|
|
||||||
|
|
||||||
gdbm.h: gdbm.proto gdbmerrno.h gdbm.proto2
|
|
||||||
rm -f gdbm.h
|
|
||||||
@@ -172,10 +160,10 @@ gdbm.h: gdbm.proto gdbmerrno.h gdbm.prot
|
|
||||||
chmod -w gdbm.h
|
|
||||||
|
|
||||||
testgdbm: testgdbm.o libgdbm.la @LIBOBJS@
|
|
||||||
- $(LIBTOOL) $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la @LIBOBJS@
|
|
||||||
+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la @LIBOBJS@
|
|
||||||
|
|
||||||
testdbm: testdbm.o libgdbm.la libgdbm_compat.la
|
|
||||||
- $(LIBTOOL) $(CC) $(LDFLAGS) -o testdbm testdbm.o libgdbm.la libgdbm_compat.la
|
|
||||||
+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testdbm testdbm.o $(LIBS) libgdbm_compat.la
|
|
||||||
|
|
||||||
tdbm: testdbm.o
|
|
||||||
$(CC) $(LDFLAGS) -o tdbm testdbm.o $(LIBS)
|
|
||||||
@@ -184,7 +172,7 @@ testndbm.o: testndbm.c
|
|
||||||
$(CC) -c -I. -I$(srcdir) $(CFLAGS) $(DEFS) -DGNU $(srcdir)/testndbm.c
|
|
||||||
|
|
||||||
testndbm: testndbm.o libgdbm.la libgdbm_compat.la
|
|
||||||
- $(LIBTOOL) $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm.la libgdbm_compat.la
|
|
||||||
+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm_compat.la
|
|
||||||
|
|
||||||
tndbm.o: testndbm.c
|
|
||||||
cp $(srcdir)/testndbm.c ./tndbm.c
|
|
||||||
@@ -195,7 +183,7 @@ tndbm: tndbm.o
|
|
||||||
$(CC) $(LDFLAGS) -o tndbm tndbm.o $(LIBS)
|
|
||||||
|
|
||||||
conv2gdbm: conv2gdbm.o libgdbm.la @LIBOBJS@
|
|
||||||
- $(LIBTOOL) $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm.la @LIBOBJS@
|
|
||||||
+ $(LIBTOOL) link $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm_compat.la @LIBOBJS@
|
|
||||||
|
|
||||||
lintgdbm:
|
|
||||||
lint $(DEFS) $(LFLAGS) $(DBM_CF) $(NDBM_CF) $(GDBM_CF) testgdbm.c
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -up gdbm-1.8.3/gdbm.proto.filestruct gdbm-1.8.3/gdbm.proto
|
|
||||||
--- gdbm-1.8.3/gdbm.proto.filestruct 2011-01-13 09:54:03.004907454 +0100
|
|
||||||
+++ gdbm-1.8.3/gdbm.proto 2011-01-13 09:54:24.881714834 +0100
|
|
||||||
@@ -60,7 +60,7 @@ typedef struct {
|
|
||||||
|
|
||||||
|
|
||||||
/* The file information header. This is good enough for most applications. */
|
|
||||||
-typedef struct {int dummy[10];} *GDBM_FILE;
|
|
||||||
+typedef struct __GDBM_FILE_STRUC {int dummy[10];} *GDBM_FILE;
|
|
||||||
|
|
||||||
/* Determine if the C(++) compiler requires complete function prototype */
|
|
||||||
#ifndef __P
|
|
@ -1,94 +0,0 @@
|
|||||||
diff -up gdbm-1.8.3/dbmopen.c.dbmlock gdbm-1.8.3/dbmopen.c
|
|
||||||
--- gdbm-1.8.3/dbmopen.c.dbmlock 1999-05-19 02:16:05.000000000 +0200
|
|
||||||
+++ gdbm-1.8.3/dbmopen.c 2011-01-03 16:17:13.847173371 +0100
|
|
||||||
@@ -35,6 +35,28 @@
|
|
||||||
#include "gdbmerrno.h"
|
|
||||||
#include "extern.h"
|
|
||||||
|
|
||||||
+static int
|
|
||||||
+get_env_bool(env_var, def)
|
|
||||||
+ const char *env_var;
|
|
||||||
+ int def;
|
|
||||||
+{
|
|
||||||
+ const char *v = getenv(env_var);
|
|
||||||
+ if (!v)
|
|
||||||
+ return def;
|
|
||||||
+
|
|
||||||
+ if (!strcasecmp(v, "yes") ||
|
|
||||||
+ !strcasecmp(v, "true") ||
|
|
||||||
+ !strcasecmp(v, "on"))
|
|
||||||
+ return 1;
|
|
||||||
+
|
|
||||||
+ if (!strcasecmp(v, "no") ||
|
|
||||||
+ !strcasecmp(v, "false") ||
|
|
||||||
+ !strcasecmp(v, "off"))
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ return !!atoi(v);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Initialize ndbm system. FILE is a pointer to the file name. In
|
|
||||||
standard dbm, the database is found in files called FILE.pag and
|
|
||||||
FILE.dir. To make gdbm compatable with dbm using the dbminit call,
|
|
||||||
@@ -62,7 +84,7 @@ dbm_open (file, flags, mode)
|
|
||||||
char* dir_file; /* Used to construct "file.dir". */
|
|
||||||
struct stat dir_stat; /* Stat information for "file.dir". */
|
|
||||||
gdbm_file_info *temp_dbf; /* Temporary file pointer storage. */
|
|
||||||
-
|
|
||||||
+ int gdbm_mode = 0;
|
|
||||||
|
|
||||||
/* Prepare the correct names of "file.pag" and "file.dir". */
|
|
||||||
pag_file = (char *) malloc (strlen (file)+5);
|
|
||||||
@@ -77,26 +99,22 @@ dbm_open (file, flags, mode)
|
|
||||||
strcat (pag_file, ".pag");
|
|
||||||
strcpy (dir_file, file);
|
|
||||||
strcat (dir_file, ".dir");
|
|
||||||
-
|
|
||||||
+
|
|
||||||
+ if (!get_env_bool("NDBM_LOCK", 1))
|
|
||||||
+ gdbm_mode |= GDBM_NOLOCK;
|
|
||||||
|
|
||||||
/* Call the actual routine, saving the pointer to the file information. */
|
|
||||||
flags &= O_RDONLY | O_RDWR | O_CREAT | O_TRUNC;
|
|
||||||
if (flags == O_RDONLY)
|
|
||||||
- {
|
|
||||||
- temp_dbf = gdbm_open (pag_file, 0, GDBM_READER, 0, NULL);
|
|
||||||
- }
|
|
||||||
+ gdbm_mode |= GDBM_READER;
|
|
||||||
else if (flags == (O_RDWR | O_CREAT))
|
|
||||||
- {
|
|
||||||
- temp_dbf = gdbm_open (pag_file, 0, GDBM_WRCREAT, mode, NULL);
|
|
||||||
- }
|
|
||||||
- else if ( (flags & O_TRUNC) == O_TRUNC)
|
|
||||||
- {
|
|
||||||
- temp_dbf = gdbm_open (pag_file, 0, GDBM_NEWDB, mode, NULL);
|
|
||||||
- }
|
|
||||||
+ gdbm_mode |= GDBM_WRCREAT;
|
|
||||||
+ else if ((flags & O_TRUNC) == O_TRUNC)
|
|
||||||
+ gdbm_mode |= GDBM_NEWDB;
|
|
||||||
else
|
|
||||||
- {
|
|
||||||
- temp_dbf = gdbm_open (pag_file, 0, GDBM_WRITER, 0, NULL);
|
|
||||||
- }
|
|
||||||
+ gdbm_mode |= GDBM_WRITER;
|
|
||||||
+
|
|
||||||
+ temp_dbf = gdbm_open (pag_file, 0, gdbm_mode, mode, NULL);
|
|
||||||
|
|
||||||
/* Did we successfully open the file? */
|
|
||||||
if (temp_dbf == NULL)
|
|
||||||
diff -up gdbm-1.8.3/gdbm.3.dbmlock gdbm-1.8.3/gdbm.3
|
|
||||||
--- gdbm-1.8.3/gdbm.3.dbmlock 2011-01-03 15:59:15.684729255 +0100
|
|
||||||
+++ gdbm-1.8.3/gdbm.3 2011-01-03 16:17:49.957570637 +0100
|
|
||||||
@@ -543,7 +543,11 @@ you must link in the \fIgdbm_compat\fR l
|
|
||||||
.sp
|
|
||||||
gcc -o prog proc.c -lgdbm -lgdbm_compat
|
|
||||||
|
|
||||||
-.SH BUGS
|
|
||||||
+.SH "ENVIRONMENT VARIABLES"
|
|
||||||
+\fINDBM_LOCK\fR - When the NDBM interface is used, the database file
|
|
||||||
+is locked by default. Locking might degrade performance when used on a
|
|
||||||
+NFS share. This environment variable can be set to false to tell GDBM
|
|
||||||
+not to lock the database file.
|
|
||||||
|
|
||||||
.SH "SEE ALSO"
|
|
||||||
dbm, ndbm
|
|
@ -1,9 +1,7 @@
|
|||||||
05_handle-short-read.patch
|
diff -up gdbm-1.9.1/src/bucket.c.shortread gdbm-1.9.1/src/bucket.c
|
||||||
|
--- gdbm-1.9.1/src/bucket.c.shortread 2011-08-03 21:22:23.000000000 +0200
|
||||||
diff -urNad a/bucket.c b/bucket.c
|
+++ gdbm-1.9.1/src/bucket.c 2011-08-24 18:34:39.501857203 +0200
|
||||||
--- a/bucket.c 1999-05-19 01:16:05.000000000 +0100
|
@@ -21,7 +21,7 @@
|
||||||
+++ b/bucket.c 2006-04-24 03:18:01.000000000 +0100
|
|
||||||
@@ -31,7 +31,7 @@
|
|
||||||
#include "autoconf.h"
|
#include "autoconf.h"
|
||||||
|
|
||||||
#include "gdbmdefs.h"
|
#include "gdbmdefs.h"
|
||||||
@ -12,34 +10,34 @@ diff -urNad a/bucket.c b/bucket.c
|
|||||||
|
|
||||||
/* Initializing a new hash buckets sets all bucket entries to -1 hash value. */
|
/* Initializing a new hash buckets sets all bucket entries to -1 hash value. */
|
||||||
void
|
void
|
||||||
@@ -68,7 +68,8 @@
|
@@ -53,7 +53,8 @@ void
|
||||||
int dir_index;
|
_gdbm_get_bucket (GDBM_FILE dbf, int dir_index)
|
||||||
{
|
{
|
||||||
off_t bucket_adr; /* The address of the correct hash bucket. */
|
off_t bucket_adr; /* The address of the correct hash bucket. */
|
||||||
- int num_bytes; /* The number of bytes read. */
|
- int num_bytes; /* The number of bytes read. */
|
||||||
+ int num_bytes = 0; /* The total number of bytes read. */
|
+ int num_bytes = 0; /* The total number of bytes read. */
|
||||||
+ int bytes_read; /* Number of bytes read in this syscall */
|
+ int bytes_read; /* Number of bytes read in this syscall */
|
||||||
off_t file_pos; /* The return address for lseek. */
|
off_t file_pos; /* The return address for lseek. */
|
||||||
register int index; /* Loop index. */
|
int index; /* Loop index. */
|
||||||
|
|
||||||
@@ -111,7 +112,12 @@
|
@@ -96,7 +97,12 @@ _gdbm_get_bucket (GDBM_FILE dbf, int dir
|
||||||
if (file_pos != bucket_adr)
|
if (file_pos != bucket_adr)
|
||||||
_gdbm_fatal (dbf, "lseek error");
|
_gdbm_fatal (dbf, "lseek error");
|
||||||
|
|
||||||
- num_bytes = read (dbf->desc, dbf->bucket, dbf->header->bucket_size);
|
- num_bytes = __read (dbf, dbf->bucket, dbf->header->bucket_size);
|
||||||
+ do
|
+ do
|
||||||
+ {
|
+ {
|
||||||
+ bytes_read = read (dbf->desc, dbf->bucket+num_bytes, dbf->header->bucket_size-num_bytes);
|
+ bytes_read = __read (dbf, dbf->bucket+num_bytes, dbf->header->bucket_size-num_bytes);
|
||||||
+ if (bytes_read > 0) num_bytes += bytes_read;
|
+ if (bytes_read > 0) num_bytes += bytes_read;
|
||||||
+ }
|
+ }
|
||||||
+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < dbf->header->bucket_size);
|
+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < dbf->header->bucket_size);
|
||||||
if (num_bytes != dbf->header->bucket_size)
|
if (num_bytes != dbf->header->bucket_size)
|
||||||
_gdbm_fatal (dbf, "read error");
|
_gdbm_fatal (dbf, "read error");
|
||||||
}
|
}
|
||||||
diff -urNad a/falloc.c b/falloc.c
|
diff -up gdbm-1.9.1/src/falloc.c.shortread gdbm-1.9.1/src/falloc.c
|
||||||
--- a/falloc.c 2006-04-24 03:17:54.000000000 +0100
|
--- gdbm-1.9.1/src/falloc.c.shortread 2011-08-24 18:23:16.876903878 +0200
|
||||||
+++ b/falloc.c 2006-04-24 03:18:01.000000000 +0100
|
+++ gdbm-1.9.1/src/falloc.c 2011-08-24 18:36:15.877850610 +0200
|
||||||
@@ -31,7 +31,7 @@
|
@@ -21,7 +21,7 @@
|
||||||
#include "autoconf.h"
|
#include "autoconf.h"
|
||||||
|
|
||||||
#include "gdbmdefs.h"
|
#include "gdbmdefs.h"
|
||||||
@ -48,9 +46,9 @@ diff -urNad a/falloc.c b/falloc.c
|
|||||||
|
|
||||||
/* The forward definitions for this file. See the functions for
|
/* The forward definitions for this file. See the functions for
|
||||||
the definition of the function. */
|
the definition of the function. */
|
||||||
@@ -174,7 +174,8 @@
|
@@ -158,7 +158,8 @@ _gdbm_free (GDBM_FILE dbf, off_t file_ad
|
||||||
pop_avail_block (dbf)
|
static void
|
||||||
gdbm_file_info *dbf;
|
pop_avail_block (GDBM_FILE dbf)
|
||||||
{
|
{
|
||||||
- int num_bytes; /* For use with the read system call. */
|
- int num_bytes; /* For use with the read system call. */
|
||||||
+ int num_bytes = 0; /* For use with the read system call. */
|
+ int num_bytes = 0; /* For use with the read system call. */
|
||||||
@ -58,24 +56,24 @@ diff -urNad a/falloc.c b/falloc.c
|
|||||||
off_t file_pos; /* For use with the lseek system call. */
|
off_t file_pos; /* For use with the lseek system call. */
|
||||||
avail_elem new_el;
|
avail_elem new_el;
|
||||||
avail_block *new_blk;
|
avail_block *new_blk;
|
||||||
@@ -199,7 +200,12 @@
|
@@ -183,7 +184,12 @@ pop_avail_block (GDBM_FILE dbf)
|
||||||
/* Read the block. */
|
/* Read the block. */
|
||||||
file_pos = lseek (dbf->desc, new_el.av_adr, L_SET);
|
file_pos = __lseek (dbf, new_el.av_adr, L_SET);
|
||||||
if (file_pos != new_el.av_adr) _gdbm_fatal (dbf, "lseek error");
|
if (file_pos != new_el.av_adr) _gdbm_fatal (dbf, "lseek error");
|
||||||
- num_bytes = read (dbf->desc, new_blk, new_el.av_size);
|
- num_bytes = __read (dbf, new_blk, new_el.av_size);
|
||||||
+ do
|
+ do
|
||||||
+ {
|
+ {
|
||||||
+ bytes_read = read (dbf->desc, new_blk+num_bytes, new_el.av_size-num_bytes);
|
+ bytes_read = __read (dbf, new_blk+num_bytes, new_el.av_size-num_bytes);
|
||||||
+ if (bytes_read > 0) num_bytes += bytes_read;
|
+ if (bytes_read > 0) num_bytes += bytes_read;
|
||||||
+ }
|
+ }
|
||||||
+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < new_el.av_size);
|
+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < new_el.av_size);
|
||||||
if (num_bytes != new_el.av_size) _gdbm_fatal (dbf, "read error");
|
if (num_bytes != new_el.av_size) _gdbm_fatal (dbf, "read error");
|
||||||
|
|
||||||
/* Add the elements from the new block to the header. */
|
/* Add the elements from the new block to the header. */
|
||||||
diff -urNad a/findkey.c b/findkey.c
|
diff -up gdbm-1.9.1/src/findkey.c.shortread gdbm-1.9.1/src/findkey.c
|
||||||
--- a/findkey.c 1999-05-19 01:16:06.000000000 +0100
|
--- gdbm-1.9.1/src/findkey.c.shortread 2011-08-03 21:22:23.000000000 +0200
|
||||||
+++ b/findkey.c 2006-04-24 03:18:01.000000000 +0100
|
+++ gdbm-1.9.1/src/findkey.c 2011-08-24 18:37:00.591847528 +0200
|
||||||
@@ -31,6 +31,7 @@
|
@@ -21,6 +21,7 @@
|
||||||
#include "autoconf.h"
|
#include "autoconf.h"
|
||||||
|
|
||||||
#include "gdbmdefs.h"
|
#include "gdbmdefs.h"
|
||||||
@ -83,9 +81,9 @@ diff -urNad a/findkey.c b/findkey.c
|
|||||||
|
|
||||||
|
|
||||||
/* Read the data found in bucket entry ELEM_LOC in file DBF and
|
/* Read the data found in bucket entry ELEM_LOC in file DBF and
|
||||||
@@ -41,11 +42,12 @@
|
@@ -29,11 +30,12 @@
|
||||||
gdbm_file_info *dbf;
|
char *
|
||||||
int elem_loc;
|
_gdbm_read_entry (GDBM_FILE dbf, int elem_loc)
|
||||||
{
|
{
|
||||||
- int num_bytes; /* For seeking and reading. */
|
- int num_bytes; /* For seeking and reading. */
|
||||||
+ int num_bytes = 0; /* For seeking and reading. */
|
+ int num_bytes = 0; /* For seeking and reading. */
|
||||||
@ -97,14 +95,14 @@ diff -urNad a/findkey.c b/findkey.c
|
|||||||
|
|
||||||
/* Is it already in the cache? */
|
/* Is it already in the cache? */
|
||||||
if (dbf->cache_entry->ca_data.elem_loc == elem_loc)
|
if (dbf->cache_entry->ca_data.elem_loc == elem_loc)
|
||||||
@@ -74,7 +76,12 @@
|
@@ -61,7 +63,12 @@ _gdbm_read_entry (GDBM_FILE dbf, int ele
|
||||||
dbf->bucket->h_table[elem_loc].data_pointer, L_SET);
|
file_pos = __lseek (dbf, dbf->bucket->h_table[elem_loc].data_pointer, L_SET);
|
||||||
if (file_pos != dbf->bucket->h_table[elem_loc].data_pointer)
|
if (file_pos != dbf->bucket->h_table[elem_loc].data_pointer)
|
||||||
_gdbm_fatal (dbf, "lseek error");
|
_gdbm_fatal (dbf, "lseek error");
|
||||||
- num_bytes = read (dbf->desc, data_ca->dptr, key_size+data_size);
|
- num_bytes = __read (dbf, data_ca->dptr, key_size+data_size);
|
||||||
+ do
|
+ do
|
||||||
+ {
|
+ {
|
||||||
+ bytes_read = read (dbf->desc, data_ca->dptr+num_bytes, key_size+data_size-num_bytes);
|
+ bytes_read = __read (dbf, data_ca->dptr+num_bytes, key_size+data_size-num_bytes);
|
||||||
+ if (bytes_read > 0) num_bytes += bytes_read;
|
+ if (bytes_read > 0) num_bytes += bytes_read;
|
||||||
+ }
|
+ }
|
||||||
+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < key_size+data_size);
|
+ while ((bytes_read > 0 || (bytes_read == -1 && errno == EINTR)) && num_bytes < key_size+data_size);
|
@ -1,9 +1,7 @@
|
|||||||
02_zero-headers.patch by Jeff Johnson <jbj@redhat.com> and Colin Watson <cjwatson@debian.org>
|
diff -up gdbm-1.9.1/src/falloc.c.zeroheaders gdbm-1.9.1/src/falloc.c
|
||||||
|
--- gdbm-1.9.1/src/falloc.c.zeroheaders 2011-08-03 21:22:23.000000000 +0200
|
||||||
diff -urNad a/falloc.c b/falloc.c
|
+++ gdbm-1.9.1/src/falloc.c 2011-08-24 18:23:16.876903878 +0200
|
||||||
--- a/falloc.c 2001-02-28 06:52:33.000000000 +0000
|
@@ -255,7 +255,7 @@ push_avail_block (GDBM_FILE dbf)
|
||||||
+++ b/falloc.c 2003-09-08 23:58:43.000000000 +0100
|
|
||||||
@@ -272,7 +272,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
/* Split the header block. */
|
/* Split the header block. */
|
||||||
@ -12,10 +10,10 @@ diff -urNad a/falloc.c b/falloc.c
|
|||||||
if (temp == NULL) _gdbm_fatal (dbf, "malloc error");
|
if (temp == NULL) _gdbm_fatal (dbf, "malloc error");
|
||||||
/* Set the size to be correct AFTER the pop_avail_block. */
|
/* Set the size to be correct AFTER the pop_avail_block. */
|
||||||
temp->size = dbf->header->avail.size;
|
temp->size = dbf->header->avail.size;
|
||||||
diff -urNad a/gdbmopen.c b/gdbmopen.c
|
diff -up gdbm-1.9.1/src/gdbmopen.c.zeroheaders gdbm-1.9.1/src/gdbmopen.c
|
||||||
--- a/gdbmopen.c 2003-09-08 23:58:01.000000000 +0100
|
--- gdbm-1.9.1/src/gdbmopen.c.zeroheaders 2011-08-12 22:22:52.000000000 +0200
|
||||||
+++ b/gdbmopen.c 2003-09-08 23:58:43.000000000 +0100
|
+++ gdbm-1.9.1/src/gdbmopen.c 2011-08-24 18:23:16.877903878 +0200
|
||||||
@@ -212,7 +212,7 @@
|
@@ -204,7 +204,7 @@ gdbm_open (const char *file, int block_s
|
||||||
file_block_size = block_size;
|
file_block_size = block_size;
|
||||||
|
|
||||||
/* Get space for the file header. */
|
/* Get space for the file header. */
|
||||||
@ -24,7 +22,7 @@ diff -urNad a/gdbmopen.c b/gdbmopen.c
|
|||||||
if (dbf->header == NULL)
|
if (dbf->header == NULL)
|
||||||
{
|
{
|
||||||
gdbm_close (dbf);
|
gdbm_close (dbf);
|
||||||
@@ -256,7 +256,7 @@
|
@@ -248,7 +248,7 @@ gdbm_open (const char *file, int block_s
|
||||||
(dbf->header->block_size - sizeof (hash_bucket))
|
(dbf->header->block_size - sizeof (hash_bucket))
|
||||||
/ sizeof (bucket_element) + 1;
|
/ sizeof (bucket_element) + 1;
|
||||||
dbf->header->bucket_size = dbf->header->block_size;
|
dbf->header->bucket_size = dbf->header->block_size;
|
||||||
@ -33,7 +31,7 @@ diff -urNad a/gdbmopen.c b/gdbmopen.c
|
|||||||
if (dbf->bucket == NULL)
|
if (dbf->bucket == NULL)
|
||||||
{
|
{
|
||||||
gdbm_close (dbf);
|
gdbm_close (dbf);
|
||||||
@@ -420,7 +420,7 @@
|
@@ -440,7 +440,7 @@ _gdbm_init_cache(GDBM_FILE dbf, size_t s
|
||||||
for(index = 0; index < size; index++)
|
for(index = 0; index < size; index++)
|
||||||
{
|
{
|
||||||
(dbf->bucket_cache[index]).ca_bucket
|
(dbf->bucket_cache[index]).ca_bucket
|
Loading…
Reference in New Issue
Block a user