* functions to add data to our incore memory space
*/
+#define INCORE_ADD_CHUNK 8192
static void
incore_add_id(Repodata *data, Id x)
/* make sure we have at least 5 bytes free */
if (data->incoredatafree < 5)
{
- data->incoredata = sat_realloc(data->incoredata, data->incoredatalen + 1024);
- data->incoredatafree = 1024;
+ data->incoredata = sat_realloc(data->incoredata, data->incoredatalen + INCORE_ADD_CHUNK);
+ data->incoredatafree = INCORE_ADD_CHUNK;
}
dp = data->incoredata + data->incoredatalen;
if (x < 0)
{
if (data->incoredatafree < len)
{
- data->incoredata = sat_realloc(data->incoredata, data->incoredatalen + 1024 + len);
- data->incoredatafree = 1024 + len;
+ data->incoredata = sat_realloc(data->incoredata, data->incoredatalen + INCORE_ADD_CHUNK + len);
+ data->incoredatafree = INCORE_ADD_CHUNK + len;
}
memcpy(data->incoredata + data->incoredatalen, buf, len);
data->incoredatafree -= len;
/* make sure we have at least 4 bytes free */
if (data->incoredatafree < 4)
{
- data->incoredata = sat_realloc(data->incoredata, data->incoredatalen + 1024);
- data->incoredatafree = 1024;
+ data->incoredata = sat_realloc(data->incoredata, data->incoredatalen + INCORE_ADD_CHUNK);
+ data->incoredatafree = INCORE_ADD_CHUNK;
}
dp = data->incoredata + data->incoredatalen;
*dp++ = x >> 24;
int left;
Id stack[10];
int keydepth;
+ int needchunk; /* need a new chunk of data */
struct _Stringpool *spool;
nentries = 0;
keydepth = 0;
s = 0;
+ needchunk = 1;
for(;;)
{
key = *keyp++;
#endif
if (!key)
{
+ if (keydepth <= 2)
+ needchunk = 1;
if (nentries)
{
if (s && keydepth == 2)
continue;
}
- if (keydepth <= 2)
+ if (keydepth == 0)
+ data.mainschemaoffsets[keyp - 1 - (schemadata + schemata[data.mainschema])] = data.incoredatalen;
+ if (needchunk)
{
- if (keydepth == 0)
- data.mainschemaoffsets[keyp - 1 - (schemadata + schemata[data.mainschema])] = data.incoredatalen;
/* read data chunk to dp */
if (data.error)
break;
allsize -= l;
left += l;
dp = buf;
+ needchunk = 0;
}
#if 0