summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2010-10-15 08:38:35 -0700
committerRainer Gerhards <rgerhards@adiscon.com>2010-10-15 08:38:35 -0700
commit93662146b46c03b2a5db83ae074aa77f207dd98a (patch)
tree32db6d8cca9c8c06b110c41ce1e33ccf1193e565 /runtime
parentf60fd65378d4bfc110e8ae1b55197d73c3293f0c (diff)
parent87472f58b4cd47762a7b134f0d8521cabc739cae (diff)
downloadrsyslog-93662146b46c03b2a5db83ae074aa77f207dd98a.tar.gz
rsyslog-93662146b46c03b2a5db83ae074aa77f207dd98a.tar.xz
rsyslog-93662146b46c03b2a5db83ae074aa77f207dd98a.zip
Merge branch 'v5-devel'
Conflicts: ChangeLog
Diffstat (limited to 'runtime')
-rw-r--r--runtime/hashtable.c16
-rw-r--r--runtime/stream.c16
2 files changed, 21 insertions, 11 deletions
diff --git a/runtime/hashtable.c b/runtime/hashtable.c
index 41fc60fe..a01fa7d9 100644
--- a/runtime/hashtable.c
+++ b/runtime/hashtable.c
@@ -23,7 +23,17 @@ static const unsigned int primes[] = {
805306457, 1610612741
};
const unsigned int prime_table_length = sizeof(primes)/sizeof(primes[0]);
-const float max_load_factor = 0.65;
+
+#define MAX_LOAD_FACTOR 65 /* to get real factor, divide by 100! */
+
+/* compute max load. We use a constant factor of 0.65, but do
+ * everything times 100, so that we do not need floats.
+ */
+static inline unsigned
+getLoadLimit(unsigned size)
+{
+ return (unsigned int) ((unsigned long long) size * MAX_LOAD_FACTOR) / 100;
+}
/*****************************************************************************/
struct hashtable *
@@ -50,7 +60,7 @@ create_hashtable(unsigned int minsize,
h->hashfn = hashf;
h->eqfn = eqf;
h->dest = dest;
- h->loadlimit = (unsigned int) ceil(size * max_load_factor);
+ h->loadlimit = getLoadLimit(size);
return h;
}
@@ -123,7 +133,7 @@ hashtable_expand(struct hashtable *h)
}
}
h->tablelength = newsize;
- h->loadlimit = (unsigned int) ceil(newsize * max_load_factor);
+ h->loadlimit = getLoadLimit(newsize);
return -1;
}
diff --git a/runtime/stream.c b/runtime/stream.c
index b4295762..6b3040d8 100644
--- a/runtime/stream.c
+++ b/runtime/stream.c
@@ -214,7 +214,7 @@ doPhysOpen(strm_t *pThis)
iFlags |= O_NONBLOCK;
}
- pThis->fd = open((char*)pThis->pszCurrFName, iFlags, pThis->tOpenMode);
+ pThis->fd = open((char*)pThis->pszCurrFName, iFlags | O_LARGEFILE, pThis->tOpenMode);
DBGPRINTF("file '%s' opened as #%d with mode %d\n", pThis->pszCurrFName,
pThis->fd, (int) pThis->tOpenMode);
if(pThis->fd == -1) {
@@ -1184,7 +1184,7 @@ finalize_it:
* is invalidated.
* rgerhards, 2008-01-12
*/
-static rsRetVal strmSeek(strm_t *pThis, off_t offs)
+static rsRetVal strmSeek(strm_t *pThis, off64_t offs)
{
DEFiRet;
@@ -1194,9 +1194,9 @@ static rsRetVal strmSeek(strm_t *pThis, off_t offs)
strmOpenFile(pThis);
else
strmFlushInternal(pThis);
- int i;
- DBGOPRINT((obj_t*) pThis, "file %d seek, pos %ld\n", pThis->fd, (long) offs);
- i = lseek(pThis->fd, offs, SEEK_SET); // TODO: check error!
+ long long i;
+ DBGOPRINT((obj_t*) pThis, "file %d seek, pos %llu\n", pThis->fd, (long long unsigned) offs);
+ i = lseek64(pThis->fd, offs, SEEK_SET); // TODO: check error!
pThis->iCurrOffs = offs; /* we are now at *this* offset */
pThis->iBufPtr = 0; /* buffer invalidated */
@@ -1473,7 +1473,7 @@ static rsRetVal strmSerialize(strm_t *pThis, strm_t *pStrm)
{
DEFiRet;
int i;
- long l;
+ int64 l;
ISOBJ_TYPE_assert(pThis, strm);
ISOBJ_TYPE_assert(pStrm, strm);
@@ -1495,8 +1495,8 @@ static rsRetVal strmSerialize(strm_t *pThis, strm_t *pStrm)
i = pThis->tOpenMode;
objSerializeSCALAR_VAR(pStrm, tOpenMode, INT, i);
- l = (long) pThis->iCurrOffs;
- objSerializeSCALAR_VAR(pStrm, iCurrOffs, LONG, l);
+ l = pThis->iCurrOffs;
+ objSerializeSCALAR_VAR(pStrm, iCurrOffs, INT64, l);
CHKiRet(obj.EndSerialize(pStrm));