/* calculate total size in bytes of directory block */
size = 0;
count = 0;
- num = (1 << (ef->header->directory->size - 1));
+ num = (1 << ef->header->directory->size);
for (i = 0; i < num; i++)
{
for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
{
for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
{
- unsigned char *buf;
- int buf_size;
- int name_size;
-
if (efn->compression >= 0)
{
+ unsigned char *buf;
+ int buf_size;
+ int name_size;
+
name_size = strlen(efn->name);
buf_size = 20 + name_size;
buf = malloc(buf_size);
if (!ef->header->directory) return NULL;
/* get hash bucket this should be in */
hash = eet_hash_gen(name, ef->header->directory->size);
-// printf("read %s\n", name);
/* hunt hash bucket */
for (efn = ef->header->directory->nodes[hash]; efn; efn = efn->next)
{
/* dup data */
data_size = size;
/* have bigger buffer for compress */
- if (compress == 1)
- data_size = 12 + ((size * 101) / 100);
+ if (compress == 1) data_size = 12 + ((size * 101) / 100);
data2 = malloc(data_size);
if (!data2)
{
free(data2);
return 0;
}
- /* resized node list set up */
efn->next = ef->header->directory->nodes[hash];
ef->header->directory->nodes[hash] = efn;
- /* new node at end */
efn->name = name2;
efn->offset = 0;
efn->compression = compress;
/* flags that writes are pending */
ef->writes_pending = 1;
- /* update access time */
return data_size;
}