svn update: 51457 (latest:51480)
[framework/uifw/eet.git] / src / lib / eet_lib.c
index 0d4b619..c1ca7fa 100644 (file)
@@ -1,10 +1,6 @@
-/*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
-
 #ifdef HAVE_CONFIG_H
 # include <config.h>
-#endif
+#endif /* ifdef HAVE_CONFIG_H */
 
 #ifdef HAVE_ALLOCA_H
 # include <alloca.h>
 #elif defined _MSC_VER
 # include <malloc.h>
 # define alloca _alloca
-#else
+#else /* ifdef HAVE_ALLOCA_H */
 # include <stddef.h>
 # ifdef  __cplusplus
 extern "C"
-# endif
-void *alloca (size_t);
-#endif
+# endif /* ifdef  __cplusplus */
+void *    alloca (size_t);
+#endif /* ifdef HAVE_ALLOCA_H */
 
 #ifdef _WIN32
 # include <winsock2.h>
-#endif
+#endif /* ifdef _WIN32 */
 
 #include <stdio.h>
 #include <errno.h>
@@ -40,29 +36,32 @@ void *alloca (size_t);
 
 #ifndef _MSC_VER
 # include <unistd.h>
-#endif
+#endif /* ifndef _MSC_VER */
 
 #ifdef HAVE_NETINET_IN_H
 # include <netinet/in.h>
-#endif
+#endif /* ifdef HAVE_NETINET_IN_H */
 
 #ifdef HAVE_EVIL
 # include <Evil.h>
-#endif
+#endif /* ifdef HAVE_EVIL */
 
 #ifdef HAVE_GNUTLS
 # include <gnutls/gnutls.h>
 # include <gcrypt.h>
-#endif
+#endif /* ifdef HAVE_GNUTLS */
 
 #ifdef HAVE_OPENSSL
 # include <openssl/err.h>
 # include <openssl/evp.h>
-#endif
+#endif /* ifdef HAVE_OPENSSL */
 
-#ifdef EFL_HAVE_PTHREAD
+#ifdef EFL_HAVE_POSIX_THREADS
 # include <pthread.h>
-#endif
+# ifdef HAVE_GNUTLS
+GCRY_THREAD_OPTION_PTHREAD_IMPL;
+# endif /* ifdef HAVE_GNUTLS */
+#endif /* ifdef EFL_HAVE_POSIX_THREADS */
 
 #include <Eina.h>
 
@@ -74,47 +73,51 @@ EAPI Eet_Version *eet_version = &_version;
 
 #ifdef HAVE_REALPATH
 # undef HAVE_REALPATH
-#endif
+#endif /* ifdef HAVE_REALPATH */
 
-#define EET_MAGIC_FILE                  0x1ee7ff00
-#define EET_MAGIC_FILE_HEADER           0x1ee7ff01
+#define EET_MAGIC_FILE        0x1ee7ff00
+#define EET_MAGIC_FILE_HEADER 0x1ee7ff01
 
-#define EET_MAGIC_FILE2                 0x1ee70f42
+#define EET_MAGIC_FILE2       0x1ee70f42
 
-typedef struct _Eet_File_Header         Eet_File_Header;
-typedef struct _Eet_File_Node           Eet_File_Node;
-typedef struct _Eet_File_Directory      Eet_File_Directory;
+typedef struct _Eet_File_Header      Eet_File_Header;
+typedef struct _Eet_File_Node        Eet_File_Node;
+typedef struct _Eet_File_Directory   Eet_File_Directory;
 
 struct _Eet_File
 {
-   char                 *path;
-   FILE                        *readfp;
-   Eet_File_Header      *header;
-   Eet_Dictionary       *ed;
-   Eet_Key             *key;
-   const unsigned char  *data;
-   const void           *x509_der;
-   const void           *signature;
-   void                 *sha1;
-
-   Eet_File_Mode         mode;
-
-   int                   magic;
-   int                   references;
-
-   int                   data_size;
-   int                   x509_length;
-   unsigned int          signature_length;
-   int                   sha1_length;
-
-   time_t                mtime;
-
-#ifdef EFL_HAVE_PTHREAD
-   pthread_mutex_t      file_lock;
-#endif
-
-   unsigned char         writes_pending : 1;
-   unsigned char         delete_me_now : 1;
+   char                *path;
+   FILE                *readfp;
+   Eet_File_Header     *header;
+   Eet_Dictionary      *ed;
+   Eet_Key             *key;
+   const unsigned char *data;
+   const void          *x509_der;
+   const void          *signature;
+   void                *sha1;
+
+   Eet_File_Mode        mode;
+
+   int                  magic;
+   int                  references;
+
+   int                  data_size;
+   int                  x509_length;
+   unsigned int         signature_length;
+   int                  sha1_length;
+
+   time_t               mtime;
+
+#ifdef EFL_HAVE_THREADS
+# ifdef EFL_HAVE_POSIX_THREADS
+   pthread_mutex_t      file_lock;
+# else /* ifdef EFL_HAVE_POSIX_THREADS */
+   HANDLE               file_lock;
+# endif /* ifdef EFL_HAVE_POSIX_THREADS */
+#endif /* ifdef EFL_HAVE_THREADS */
+
+   unsigned char        writes_pending : 1;
+   unsigned char        delete_me_now : 1;
 };
 
 struct _Eet_File_Header
@@ -131,21 +134,22 @@ struct _Eet_File_Directory
 
 struct _Eet_File_Node
 {
-   char                 *name;
-   void                 *data;
-   Eet_File_Node        *next; /* FIXME: make buckets linked lists */
-
-   int                   offset;
-   int                   dictionary_offset;
-   int                   name_offset;
-
-   int                   name_size;
-   int                   size;
-   int                   data_size;
-
-   unsigned char         free_name : 1;
-   unsigned char         compression : 1;
-   unsigned char         ciphered : 1;
+   char          *name;
+   void          *data;
+   Eet_File_Node *next;  /* FIXME: make buckets linked lists */
+
+   int            offset;
+   int            dictionary_offset;
+   int            name_offset;
+
+   int            name_size;
+   int            size;
+   int            data_size;
+
+   unsigned char  free_name : 1;
+   unsigned char  compression : 1;
+   unsigned char  ciphered : 1;
+   unsigned char  alias : 1;
 };
 
 #if 0
@@ -157,15 +161,15 @@ int num_directory_entries; /* number of directory entries to follow */
 int bytes_directory_entries; /* bytes of directory entries to follow */
 struct
 {
-   int offset; /* bytes offset into file for data chunk */
-   int flags; /* flags - for now 0 = uncompressed and clear, 1 = compressed and clear, 2 = uncompressed and ciphered, 3 = compressed and ciphered */
-   int size; /* size of the data chunk */
-   int data_size; /* size of the (uncompressed) data chunk */
-   int name_size; /* length in bytes of the name field */
+   int  offset; /* bytes offset into file for data chunk */
+   int  flags; /* flags - for now 0 = uncompressed and clear, 1 = compressed and clear, 2 = uncompressed and ciphered, 3 = compressed and ciphered */
+   int  size; /* size of the data chunk */
+   int  data_size; /* size of the (uncompressed) data chunk */
+   int  name_size; /* length in bytes of the name field */
    char name[name_size]; /* name string (variable length) and \0 terminated */
 } directory[num_directory_entries];
 /* and now startes the data stream... */
-#endif
+#endif /* if 0 */
 
 #if 0
 /* Version 3 */
@@ -176,20 +180,24 @@ int num_directory_entries; /* number of directory entries to follow */
 int num_dictionary_entries; /* number of dictionary entries to follow */
 struct
 {
-  int data_offset; /* bytes offset into file for data chunk */
-  int size; /* size of the data chunk */
-  int data_size; /* size of the (uncompressed) data chunk */
-  int name_offset; /* bytes offset into file for name string */
-  int name_size; /* length in bytes of the name field */
-  int flags; /* flags - for now 0 = uncompressed, 1 = compressed */
+   int data_offset; /* bytes offset into file for data chunk */
+   int size; /* size of the data chunk */
+   int data_size; /* size of the (uncompressed) data chunk */
+   int name_offset; /* bytes offset into file for name string */
+   int name_size; /* length in bytes of the name field */
+   int flags; /* bit flags - for now:
+                 bit 0 => compresion on/off
+                 bit 1 => ciphered on/off
+                 bit 2 => alias
+               */
 } directory[num_directory_entries];
 struct
 {
-  int hash;
-  int offset;
-  int size;
-  int prev;
-  int next;
+   int hash;
+   int offset;
+   int size;
+   int prev;
+   int next;
 } dictionary[num_dictionary_entries];
 /* now start the string stream. */
 /* and right after them the data stream. */
@@ -198,61 +206,92 @@ int signature_length; /* Signature length. */
 int x509_length; /* Public certificate that signed the file. */
 char signature[signature_length]; /* The signature. */
 char x509[x509_length]; /* The public certificate. */
-#endif
+#endif /* if 0 */
 
-#define EET_FILE2_HEADER_COUNT                  3
-#define EET_FILE2_DIRECTORY_ENTRY_COUNT         6
-#define EET_FILE2_DICTIONARY_ENTRY_COUNT        5
+#define EET_FILE2_HEADER_COUNT           3
+#define EET_FILE2_DIRECTORY_ENTRY_COUNT  6
+#define EET_FILE2_DICTIONARY_ENTRY_COUNT 5
 
-#define EET_FILE2_HEADER_SIZE                   (sizeof(int) * EET_FILE2_HEADER_COUNT)
-#define EET_FILE2_DIRECTORY_ENTRY_SIZE          (sizeof(int) * EET_FILE2_DIRECTORY_ENTRY_COUNT)
-#define EET_FILE2_DICTIONARY_ENTRY_SIZE         (sizeof(int) * EET_FILE2_DICTIONARY_ENTRY_COUNT)
+#define EET_FILE2_HEADER_SIZE            (sizeof(int) *\
+                                          EET_FILE2_HEADER_COUNT)
+#define EET_FILE2_DIRECTORY_ENTRY_SIZE   (sizeof(int) *\
+                                          EET_FILE2_DIRECTORY_ENTRY_COUNT)
+#define EET_FILE2_DICTIONARY_ENTRY_SIZE  (sizeof(int) *\
+                                          EET_FILE2_DICTIONARY_ENTRY_COUNT)
 
 /* prototypes of internal calls */
-static Eet_File                *eet_cache_find(const char *path, Eet_File **cache, int cache_num);
-static void            eet_cache_add(Eet_File *ef, Eet_File ***cache, int *cache_num, int *cache_alloc);
-static void            eet_cache_del(Eet_File *ef, Eet_File ***cache, int *cache_num, int *cache_alloc);
-static int             eet_string_match(const char *s1, const char *s2);
+static Eet_File *         eet_cache_find(const char *path,
+                                         Eet_File  **cache,
+                                         int         cache_num);
+static void               eet_cache_add(Eet_File   *ef,
+                                        Eet_File ***cache,
+                                        int        *cache_num,
+                                        int        *cache_alloc);
+static void               eet_cache_del(Eet_File   *ef,
+                                        Eet_File ***cache,
+                                        int        *cache_num,
+                                        int        *cache_alloc);
+static int                eet_string_match(const char *s1, const char *s2);
 #if 0 /* Unused */
-static Eet_Error       eet_flush(Eet_File *ef);
-#endif
-static Eet_Error       eet_flush2(Eet_File *ef);
-static Eet_File_Node   *find_node_by_name(Eet_File *ef, const char *name);
-static int             read_data_from_disk(Eet_File *ef, Eet_File_Node *efn, void *buf, int len);
+static Eet_Error          eet_flush(Eet_File *ef);
+#endif /* if 0 */
+static Eet_Error          eet_flush2(Eet_File *ef);
+static Eet_File_Node *    find_node_by_name(Eet_File *ef, const char *name);
+static int                read_data_from_disk(Eet_File      *ef,
+                                              Eet_File_Node *efn,
+                                              void          *buf,
+                                              int            len);
+
+static Eet_Error          eet_internal_close(Eet_File *ef, Eina_Bool locked);
 
-static Eet_Error        eet_internal_close(Eet_File *ef, Eina_Bool locked);
+#ifdef EFL_HAVE_THREADS
+
+# ifdef EFL_HAVE_POSIX_THREADS
 
-#ifdef EFL_HAVE_PTHREAD
 static pthread_mutex_t eet_cache_lock = PTHREAD_MUTEX_INITIALIZER;
 
-#define LOCK_CACHE pthread_mutex_lock(&eet_cache_lock);
-#define UNLOCK_CACHE pthread_mutex_unlock(&eet_cache_lock);
+#  define LOCK_CACHE   pthread_mutex_lock(&eet_cache_lock)
+#  define UNLOCK_CACHE pthread_mutex_unlock(&eet_cache_lock)
+
+#  define INIT_FILE(File)    pthread_mutex_init(&File->file_lock, NULL)
+#  define LOCK_FILE(File)    pthread_mutex_lock(&File->file_lock)
+#  define UNLOCK_FILE(File)  pthread_mutex_unlock(&File->file_lock)
+#  define DESTROY_FILE(File) pthread_mutex_destroy(&File->file_lock)
 
-#define INIT_FILE(File) pthread_mutex_init(&File->file_lock, NULL);
-#define LOCK_FILE(File) pthread_mutex_lock(&File->file_lock);
-#define UNLOCK_FILE(File) pthread_mutex_unlock(&File->file_lock);
-#define DESTROY_FILE(File) pthread_mutex_destroy(&File->file_lock);
+# else /* EFL_HAVE_WIN32_THREADS */
 
-#else
+static HANDLE eet_cache_lock = NULL;
 
-#define LOCK_CACHE ;
-#define UNLOCK_CACHE ;
+#  define LOCK_CACHE   WaitForSingleObject(eet_cache_lock, INFINITE)
+#  define UNLOCK_CACHE ReleaseMutex(eet_cache_lock)
 
-#define INIT_FILE(File) ;
-#define LOCK_FILE(File) ;
-#define UNLOCK_FILE(File) ;
-#define DESTROY_FILE(File) ;
+#  define INIT_FILE(File)    File->file_lock = CreateMutex(NULL, FALSE, NULL)
+#  define LOCK_FILE(File)    WaitForSingleObject(File->file_lock, INFINITE)
+#  define UNLOCK_FILE(File)  ReleaseMutex(File->file_lock)
+#  define DESTROY_FILE(File) CloseHandle(File->file_lock)
 
-#endif
+# endif /* EFL_HAVE_WIN32_THREADS */
+
+#else /* ifdef EFL_HAVE_THREADS */
+
+# define LOCK_CACHE   do {} while (0)
+# define UNLOCK_CACHE do {} while (0)
+
+# define INIT_FILE(File)    do {} while (0)
+# define LOCK_FILE(File)    do {} while (0)
+# define UNLOCK_FILE(File)  do {} while (0)
+# define DESTROY_FILE(File) do {} while (0)
+
+#endif /* EFL_HAVE_THREADS */
 
 /* cache. i don't expect this to ever be large, so arrays will do */
-static int        eet_writers_num     = 0;
-static int        eet_writers_alloc   = 0;
-static Eet_File **eet_writers         = NULL;
-static int        eet_readers_num     = 0;
-static int        eet_readers_alloc   = 0;
-static Eet_File **eet_readers         = NULL;
-static int        eet_init_count       = 0;
+static int eet_writers_num = 0;
+static int eet_writers_alloc = 0;
+static Eet_File **eet_writers = NULL;
+static int eet_readers_num = 0;
+static int eet_readers_alloc = 0;
+static Eet_File **eet_readers = NULL;
+static int eet_init_count = 0;
 
 /* log domain variable */
 int _eet_log_dom_global = -1;
@@ -261,83 +300,92 @@ int _eet_log_dom_global = -1;
 static inline int
 eet_check_pointer(const Eet_File *ef)
 {
-  if ((!ef) || (ef->magic != EET_MAGIC_FILE))
-    return 1;
-  return 0;
-}
+   if ((!ef) || (ef->magic != EET_MAGIC_FILE))
+      return 1;
+
+   return 0;
+} /* eet_check_pointer */
 
 static inline int
 eet_check_header(const Eet_File *ef)
 {
    if (!ef->header)
-     return 1;
+      return 1;
+
    if (!ef->header->directory)
-     return 1;
+      return 1;
+
    return 0;
-}
+} /* eet_check_header */
 
 static inline int
-eet_test_close(int test, Eet_File *ef)
+eet_test_close(int       test,
+               Eet_File *ef)
 {
    if (test)
      {
-       ef->delete_me_now = 1;
+        ef->delete_me_now = 1;
         eet_internal_close(ef, EINA_TRUE);
      }
+
    return test;
-}
+} /* eet_test_close */
 
 /* find an eet file in the currently in use cache */
 static Eet_File *
-eet_cache_find(const char *path, Eet_File **cache, int cache_num)
+eet_cache_find(const char *path,
+               Eet_File  **cache,
+               int         cache_num)
 {
    int i;
 
    /* walk list */
    for (i = 0; i < cache_num; i++)
      {
-       /* if matches real path - return it */
-       if (eet_string_match(cache[i]->path, path))
-         {
-            if (!cache[i]->delete_me_now)
-              return cache[i];
-         }
+        /* if matches real path - return it */
+        if (eet_string_match(cache[i]->path, path))
+           if (!cache[i]->delete_me_now)
+              return cache[i];
+
      }
 
    /* not found */
    return NULL;
-}
+} /* eet_cache_find */
 
 /* add to end of cache */
 /* this should only be called when the cache lock is already held */
 static void
-eet_cache_add(Eet_File *ef, Eet_File ***cache, int *cache_num, int *cache_alloc)
+eet_cache_add(Eet_File   *ef,
+              Eet_File ***cache,
+              int        *cache_num,
+              int        *cache_alloc)
 {
-   Eet_File    **new_cache;
-   int         new_cache_num;
-   int         new_cache_alloc;
+   Eet_File **new_cache;
+   int new_cache_num;
+   int new_cache_alloc;
 
    new_cache_num = *cache_num;
    if (new_cache_num >= 64) /* avoid fd overruns - limit to 128 (most recent) in the cache */
      {
-       Eet_File        *del_ef = NULL;
-       int             i;
-
-       new_cache = *cache;
-       for (i = 0; i < new_cache_num; i++)
-         {
-            if (new_cache[i]->references == 0)
-              {
-                 del_ef = new_cache[i];
-                 break;
-              }
-         }
-
-       if (del_ef)
-         {
-            del_ef->delete_me_now = 1;
+        Eet_File *del_ef = NULL;
+        int i;
+
+        new_cache = *cache;
+        for (i = 0; i < new_cache_num; i++)
+          {
+             if (new_cache[i]->references == 0)
+               {
+                  del_ef = new_cache[i];
+                  break;
+               }
+          }
+
+        if (del_ef)
+          {
+             del_ef->delete_me_now = 1;
              eet_internal_close(del_ef, EINA_TRUE);
-         }
+          }
      }
 
    new_cache = *cache;
@@ -346,24 +394,28 @@ eet_cache_add(Eet_File *ef, Eet_File ***cache, int *cache_num, int *cache_alloc)
    new_cache_num++;
    if (new_cache_num > new_cache_alloc)
      {
-       new_cache_alloc += 16;
-       new_cache = realloc(new_cache, new_cache_alloc * sizeof(Eet_File *));
-       if (!new_cache)
-         {
-            CRIT("BAD ERROR! Eet realloc of cache list failed. Abort");
-            abort();
-         }
+        new_cache_alloc += 16;
+        new_cache = realloc(new_cache, new_cache_alloc * sizeof(Eet_File *));
+        if (!new_cache)
+          {
+             CRIT("BAD ERROR! Eet realloc of cache list failed. Abort");
+             abort();
+          }
      }
+
    new_cache[new_cache_num - 1] = ef;
    *cache = new_cache;
    *cache_num = new_cache_num;
    *cache_alloc = new_cache_alloc;
-}
+} /* eet_cache_add */
 
 /* delete from cache */
 /* this should only be called when the cache lock is already held */
 static void
-eet_cache_del(Eet_File *ef, Eet_File ***cache, int *cache_num, int *cache_alloc)
+eet_cache_del(Eet_File   *ef,
+              Eet_File ***cache,
+              int        *cache_num,
+              int        *cache_alloc)
 {
    Eet_File **new_cache;
    int new_cache_num, new_cache_alloc;
@@ -373,53 +425,59 @@ eet_cache_del(Eet_File *ef, Eet_File ***cache, int *cache_num, int *cache_alloc)
    new_cache_num = *cache_num;
    new_cache_alloc = *cache_alloc;
    if (new_cache_num <= 0)
-     return;
+      return;
 
    for (i = 0; i < new_cache_num; i++)
      {
-       if (new_cache[i] == ef)
-         break;
+        if (new_cache[i] == ef)
+           break;
      }
 
    if (i >= new_cache_num)
-     return;
+      return;
 
    new_cache_num--;
    for (j = i; j < new_cache_num; j++)
-     new_cache[j] = new_cache[j + 1];
+      new_cache[j] = new_cache[j + 1];
 
    if (new_cache_num <= (new_cache_alloc - 16))
      {
-       new_cache_alloc -= 16;
-       if (new_cache_num > 0)
-         {
-            new_cache = realloc(new_cache, new_cache_alloc * sizeof(Eet_File *));
-            if (!new_cache)
-              {
-                 CRIT("BAD ERROR! Eet realloc of cache list failed. Abort");
-                 abort();
-              }
-         }
-       else
-         {
-            free(new_cache);
-            new_cache = NULL;
-         }
+        new_cache_alloc -= 16;
+        if (new_cache_num > 0)
+          {
+             new_cache = realloc(new_cache, new_cache_alloc * sizeof(Eet_File *));
+             if (!new_cache)
+               {
+                  CRIT("BAD ERROR! Eet realloc of cache list failed. Abort");
+                  abort();
+               }
+          }
+        else
+          {
+             free(new_cache);
+             new_cache = NULL;
+          }
      }
+
    *cache = new_cache;
    *cache_num = new_cache_num;
    *cache_alloc = new_cache_alloc;
-}
+} /* eet_cache_del */
 
 /* internal string match. null friendly, catches same ptr */
 static int
-eet_string_match(const char *s1, const char *s2)
+eet_string_match(const char *s1,
+                 const char *s2)
 {
    /* both null- no match */
-   if ((!s1) || (!s2)) return 0;
-   if (s1 == s2) return 1;
+   if ((!s1) || (!s2))
+      return 0;
+
+   if (s1 == s2)
+      return 1;
+
    return (!strcmp(s1, s2));
-}
+} /* eet_string_match */
 
 /* flush out writes to a v2 eet file */
 static Eet_Error
@@ -441,26 +499,30 @@ eet_flush2(Eet_File *ef)
    int j;
 
    if (eet_check_pointer(ef))
-     return EET_ERROR_BAD_OBJECT;
+      return EET_ERROR_BAD_OBJECT;
+
    if (eet_check_header(ef))
-     return EET_ERROR_EMPTY;
+      return EET_ERROR_EMPTY;
+
    if (!ef->writes_pending)
-     return EET_ERROR_NONE;
+      return EET_ERROR_NONE;
 
    if ((ef->mode == EET_FILE_MODE_READ_WRITE)
        || (ef->mode == EET_FILE_MODE_WRITE))
      {
-       int fd;
-
-       /* opening for write - delete old copy of file right away */
-       unlink(ef->path);
-       fd = open(ef->path, O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR);
-       fp = fdopen(fd, "wb");
-       if (!fp) return EET_ERROR_NOT_WRITABLE;
-       fcntl(fileno(fp), F_SETFD, FD_CLOEXEC);
+        int fd;
+
+        /* opening for write - delete old copy of file right away */
+        unlink(ef->path);
+        fd = open(ef->path, O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR);
+        fp = fdopen(fd, "wb");
+        if (!fp)
+           return EET_ERROR_NOT_WRITABLE;
+
+        fcntl(fileno(fp), F_SETFD, FD_CLOEXEC);
      }
    else
-     return EET_ERROR_NOT_WRITABLE;
+      return EET_ERROR_NOT_WRITABLE;
 
    /* calculate string base offset and data base offset */
    num = (1 << ef->header->directory->size);
@@ -477,16 +539,19 @@ eet_flush2(Eet_File *ef)
         num_dictionary_entries = ef->ed->count;
 
         for (i = 0; i < num_dictionary_entries; ++i)
-          bytes_strings += ef->ed->all[i].len;
+           bytes_strings += ef->ed->all[i].len;
      }
 
    /* calculate section bytes size */
-   bytes_directory_entries = EET_FILE2_DIRECTORY_ENTRY_SIZE * num_directory_entries + EET_FILE2_HEADER_SIZE;
-   bytes_dictionary_entries = EET_FILE2_DICTIONARY_ENTRY_SIZE * num_dictionary_entries;
+   bytes_directory_entries = EET_FILE2_DIRECTORY_ENTRY_SIZE *
+      num_directory_entries + EET_FILE2_HEADER_SIZE;
+   bytes_dictionary_entries = EET_FILE2_DICTIONARY_ENTRY_SIZE *
+      num_dictionary_entries;
 
    /* calculate per entry offset */
    strings_offset = bytes_directory_entries + bytes_dictionary_entries;
-   data_offset = bytes_directory_entries + bytes_dictionary_entries + bytes_strings;
+   data_offset = bytes_directory_entries + bytes_dictionary_entries +
+      bytes_strings;
 
    for (i = 0; i < num; ++i)
      {
@@ -502,58 +567,58 @@ eet_flush2(Eet_File *ef)
 
    /* calculate dictionary strings offset */
    if (ef->ed)
-     ef->ed->offset = strings_offset;
+      ef->ed->offset = strings_offset;
 
    /* go thru and write the header */
-   head[0] = (int) htonl ((unsigned int) EET_MAGIC_FILE2);
-   head[1] = (int) htonl ((unsigned int) num_directory_entries);
-   head[2] = (int) htonl ((unsigned int) num_dictionary_entries);
+   head[0] = (int)htonl((unsigned int)EET_MAGIC_FILE2);
+   head[1] = (int)htonl((unsigned int)num_directory_entries);
+   head[2] = (int)htonl((unsigned int)num_dictionary_entries);
 
    fseek(fp, 0, SEEK_SET);
    if (fwrite(head, sizeof (head), 1, fp) != 1)
-     goto write_error;
+      goto write_error;
 
    /* write directories entry */
    for (i = 0; i < num; i++)
      {
         for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
           {
-            unsigned int flag;
+             unsigned int flag;
              int ibuf[EET_FILE2_DIRECTORY_ENTRY_COUNT];
 
-            flag = (efn->ciphered << 1) | efn->compression;
+             flag = (efn->alias << 2) | (efn->ciphered << 1) | efn->compression;
 
-             ibuf[0] = (int) htonl ((unsigned int) efn->offset);
-             ibuf[1] = (int) htonl ((unsigned int) efn->size);
-             ibuf[2] = (int) htonl ((unsigned int) efn->data_size);
-             ibuf[3] = (int) htonl ((unsigned int) efn->name_offset);
-             ibuf[4] = (int) htonl ((unsigned int) efn->name_size);
-             ibuf[5] = (int) htonl ((unsigned int) flag);
+             ibuf[0] = (int)htonl((unsigned int)efn->offset);
+             ibuf[1] = (int)htonl((unsigned int)efn->size);
+             ibuf[2] = (int)htonl((unsigned int)efn->data_size);
+             ibuf[3] = (int)htonl((unsigned int)efn->name_offset);
+             ibuf[4] = (int)htonl((unsigned int)efn->name_size);
+             ibuf[5] = (int)htonl((unsigned int)flag);
 
              if (fwrite(ibuf, sizeof(ibuf), 1, fp) != 1)
-               goto write_error;
+                goto write_error;
           }
      }
 
    /* write dictionnary */
    if (ef->ed)
      {
-        int     offset = strings_offset;
+        int offset = strings_offset;
 
         for (j = 0; j < ef->ed->count; ++j)
           {
-             int      sbuf[EET_FILE2_DICTIONARY_ENTRY_COUNT];
+             int sbuf[EET_FILE2_DICTIONARY_ENTRY_COUNT];
 
-             sbuf[0] = (int) htonl ((unsigned int) ef->ed->all[j].hash);
-             sbuf[1] = (int) htonl ((unsigned int) offset);
-             sbuf[2] = (int) htonl ((unsigned int) ef->ed->all[j].len);
-             sbuf[3] = (int) htonl ((unsigned int) ef->ed->all[j].prev);
-             sbuf[4] = (int) htonl ((unsigned int) ef->ed->all[j].next);
+             sbuf[0] = (int)htonl((unsigned int)ef->ed->all[j].hash);
+             sbuf[1] = (int)htonl((unsigned int)offset);
+             sbuf[2] = (int)htonl((unsigned int)ef->ed->all[j].len);
+             sbuf[3] = (int)htonl((unsigned int)ef->ed->all[j].prev);
+             sbuf[4] = (int)htonl((unsigned int)ef->ed->all[j].next);
 
              offset += ef->ed->all[j].len;
 
              if (fwrite(sbuf, sizeof (sbuf), 1, fp) != 1)
-               goto write_error;
+                goto write_error;
           }
      }
 
@@ -563,27 +628,22 @@ eet_flush2(Eet_File *ef)
         for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
           {
              if (fwrite(efn->name, efn->name_size, 1, fp) != 1)
-               goto write_error;
+                goto write_error;
           }
      }
 
    /* write strings */
    if (ef->ed)
-     {
-       for (j = 0; j < ef->ed->count; ++j)
-         {
-            if (ef->ed->all[j].str)
-              {
-                 if (fwrite(ef->ed->all[j].str, ef->ed->all[j].len, 1, fp) != 1)
-                   goto write_error;
-              }
-            else
-              {
-                 if (fwrite(ef->ed->all[j].mmap, ef->ed->all[j].len, 1, fp) != 1)
-                   goto write_error;
-              }
-         }
-     }
+      for (j = 0; j < ef->ed->count; ++j)
+        {
+           if (ef->ed->all[j].str)
+             {
+                if (fwrite(ef->ed->all[j].str, ef->ed->all[j].len, 1, fp) != 1)
+                   goto write_error;
+             }
+           else if (fwrite(ef->ed->all[j].mmap, ef->ed->all[j].len, 1, fp) != 1)
+              goto write_error;
+        }
 
    /* write data */
    for (i = 0; i < num; i++)
@@ -591,7 +651,7 @@ eet_flush2(Eet_File *ef)
         for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
           {
              if (fwrite(efn->data, efn->size, 1, fp) != 1)
-               goto write_error;
+                goto write_error;
           }
      }
 
@@ -609,9 +669,9 @@ eet_flush2(Eet_File *ef)
    /* append signature if required */
    if (ef->key)
      {
-       error = eet_identity_sign(fp, ef->key);
-       if (error != EET_ERROR_NONE)
-         goto sign_error;
+        error = eet_identity_sign(fp, ef->key);
+        if (error != EET_ERROR_NONE)
+           goto sign_error;
      }
 
    /* no more writes pending */
@@ -621,106 +681,121 @@ eet_flush2(Eet_File *ef)
 
    return EET_ERROR_NONE;
 
-   write_error:
+write_error:
    if (ferror(fp))
      {
-       switch (errno)
-         {
-          case EFBIG: error = EET_ERROR_WRITE_ERROR_FILE_TOO_BIG; break;
-          case EIO: error = EET_ERROR_WRITE_ERROR_IO_ERROR; break;
-          case ENOSPC: error = EET_ERROR_WRITE_ERROR_OUT_OF_SPACE; break;
-          case EPIPE: error = EET_ERROR_WRITE_ERROR_FILE_CLOSED; break;
-          default: error = EET_ERROR_WRITE_ERROR; break;
-         }
+        switch (errno)
+          {
+           case EFBIG: error = EET_ERROR_WRITE_ERROR_FILE_TOO_BIG; break;
+
+           case EIO: error = EET_ERROR_WRITE_ERROR_IO_ERROR; break;
+
+           case ENOSPC: error = EET_ERROR_WRITE_ERROR_OUT_OF_SPACE; break;
+
+           case EPIPE: error = EET_ERROR_WRITE_ERROR_FILE_CLOSED; break;
+
+           default: error = EET_ERROR_WRITE_ERROR; break;
+          } /* switch */
      }
-   sign_error:
-   if (fp) fclose(fp);
+
+sign_error:
+   fclose(fp);
    return error;
-}
+} /* eet_flush2 */
 
 EAPI int
 eet_init(void)
 {
    if (++eet_init_count != 1)
-     return eet_init_count;
+      return eet_init_count;
 
    if (!eina_init())
      {
-       fprintf(stderr, "Eet: Eina init failed");
-       return --eet_init_count;
+        fprintf(stderr, "Eet: Eina init failed");
+        return --eet_init_count;
      }
+
    _eet_log_dom_global = eina_log_domain_register("Eet", EET_DEFAULT_LOG_COLOR);
    if (_eet_log_dom_global < 0)
      {
-       EINA_LOG_ERR("Eet Can not create a general log domain.");
-       goto shutdown_eina;
+        EINA_LOG_ERR("Eet Can not create a general log domain.");
+        goto shutdown_eina;
      }
 
    if (!eet_node_init())
      {
-       EINA_LOG_ERR("Eet: Eet_Node mempool creation failed");
-       goto unregister_log_domain;
+        EINA_LOG_ERR("Eet: Eet_Node mempool creation failed");
+        goto unregister_log_domain;
      }
 
 #ifdef HAVE_GNUTLS
    /* Before the library can be used, it must initialize itself if needed. */
-   if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P) == 0)
+   if (gcry_control(GCRYCTL_ANY_INITIALIZATION_P) == 0)
      {
-       gcry_check_version(NULL);
-       /* Disable warning messages about problems with the secure memory subsystem.
-          This command should be run right after gcry_check_version. */
-       if (gcry_control(GCRYCTL_DISABLE_SECMEM_WARN))
-         goto shutdown_eet;
-       /* This command is used to allocate a pool of secure memory and thus
-          enabling the use of secure memory. It also drops all extra privileges the
-          process has (i.e. if it is run as setuid (root)). If the argument nbytes
-          is 0, secure memory will be disabled. The minimum amount of secure memory
-          allocated is currently 16384 bytes; you may thus use a value of 1 to
-          request that default size. */
-       if (gcry_control(GCRYCTL_INIT_SECMEM, 16384, 0))
-         WRN("BIG FAT WARNING: I AM UNABLE TO REQUEST SECMEM, Cryptographic operation are at risk !");
+        gcry_check_version(NULL);
+        /* Disable warning messages about problems with the secure memory subsystem.
+           This command should be run right after gcry_check_version. */
+        if (gcry_control(GCRYCTL_DISABLE_SECMEM_WARN))
+           goto shutdown_eet;  /* This command is used to allocate a pool of secure memory and thus
+                                  enabling the use of secure memory. It also drops all extra privileges the
+                                  process has (i.e. if it is run as setuid (root)). If the argument nbytes
+                                  is 0, secure memory will be disabled. The minimum amount of secure memory
+                                  allocated is currently 16384 bytes; you may thus use a value of 1 to
+                                  request that default size. */
+
+        if (gcry_control(GCRYCTL_INIT_SECMEM, 16384, 0))
+           WRN(
+              "BIG FAT WARNING: I AM UNABLE TO REQUEST SECMEM, Cryptographic operation are at risk !");
      }
+
+#ifdef EFL_HAVE_POSIX_THREADS
+   if (gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread))
+      WRN(
+         "YOU ARE USING PTHREADS, BUT I CANNOT INITIALIZE THREADSAFE GCRYPT OPERATIONS!");
+
+#endif /* ifdef EFL_HAVE_POSIX_THREADS */
    if (gnutls_global_init())
-     goto shutdown_eet;
-#endif
+      goto shutdown_eet;
+
+#endif /* ifdef HAVE_GNUTLS */
 #ifdef HAVE_OPENSSL
    ERR_load_crypto_strings();
    OpenSSL_add_all_algorithms();
-#endif
+#endif /* ifdef HAVE_OPENSSL */
 
    return eet_init_count;
 
- shutdown_eet:
+shutdown_eet:
    eet_node_shutdown();
- unregister_log_domain:
+unregister_log_domain:
    eina_log_domain_unregister(_eet_log_dom_global);
    _eet_log_dom_global = -1;
- shutdown_eina:
+shutdown_eina:
    eina_shutdown();
    return --eet_init_count;
-}
+} /* eet_init */
 
 EAPI int
 eet_shutdown(void)
 {
    if (--eet_init_count != 0)
-     return eet_init_count;
+      return eet_init_count;
 
    eet_clearcache();
    eet_node_shutdown();
 #ifdef HAVE_GNUTLS
    gnutls_global_deinit();
-#endif
+#endif /* ifdef HAVE_GNUTLS */
 #ifdef HAVE_OPENSSL
    EVP_cleanup();
    ERR_free_strings();
-#endif
+#endif /* ifdef HAVE_OPENSSL */
    eina_log_domain_unregister(_eet_log_dom_global);
    _eet_log_dom_global = -1;
    eina_shutdown();
 
    return eet_init_count;
-}
+} /* eet_shutdown */
 
 EAPI Eet_Error
 eet_sync(Eet_File *ef)
@@ -728,14 +803,14 @@ eet_sync(Eet_File *ef)
    Eet_Error ret;
 
    if (eet_check_pointer(ef))
-     return EET_ERROR_BAD_OBJECT;
+      return EET_ERROR_BAD_OBJECT;
 
    if ((ef->mode != EET_FILE_MODE_WRITE) &&
        (ef->mode != EET_FILE_MODE_READ_WRITE))
-     return EET_ERROR_NOT_WRITABLE;
+      return EET_ERROR_NOT_WRITABLE;
 
    if (!ef->writes_pending)
-     return EET_ERROR_NONE;
+      return EET_ERROR_NONE;
 
    LOCK_FILE(ef);
 
@@ -743,13 +818,13 @@ eet_sync(Eet_File *ef)
 
    UNLOCK_FILE(ef);
    return ret;
-}
+} /* eet_sync */
 
 EAPI void
 eet_clearcache(void)
 {
-   int num = 0;
-   int i;
+   int num = 0;
+   int i;
 
    /*
     * We need to compute the list of eet file to close separately from the cache,
@@ -758,154 +833,165 @@ eet_clearcache(void)
    LOCK_CACHE;
    for (i = 0; i < eet_writers_num; i++)
      {
-       if (eet_writers[i]->references <= 0) num++;
+        if (eet_writers[i]->references <= 0)
+           num++;
      }
 
    for (i = 0; i < eet_readers_num; i++)
      {
-       if (eet_readers[i]->references <= 0) num++;
+        if (eet_readers[i]->references <= 0)
+           num++;
      }
 
    if (num > 0)
      {
-       Eet_File **closelist = NULL;
-
-       closelist = alloca(num * sizeof(Eet_File *));
-       num = 0;
-       for (i = 0; i < eet_writers_num; i++)
-         {
-            if (eet_writers[i]->references <= 0)
-              {
-                 closelist[num] = eet_writers[i];
-                 eet_writers[i]->delete_me_now = 1;
-                 num++;
-              }
-         }
-
-       for (i = 0; i < eet_readers_num; i++)
-         {
-            if (eet_readers[i]->references <= 0)
-              {
-                 closelist[num] = eet_readers[i];
-                 eet_readers[i]->delete_me_now = 1;
-                 num++;
-              }
-         }
-
-       for (i = 0; i < num; i++)
-         {
-            eet_internal_close(closelist[i], EINA_TRUE);
-         }
+        Eet_File **closelist = NULL;
+
+        closelist = alloca(num * sizeof(Eet_File *));
+        num = 0;
+        for (i = 0; i < eet_writers_num; i++)
+          {
+             if (eet_writers[i]->references <= 0)
+               {
+                  closelist[num] = eet_writers[i];
+                  eet_writers[i]->delete_me_now = 1;
+                  num++;
+               }
+          }
+
+        for (i = 0; i < eet_readers_num; i++)
+          {
+             if (eet_readers[i]->references <= 0)
+               {
+                  closelist[num] = eet_readers[i];
+                  eet_readers[i]->delete_me_now = 1;
+                  num++;
+               }
+          }
+
+        for (i = 0; i < num; i++)
+          {
+             eet_internal_close(closelist[i], EINA_TRUE);
+          }
      }
+
    UNLOCK_CACHE;
-}
+} /* eet_clearcache */
 
 /* FIXME: MMAP race condition in READ_WRITE_MODE */
 static Eet_File *
 eet_internal_read2(Eet_File *ef)
 {
-   const int    *data = (const int*) ef->data;
-   const char   *start = (const char*) ef->data;
-   int           idx = 0;
-   int           num_directory_entries;
-   int           bytes_directory_entries;
-   int           num_dictionary_entries;
-   int           bytes_dictionary_entries;
-   int           signature_base_offset;
-   int           i;
+   const int *data = (const int *)ef->data;
+   const char *start = (const char *)ef->data;
+   int idx = 0;
+   int num_directory_entries;
+   int bytes_directory_entries;
+   int num_dictionary_entries;
+   int bytes_dictionary_entries;
+   int signature_base_offset;
+   int i;
 
    idx += sizeof(int);
-   if (eet_test_close((int) ntohl(*data) != EET_MAGIC_FILE2, ef))
-     return NULL;
+   if (eet_test_close((int)ntohl(*data) != EET_MAGIC_FILE2, ef))
+      return NULL;
+
    data++;
 
-#define GET_INT(Value, Pointer, Index)          \
-   {                                            \
-      Value = ntohl(*Pointer);                  \
-      Pointer++;                                \
-      Index += sizeof(int);                     \
+#define GET_INT(Value, Pointer, Index)\
+   {\
+      Value = ntohl(*Pointer);\
+      Pointer++;\
+      Index += sizeof(int);\
    }
 
    /* get entries count and byte count */
-   GET_INT(num_directory_entries, data, idx);
+   GET_INT(num_directory_entries,  data, idx);
    /* get dictionary count and byte count */
    GET_INT(num_dictionary_entries, data, idx);
 
-   bytes_directory_entries = EET_FILE2_DIRECTORY_ENTRY_SIZE * num_directory_entries + EET_FILE2_HEADER_SIZE;
-   bytes_dictionary_entries = EET_FILE2_DICTIONARY_ENTRY_SIZE * num_dictionary_entries;
+   bytes_directory_entries = EET_FILE2_DIRECTORY_ENTRY_SIZE *
+      num_directory_entries + EET_FILE2_HEADER_SIZE;
+   bytes_dictionary_entries = EET_FILE2_DICTIONARY_ENTRY_SIZE *
+      num_dictionary_entries;
 
    /* we cant have <= 0 values here - invalid */
    if (eet_test_close((num_directory_entries <= 0), ef))
-     return NULL;
+      return NULL;
 
    /* we cant have more bytes directory and bytes in dictionaries than the size of the file */
-   if (eet_test_close((bytes_directory_entries + bytes_dictionary_entries) > ef->data_size, ef))
-     return NULL;
+   if (eet_test_close((bytes_directory_entries + bytes_dictionary_entries) >
+                      ef->data_size, ef))
+      return NULL;
 
    /* allocate header */
    ef->header = calloc(1, sizeof(Eet_File_Header));
    if (eet_test_close(!ef->header, ef))
-     return NULL;
+      return NULL;
 
    ef->header->magic = EET_MAGIC_FILE_HEADER;
 
    /* allocate directory block in ram */
    ef->header->directory = calloc(1, sizeof(Eet_File_Directory));
    if (eet_test_close(!ef->header->directory, ef))
-     return NULL;
+      return NULL;
 
    /* 8 bit hash table (256 buckets) */
    ef->header->directory->size = 8;
    /* allocate base hash table */
-   ef->header->directory->nodes = calloc(1, sizeof(Eet_File_Node *) * (1 << ef->header->directory->size));
+   ef->header->directory->nodes =
+      calloc(1, sizeof(Eet_File_Node *) * (1 << ef->header->directory->size));
    if (eet_test_close(!ef->header->directory->nodes, ef))
-     return NULL;
+      return NULL;
 
    signature_base_offset = 0;
 
    /* actually read the directory block - all of it, into ram */
    for (i = 0; i < num_directory_entries; ++i)
      {
-        const char      *name;
-        Eet_File_Node   *efn;
-        int              name_offset;
-        int              name_size;
-        int              hash;
-       int              flag;
+        const char *name;
+        Eet_File_Node *efn;
+        int name_offset;
+        int name_size;
+        int hash;
+        int flag;
 
         /* out directory block is inconsistent - we have oveerun our */
         /* dynamic block buffer before we finished scanning dir entries */
         efn = malloc (sizeof(Eet_File_Node));
         if (eet_test_close(!efn, ef))
-          return NULL;
+           return NULL;
 
         /* get entrie header */
-        GET_INT(efn->offset, data, idx);
-        GET_INT(efn->size, data, idx);
+        GET_INT(efn->offset,    data, idx);
+        GET_INT(efn->size,      data, idx);
         GET_INT(efn->data_size, data, idx);
-        GET_INT(name_offset, data, idx);
-        GET_INT(name_size, data, idx);
-        GET_INT(flag, data, idx);
-
-       efn->compression = flag & 0x1 ? 1 : 0;
-       efn->ciphered = flag & 0x2 ? 1 : 0;
-
-#define EFN_TEST(Test, Ef, Efn)                 \
-        if (eet_test_close(Test, Ef))           \
-          {                                     \
-             free(Efn);                         \
-             return NULL;                       \
-          }
+        GET_INT(name_offset,    data, idx);
+        GET_INT(name_size,      data, idx);
+        GET_INT(flag,           data, idx);
+
+        efn->compression = flag & 0x1 ? 1 : 0;
+        efn->ciphered = flag & 0x2 ? 1 : 0;
+        efn->alias = flag & 0x4 ? 1 : 0;
+
+#define EFN_TEST(Test, Ef, Efn)\
+   if (eet_test_close(Test, Ef))\
+     {\
+        free(Efn);\
+        return NULL;\
+     }
 
         /* check data pointer position */
         EFN_TEST(!((efn->size > 0)
                    && (efn->offset + efn->size <= ef->data_size)
-                   && (efn->offset > bytes_dictionary_entries + bytes_directory_entries)), ef, efn);
+                   && (efn->offset > bytes_dictionary_entries +
+                       bytes_directory_entries)), ef, efn);
 
         /* check name position */
         EFN_TEST(!((name_size > 0)
                    && (name_offset + name_size < ef->data_size)
-                   && (name_offset >= bytes_dictionary_entries + bytes_directory_entries)), ef, efn);
+                   && (name_offset >= bytes_dictionary_entries +
+                       bytes_directory_entries)), ef, efn);
 
         name = start + name_offset;
 
@@ -913,7 +999,7 @@ eet_internal_read2(Eet_File *ef)
         EFN_TEST(name[name_size - 1] != '\0', ef, efn);
 
         efn->free_name = 0;
-        efn->name = (char*) name;
+        efn->name = (char *)name;
         efn->name_size = name_size;
 
         hash = _eet_hash_gen(efn->name, ef->header->directory->size);
@@ -922,78 +1008,91 @@ eet_internal_read2(Eet_File *ef)
 
         /* read-only mode, so currently we have no data loaded */
         if (ef->mode == EET_FILE_MODE_READ)
-          efn->data = NULL;
-        /* read-write mode - read everything into ram */
+           efn->data = NULL;  /* read-write mode - read everything into ram */
         else
           {
              efn->data = malloc(efn->size);
              if (efn->data)
-               memcpy(efn->data, ef->data + efn->offset, efn->size);
+                memcpy(efn->data, ef->data + efn->offset, efn->size);
           }
 
-       /* compute the possible position of a signature */
-       if (signature_base_offset < efn->offset + efn->size)
-         signature_base_offset = efn->offset + efn->size;
+        /* compute the possible position of a signature */
+        if (signature_base_offset < efn->offset + efn->size)
+           signature_base_offset = efn->offset + efn->size;
      }
 
    ef->ed = NULL;
 
    if (num_dictionary_entries)
      {
-        const int       *dico = (const int*) ef->data + EET_FILE2_DIRECTORY_ENTRY_COUNT * num_directory_entries + EET_FILE2_HEADER_COUNT;
-        int              j;
+        const int *dico = (const int *)ef->data +
+           EET_FILE2_DIRECTORY_ENTRY_COUNT * num_directory_entries +
+           EET_FILE2_HEADER_COUNT;
+        int j;
 
-        if (eet_test_close((num_dictionary_entries * (int) EET_FILE2_DICTIONARY_ENTRY_SIZE + idx) > (bytes_dictionary_entries + bytes_directory_entries), ef))
-            return NULL;
+        if (eet_test_close((num_dictionary_entries *
+                            (int)EET_FILE2_DICTIONARY_ENTRY_SIZE + idx) >
+                           (bytes_dictionary_entries + bytes_directory_entries),
+                           ef))
+           return NULL;
 
         ef->ed = calloc(1, sizeof (Eet_Dictionary));
-        if (eet_test_close(!ef->ed, ef)) return NULL;
+        if (eet_test_close(!ef->ed, ef))
+           return NULL;
 
         ef->ed->all = calloc(num_dictionary_entries, sizeof (Eet_String));
-        if (eet_test_close(!ef->ed->all, ef)) return NULL;
+        if (eet_test_close(!ef->ed->all, ef))
+           return NULL;
 
         ef->ed->count = num_dictionary_entries;
-       ef->ed->total = num_dictionary_entries;
-       ef->ed->start = start + bytes_dictionary_entries + bytes_directory_entries;
-       ef->ed->end = ef->ed->start;
+        ef->ed->total = num_dictionary_entries;
+        ef->ed->start = start + bytes_dictionary_entries +
+           bytes_directory_entries;
+        ef->ed->end = ef->ed->start;
 
         for (j = 0; j < ef->ed->count; ++j)
           {
-             int   hash;
-             int   offset;
+             int hash;
+             int offset;
 
-             GET_INT(hash, dico, idx);
-             GET_INT(offset, dico, idx);
-             GET_INT(ef->ed->all[j].len, dico, idx);
+             GET_INT(hash,                dico, idx);
+             GET_INT(offset,              dico, idx);
+             GET_INT(ef->ed->all[j].len,  dico, idx);
              GET_INT(ef->ed->all[j].prev, dico, idx);
              GET_INT(ef->ed->all[j].next, dico, idx);
 
              /* Hash value could be stored on 8bits data, but this will break alignment of all the others data.
                 So stick to int and check the value. */
-             if (eet_test_close(hash & 0xFFFFFF00, ef)) return NULL;
+             if (eet_test_close(hash & 0xFFFFFF00, ef))
+                return NULL;
 
              /* Check string position */
              if (eet_test_close(!((ef->ed->all[j].len > 0)
-                                  && (offset > (bytes_dictionary_entries + bytes_directory_entries))
-                                  && (offset + ef->ed->all[j].len < ef->data_size)), ef))
-               return NULL;
+                                  && (offset >
+                                      (bytes_dictionary_entries +
+                                       bytes_directory_entries))
+                                  && (offset + ef->ed->all[j].len <
+                                      ef->data_size)), ef))
+                return NULL;
 
              ef->ed->all[j].mmap = start + offset;
              ef->ed->all[j].str = NULL;
 
-            if (ef->ed->all[j].mmap + ef->ed->all[j].len > ef->ed->end)
-              ef->ed->end = ef->ed->all[j].mmap + ef->ed->all[j].len;
+             if (ef->ed->all[j].mmap + ef->ed->all[j].len > ef->ed->end)
+                ef->ed->end = ef->ed->all[j].mmap + ef->ed->all[j].len;
 
              /* Check '\0' at the end of the string */
-             if (eet_test_close(ef->ed->all[j].mmap[ef->ed->all[j].len - 1] != '\0', ef)) return NULL;
+             if (eet_test_close(ef->ed->all[j].mmap[ef->ed->all[j].len - 1] !=
+                                '\0', ef))
+                return NULL;
 
-            ef->ed->all[j].hash = hash;
+             ef->ed->all[j].hash = hash;
              if (ef->ed->all[j].prev == -1)
-               ef->ed->hash[hash] = j;
+                ef->ed->hash[hash] = j;
 
-            /* compute the possible position of a signature */
-            if (signature_base_offset < offset + ef->ed->all[j].len)
-              signature_base_offset = offset + ef->ed->all[j].len;
+             /* compute the possible position of a signature */
+             if (signature_base_offset < offset + ef->ed->all[j].len)
+                signature_base_offset = offset + ef->ed->all[j].len;
           }
      }
 
@@ -1006,83 +1105,95 @@ eet_internal_read2(Eet_File *ef)
    if (signature_base_offset < ef->data_size)
      {
 #ifdef HAVE_SIGNATURE
-       const unsigned char *buffer = ((const unsigned char*) ef->data) + signature_base_offset;
-       ef->x509_der = eet_identity_check(ef->data, signature_base_offset,
-                                         &ef->sha1, &ef->sha1_length,
-                                         buffer, ef->data_size - signature_base_offset,
-                                         &ef->signature, &ef->signature_length,
-                                         &ef->x509_length);
-
-       if (eet_test_close(ef->x509_der == NULL, ef)) return NULL;
-#else
-       ERR("This file could be signed but you didn't compile the necessary code to check the signature.");
-#endif
+        const unsigned char *buffer = ((const unsigned char *)ef->data) +
+           signature_base_offset;
+        ef->x509_der = eet_identity_check(ef->data,
+                                          signature_base_offset,
+                                          &ef->sha1,
+                                          &ef->sha1_length,
+                                          buffer,
+                                          ef->data_size - signature_base_offset,
+                                          &ef->signature,
+                                          &ef->signature_length,
+                                          &ef->x509_length);
+
+        if (eet_test_close(ef->x509_der == NULL, ef))
+           return NULL;
+
+#else /* ifdef HAVE_SIGNATURE */
+        ERR(
+           "This file could be signed but you didn't compile the necessary code to check the signature.");
+#endif /* ifdef HAVE_SIGNATURE */
      }
 
    return ef;
-}
+} /* eet_internal_read2 */
 
 #if EET_OLD_EET_FILE_FORMAT
 static Eet_File *
 eet_internal_read1(Eet_File *ef)
 {
-   const unsigned char *dyn_buf = NULL;
-   const unsigned char *p = NULL;
-   int                  idx = 0;
-   int                  num_entries;
-   int                  byte_entries;
-   int                  i;
+   const unsigned char *dyn_buf = NULL;
+   const unsigned char *p = NULL;
+   int idx = 0;
+   int num_entries;
+   int byte_entries;
+   int i;
 
-   WRN("EET file format of '%s' is deprecated. You should just open it one time with mode == EET_FILE_MODE_READ_WRITE to solve this issue.", ef->path);
+   WRN(
+      "EET file format of '%s' is deprecated. You should just open it one time with mode == EET_FILE_MODE_READ_WRITE to solve this issue.",
+      ef->path);
 
    /* build header table if read mode */
    /* geat header */
    idx += sizeof(int);
    if (eet_test_close((int)ntohl(*((int *)ef->data)) != EET_MAGIC_FILE, ef))
-     return NULL;
-
-#define EXTRACT_INT(Value, Pointer, Index) \
-        { \
-          int tmp; \
-          memcpy(&tmp, Pointer + Index, sizeof(int)); \
-          Value = ntohl(tmp); \
-          Index += sizeof(int); \
-        }
+      return NULL;
+
+#define EXTRACT_INT(Value, Pointer, Index)\
+   {\
+      int tmp;\
+      memcpy(&tmp, Pointer + Index, sizeof(int));\
+      Value = ntohl(tmp);\
+      Index += sizeof(int);\
+   }
 
    /* get entries count and byte count */
-   EXTRACT_INT(num_entries, ef->data, idx);
+   EXTRACT_INT(num_entries,  ef->data, idx);
    EXTRACT_INT(byte_entries, ef->data, idx);
 
    /* we cant have <= 0 values here - invalid */
    if (eet_test_close((num_entries <= 0) || (byte_entries <= 0), ef))
-     return NULL;
+      return NULL;
 
    /* we can't have more entires than minimum bytes for those! invalid! */
    if (eet_test_close((num_entries * 20) > byte_entries, ef))
-     return NULL;
+      return NULL;
 
    /* check we will not outrun the file limit */
-   if (eet_test_close(((byte_entries + (int) sizeof(int) * 3) > ef->data_size), ef))
-     return NULL;
+   if (eet_test_close(((byte_entries + (int)sizeof(int) * 3) > ef->data_size),
+                      ef))
+      return NULL;
 
    /* allocate header */
    ef->header = calloc(1, sizeof(Eet_File_Header));
    if (eet_test_close(!ef->header, ef))
-     return NULL;
+      return NULL;
 
    ef->header->magic = EET_MAGIC_FILE_HEADER;
 
    /* allocate directory block in ram */
    ef->header->directory = calloc(1, sizeof(Eet_File_Directory));
    if (eet_test_close(!ef->header->directory, ef))
-     return NULL;
+      return NULL;
 
    /* 8 bit hash table (256 buckets) */
    ef->header->directory->size = 8;
    /* allocate base hash table */
-   ef->header->directory->nodes = calloc(1, sizeof(Eet_File_Node *) * (1 << ef->header->directory->size));
+   ef->header->directory->nodes =
+      calloc(1, sizeof(Eet_File_Node *) * (1 << ef->header->directory->size));
    if (eet_test_close(!ef->header->directory->nodes, ef))
-     return NULL;
+      return NULL;
 
    /* actually read the directory block - all of it, into ram */
    dyn_buf = ef->data + idx;
@@ -1092,102 +1203,109 @@ eet_internal_read1(Eet_File *ef)
 
    for (i = 0; i < num_entries; i++)
      {
-       Eet_File_Node   *efn;
-       void            *data = NULL;
-       int             indexn = 0;
-       int             name_size;
-       int             hash;
-       int             k;
+        Eet_File_Node *efn;
+        void *data = NULL;
+        int indexn = 0;
+        int name_size;
+        int hash;
+        int k;
 
 #define HEADER_SIZE (sizeof(int) * 5)
 
-       /* out directory block is inconsistent - we have oveerun our */
-       /* dynamic block buffer before we finished scanning dir entries */
-       if (eet_test_close(p + HEADER_SIZE >= (dyn_buf + byte_entries), ef))
-         return NULL;
+        /* out directory block is inconsistent - we have oveerun our */
+        /* dynamic block buffer before we finished scanning dir entries */
+        if (eet_test_close(p + HEADER_SIZE >= (dyn_buf + byte_entries), ef))
+           return NULL;
 
-       /* allocate all the ram needed for this stored node accounting */
-       efn = malloc (sizeof(Eet_File_Node));
-       if (eet_test_close(!efn, ef))
-         return NULL;
+        /* allocate all the ram needed for this stored node accounting */
+        efn = malloc (sizeof(Eet_File_Node));
+        if (eet_test_close(!efn, ef))
+           return NULL;
 
         /* get entrie header */
-       EXTRACT_INT(efn->offset, p, indexn);
-       EXTRACT_INT(efn->compression, p, indexn);
-       EXTRACT_INT(efn->size, p, indexn);
-       EXTRACT_INT(efn->data_size, p, indexn);
-       EXTRACT_INT(name_size, p, indexn);
+        EXTRACT_INT(efn->offset,      p, indexn);
+        EXTRACT_INT(efn->compression, p, indexn);
+        EXTRACT_INT(efn->size,        p, indexn);
+        EXTRACT_INT(efn->data_size,   p, indexn);
+        EXTRACT_INT(name_size,        p, indexn);
 
         efn->name_size = name_size;
-       efn->ciphered = 0;
-
-       /* invalid size */
-       if (eet_test_close(efn->size <= 0, ef))
-         {
-            free (efn);
-            return NULL;
-         }
-
-       /* invalid name_size */
-       if (eet_test_close(name_size <= 0, ef))
-         {
-            free (efn);
-            return NULL;
-         }
-
-       /* reading name would mean falling off end of dyn_buf - invalid */
-       if (eet_test_close((p + 16 + name_size) > (dyn_buf + byte_entries), ef))
-         {
-            free (efn);
-            return NULL;
-         }
-
-       /* This code is useless if we dont want backward compatibility */
-       for (k = name_size; k > 0 && ((unsigned char) * (p + HEADER_SIZE + k)) != 0; --k)
-         ;
-
-       efn->free_name = ((unsigned char) * (p + HEADER_SIZE + k)) != 0;
-
-       if (efn->free_name)
-         {
-            efn->name = malloc(sizeof(char) * name_size + 1);
-            if (eet_test_close(efn->name == NULL, ef))
-              {
-                 free(efn);
-                 return NULL;
-              }
-
-            strncpy(efn->name, (char *)p + HEADER_SIZE, name_size);
-            efn->name[name_size] = 0;
-
-            WRN("File: %s is not up to date for key \"%s\" - needs rebuilding sometime", ef->path, efn->name);
-         }
-       else
-         /* The only really usefull peace of code for efn->name (no backward compatibility) */
-         efn->name = (char*)((unsigned char*)(p + HEADER_SIZE));
-
-       /* get hash bucket it should go in */
-       hash = _eet_hash_gen(efn->name, ef->header->directory->size);
-       efn->next = ef->header->directory->nodes[hash];
-       ef->header->directory->nodes[hash] = efn;
-
-       /* read-only mode, so currently we have no data loaded */
-       if (ef->mode == EET_FILE_MODE_READ)
-         efn->data = NULL;
-       /* read-write mode - read everything into ram */
-       else
-         {
-            data = malloc(efn->size);
-            if (data)
-              memcpy(data, ef->data + efn->offset, efn->size);
-            efn->data = data;
-         }
-       /* advance */
-       p += HEADER_SIZE + name_size;
+        efn->ciphered = 0;
+        efn->alias = 0;
+
+        /* invalid size */
+        if (eet_test_close(efn->size <= 0, ef))
+          {
+             free(efn);
+             return NULL;
+          }
+
+        /* invalid name_size */
+        if (eet_test_close(name_size <= 0, ef))
+          {
+             free(efn);
+             return NULL;
+          }
+
+        /* reading name would mean falling off end of dyn_buf - invalid */
+        if (eet_test_close((p + 16 + name_size) > (dyn_buf + byte_entries), ef))
+          {
+             free(efn);
+             return NULL;
+          }
+
+        /* This code is useless if we dont want backward compatibility */
+        for (k = name_size;
+             k > 0 && ((unsigned char)*(p + HEADER_SIZE + k)) != 0; --k)
+           ;
+
+        efn->free_name = ((unsigned char)*(p + HEADER_SIZE + k)) != 0;
+
+        if (efn->free_name)
+          {
+             efn->name = malloc(sizeof(char) * name_size + 1);
+             if (eet_test_close(efn->name == NULL, ef))
+               {
+                  free(efn);
+                  return NULL;
+               }
+
+             strncpy(efn->name, (char *)p + HEADER_SIZE, name_size);
+             efn->name[name_size] = 0;
+
+             WRN(
+                "File: %s is not up to date for key \"%s\" - needs rebuilding sometime",
+                ef->path,
+                efn->name);
+          }
+        else
+           /* The only really usefull peace of code for efn->name (no backward compatibility) */
+           efn->name = (char *)((unsigned char *)(p + HEADER_SIZE));
+
+        /* get hash bucket it should go in */
+        hash = _eet_hash_gen(efn->name, ef->header->directory->size);
+        efn->next = ef->header->directory->nodes[hash];
+        ef->header->directory->nodes[hash] = efn;
+
+        /* read-only mode, so currently we have no data loaded */
+        if (ef->mode == EET_FILE_MODE_READ)
+           efn->data = NULL;  /* read-write mode - read everything into ram */
+        else
+          {
+             data = malloc(efn->size);
+             if (data)
+                memcpy(data, ef->data + efn->offset, efn->size);
+
+             efn->data = data;
+          }
+
+        /* advance */
+        p += HEADER_SIZE + name_size;
      }
    return ef;
-}
-#endif
+} /* eet_internal_read1 */
+
+#endif /* if EET_OLD_EET_FILE_FORMAT */
 
 /*
  * this should only be called when the cache lock is already held
@@ -1198,47 +1316,52 @@ eet_internal_read1(Eet_File *ef)
 static Eet_File *
 eet_internal_read(Eet_File *ef)
 {
-   const int    *data = (const int*) ef->data;
+   const int *data = (const int *)ef->data;
 
    if (eet_test_close((ef->data == (void *)-1) || (ef->data == NULL), ef))
-     return NULL;
+      return NULL;
 
-   if (eet_test_close(ef->data_size < (int) sizeof(int) * 3, ef))
-     return NULL;
+   if (eet_test_close(ef->data_size < (int)sizeof(int) * 3, ef))
+      return NULL;
 
    switch (ntohl(*data))
      {
 #if EET_OLD_EET_FILE_FORMAT
       case EET_MAGIC_FILE:
-       return eet_internal_read1(ef);
-#endif
+         return eet_internal_read1(ef);
+
+#endif /* if EET_OLD_EET_FILE_FORMAT */
       case EET_MAGIC_FILE2:
-       return eet_internal_read2(ef);
+         return eet_internal_read2(ef);
+
       default:
-       ef->delete_me_now = 1;
-       eet_internal_close(ef, EINA_TRUE);
-       break;
-     }
+         ef->delete_me_now = 1;
+         eet_internal_close(ef, EINA_TRUE);
+         break;
+     } /* switch */
 
    return NULL;
-}
+} /* eet_internal_read */
 
 static Eet_Error
-eet_internal_close(Eet_File *ef, Eina_Bool locked)
+eet_internal_close(Eet_File *ef,
+                   Eina_Bool locked)
 {
    Eet_Error err;
 
    /* check to see its' an eet file pointer */
    if (eet_check_pointer(ef))
-     return EET_ERROR_BAD_OBJECT;
+      return EET_ERROR_BAD_OBJECT;
 
-   if (!locked) LOCK_CACHE;
+   if (!locked)
+      LOCK_CACHE;
 
    /* deref */
    ef->references--;
    /* if its still referenced - dont go any further */
-   if (ef->references > 0) goto on_error;
-   /* flush any writes */
+   if (ef->references > 0)
+      goto on_error;  /* flush any writes */
+
    err = eet_flush2(ef);
 
    eet_identity_unref(ef->key);
@@ -1246,58 +1369,70 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
 
    /* if not urgent to delete it - dont free it - leave it in cache */
    if ((!ef->delete_me_now) && (ef->mode == EET_FILE_MODE_READ))
-     goto on_error;
+      goto on_error;
 
    /* remove from cache */
    if (ef->mode == EET_FILE_MODE_READ)
-     eet_cache_del(ef, &eet_readers, &eet_readers_num, &eet_readers_alloc);
-   else if ((ef->mode == EET_FILE_MODE_WRITE) || (ef->mode == EET_FILE_MODE_READ_WRITE))
-     eet_cache_del(ef, &eet_writers, &eet_writers_num, &eet_writers_alloc);
+      eet_cache_del(ef, &eet_readers, &eet_readers_num, &eet_readers_alloc);
+   else if ((ef->mode == EET_FILE_MODE_WRITE) ||
+            (
+               ef
+               ->
+               mode == EET_FILE_MODE_READ_WRITE))
+      eet_cache_del(ef, &eet_writers, &eet_writers_num, &eet_writers_alloc);
 
    /* we can unlock the cache now */
-   if (!locked) UNLOCK_CACHE;
+   if (!locked)
+      UNLOCK_CACHE;
 
    DESTROY_FILE(ef);
 
    /* free up data */
    if (ef->header)
      {
-       if (ef->header->directory)
-         {
-            if (ef->header->directory->nodes)
-              {
-                 int i, num;
-
-                 num = (1 << ef->header->directory->size);
-                 for (i = 0; i < num; i++)
-                   {
-                      Eet_File_Node *efn;
-
-                      while ((efn = ef->header->directory->nodes[i]))
-                        {
-                           if (efn->data)
-                             free(efn->data);
-
-                           ef->header->directory->nodes[i] = efn->next;
-
-                           if (efn->free_name)
-                             free(efn->name);
-
-                           free(efn);
-                        }
-                   }
-                 free(ef->header->directory->nodes);
-              }
-            free(ef->header->directory);
-         }
-       free(ef->header);
+        if (ef->header->directory)
+          {
+             if (ef->header->directory->nodes)
+               {
+                  int i, num;
+
+                  num = (1 << ef->header->directory->size);
+                  for (i = 0; i < num; i++)
+                    {
+                       Eet_File_Node *efn;
+
+                       while ((efn = ef->header->directory->nodes[i]))
+                         {
+                            if (efn->data)
+                               free(efn->data);
+
+                            ef->header->directory->nodes[i] = efn->next;
+
+                            if (efn->free_name)
+                               free(efn->name);
+
+                            free(efn);
+                         }
+                    }
+                  free(ef->header->directory->nodes);
+               }
+
+             free(ef->header->directory);
+          }
+
+        free(ef->header);
      }
 
    eet_dictionary_free(ef->ed);
 
-   if (ef->sha1) free(ef->sha1);
-   if (ef->data) munmap((void*)ef->data, ef->data_size);
-   if (ef->readfp) fclose(ef->readfp);
+   if (ef->sha1)
+      free(ef->sha1);
+
+   if (ef->data)
+      munmap((void *)ef->data, ef->data_size);
+
+   if (ef->readfp)
+      fclose(ef->readfp);
 
    /* zero out ram for struct - caution tactic against stale memory use */
    memset(ef, 0, sizeof(Eet_File));
@@ -1306,22 +1441,25 @@ eet_internal_close(Eet_File *ef, Eina_Bool locked)
    free(ef);
    return err;
 
- on_error:
-   if (!locked) UNLOCK_CACHE;
+on_error:
+   if (!locked)
+      UNLOCK_CACHE;
+
    return EET_ERROR_NONE;
-}
+} /* eet_internal_close */
 
 EAPI Eet_File *
-eet_memopen_read(const void *data, size_t size)
+eet_memopen_read(const void *data,
+                 size_t      size)
 {
-   Eet_File    *ef;
+   Eet_File *ef;
 
    if (data == NULL || size == 0)
-     return NULL;
+      return NULL;
 
    ef = malloc (sizeof (Eet_File));
    if (!ef)
-     return NULL;
+      return NULL;
 
    INIT_FILE(ef);
    ef->ed = NULL;
@@ -1344,96 +1482,109 @@ eet_memopen_read(const void *data, size_t size)
    ef = eet_internal_read(ef);
    UNLOCK_CACHE;
    return ef;
-}
+} /* eet_memopen_read */
 
 EAPI Eet_File *
-eet_open(const char *file, Eet_File_Mode mode)
+eet_open(const char   *file,
+         Eet_File_Mode mode)
 {
-   FILE         *fp;
-   Eet_File    *ef;
-   int          file_len;
-   struct stat  file_stat;
+   FILE *fp;
+   Eet_File *ef;
+   int file_len;
+   struct stat file_stat;
 
    if (!file)
-     return NULL;
+      return NULL;
 
    /* find the current file handle in cache*/
    ef = NULL;
    LOCK_CACHE;
    if (mode == EET_FILE_MODE_READ)
      {
-       ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
-       if (ef)
-         {
-            eet_sync(ef);
-            ef->references++;
-            ef->delete_me_now = 1;
+        ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
+        if (ef)
+          {
+             eet_sync(ef);
+             ef->references++;
+             ef->delete_me_now = 1;
              eet_internal_close(ef, EINA_TRUE);
-         }
-       ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
+          }
+
+        ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
      }
    else if ((mode == EET_FILE_MODE_WRITE) ||
-           (mode == EET_FILE_MODE_READ_WRITE))
+            (mode == EET_FILE_MODE_READ_WRITE))
      {
-       ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
-       if (ef)
-         {
-            ef->delete_me_now = 1;
-            ef->references++;
+        ef = eet_cache_find((char *)file, eet_readers, eet_readers_num);
+        if (ef)
+          {
+             ef->delete_me_now = 1;
+             ef->references++;
              eet_internal_close(ef, EINA_TRUE);
-         }
-       ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
+          }
+
+        ef = eet_cache_find((char *)file, eet_writers, eet_writers_num);
      }
 
    /* try open the file based on mode */
    if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE))
      {
-       /* Prevent garbage in futur comparison. */
-       file_stat.st_mtime = 0;
-
-       fp = fopen(file, "rb");
-       if (!fp) goto open_error;
-       if (fstat(fileno(fp), &file_stat))
-         {
-            fclose(fp);
-            fp = NULL;
-            goto open_error;
-         }
-       if ((mode == EET_FILE_MODE_READ) &&
-           (file_stat.st_size < ((int) sizeof(int) * 3)))
-         {
-            fclose(fp);
-            fp = NULL;
-            goto open_error;
-         }
-
-     open_error:
-       if (fp == NULL && mode == EET_FILE_MODE_READ) goto on_error;
+        /* Prevent garbage in futur comparison. */
+        file_stat.st_mtime = 0;
+
+        fp = fopen(file, "rb");
+        if (!fp)
+           goto open_error;
+
+        if (fstat(fileno(fp), &file_stat))
+          {
+             fclose(fp);
+             fp = NULL;
+             goto open_error;
+          }
+
+        if ((mode == EET_FILE_MODE_READ) &&
+            (file_stat.st_size < ((int)sizeof(int) * 3)))
+          {
+             fclose(fp);
+             fp = NULL;
+             goto open_error;
+          }
+
+open_error:
+        if (fp == NULL && mode == EET_FILE_MODE_READ)
+           goto on_error;
      }
    else
      {
-       if (mode != EET_FILE_MODE_WRITE) return NULL;
-       memset(&file_stat, 0, sizeof(file_stat));
+        if (mode != EET_FILE_MODE_WRITE)
+           return NULL;
+
+        memset(&file_stat, 0, sizeof(file_stat));
 
-       fp = NULL;
+        fp = NULL;
      }
 
    /* We found one */
-   if (ef && (file_stat.st_mtime != ef->mtime))
+   if (ef &&
+       ((file_stat.st_mtime != ef->mtime) ||
+        (file_stat.st_size != ef->data_size)))
      {
-       ef->delete_me_now = 1;
-       ef->references++;
+        ef->delete_me_now = 1;
+        ef->references++;
         eet_internal_close(ef, EINA_TRUE);
-       ef = NULL;
+        ef = NULL;
      }
 
    if (ef)
      {
-       /* reference it up and return it */
-       if (fp != NULL) fclose(fp);
-       ef->references++;
-       UNLOCK_CACHE;
-       return ef;
+        /* reference it up and return it */
+        if (fp != NULL)
+           fclose(fp);
+
+        ef->references++;
+        UNLOCK_CACHE;
+        return ef;
      }
 
    file_len = strlen(file) + 1;
@@ -1441,7 +1592,7 @@ eet_open(const char *file, Eet_File_Mode mode)
    /* Allocate struct for eet file and have it zero'd out */
    ef = malloc(sizeof(Eet_File) + file_len);
    if (!ef)
-     goto on_error;
+      goto on_error;
 
    /* fill some of the members */
    INIT_FILE(ef);
@@ -1462,40 +1613,42 @@ eet_open(const char *file, Eet_File_Mode mode)
    ef->sha1_length = 0;
 
    ef->ed = (mode == EET_FILE_MODE_WRITE)
-     || (ef->readfp == NULL && mode == EET_FILE_MODE_READ_WRITE) ?
-     eet_dictionary_add() : NULL;
+      || (ef->readfp == NULL && mode == EET_FILE_MODE_READ_WRITE) ?
+      eet_dictionary_add() : NULL;
 
    if (ef->readfp == NULL &&
        (mode == EET_FILE_MODE_READ_WRITE || mode == EET_FILE_MODE_WRITE))
-     goto empty_file;
+      goto empty_file;
 
    /* if we can't open - bail out */
    if (eet_test_close(!ef->readfp, ef))
-     goto on_error;
+      goto on_error;
 
    fcntl(fileno(ef->readfp), F_SETFD, FD_CLOEXEC);
    /* if we opened for read or read-write */
    if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE))
      {
-       ef->data_size = file_stat.st_size;
-       ef->data = mmap(NULL, ef->data_size, PROT_READ,
-                       MAP_SHARED, fileno(ef->readfp), 0);
-       if (eet_test_close((ef->data == MAP_FAILED), ef))
-         goto on_error;
-       ef = eet_internal_read(ef);
-       if (!ef)
-         goto on_error;
+        ef->data_size = file_stat.st_size;
+        ef->data = mmap(NULL, ef->data_size, PROT_READ,
+                        MAP_SHARED, fileno(ef->readfp), 0);
+        if (eet_test_close((ef->data == MAP_FAILED), ef))
+           goto on_error;
+
+        ef = eet_internal_read(ef);
+        if (!ef)
+           goto on_error;
      }
 
- empty_file:
+empty_file:
    /* add to cache */
    if (ef->references == 1)
      {
-       if (ef->mode == EET_FILE_MODE_READ)
-         eet_cache_add(ef, &eet_readers, &eet_readers_num, &eet_readers_alloc);
-       else
-         if ((ef->mode == EET_FILE_MODE_WRITE) || (ef->mode == EET_FILE_MODE_READ_WRITE))
-           eet_cache_add(ef, &eet_writers, &eet_writers_num, &eet_writers_alloc);
+        if (ef->mode == EET_FILE_MODE_READ)
+           eet_cache_add(ef, &eet_readers, &eet_readers_num, &eet_readers_alloc);
+        else
+        if ((ef->mode == EET_FILE_MODE_WRITE) ||
+            (ef->mode == EET_FILE_MODE_READ_WRITE))
+           eet_cache_add(ef, &eet_writers, &eet_writers_num, &eet_writers_alloc);
      }
 
    UNLOCK_CACHE;
@@ -1504,52 +1657,67 @@ eet_open(const char *file, Eet_File_Mode mode)
 on_error:
    UNLOCK_CACHE;
    return NULL;
-}
+} /* eet_open */
 
 EAPI Eet_File_Mode
 eet_mode_get(Eet_File *ef)
 {
    /* check to see its' an eet file pointer */
    if ((!ef) || (ef->magic != EET_MAGIC_FILE))
-     return EET_FILE_MODE_INVALID;
+      return EET_FILE_MODE_INVALID;
    else
-     return ef->mode;
-}
+      return ef->mode;
+} /* eet_mode_get */
 
 EAPI const void *
-eet_identity_x509(Eet_File *ef, int *der_length)
+eet_identity_x509(Eet_File *ef,
+                  int      *der_length)
 {
-   if (!ef->x509_der) return NULL;
+   if (!ef->x509_der)
+      return NULL;
+
+   if (der_length)
+      *der_length = ef->x509_length;
 
-   if (der_length) *der_length = ef->x509_length;
    return ef->x509_der;
-}
+} /* eet_identity_x509 */
 
 EAPI const void *
-eet_identity_signature(Eet_File *ef, int *signature_length)
+eet_identity_signature(Eet_File *ef,
+                       int      *signature_length)
 {
-   if (!ef->signature) return NULL;
+   if (!ef->signature)
+      return NULL;
+
+   if (signature_length)
+      *signature_length = ef->signature_length;
 
-   if (signature_length) *signature_length = ef->signature_length;
    return ef->signature;
-}
+} /* eet_identity_signature */
 
 EAPI const void *
-eet_identity_sha1(Eet_File *ef, int *sha1_length)
+eet_identity_sha1(Eet_File *ef,
+                  int      *sha1_length)
 {
    if (!ef->sha1)
-     ef->sha1 = eet_identity_compute_sha1(ef->data, ef->data_size, &ef->sha1_length);
+      ef->sha1 = eet_identity_compute_sha1(ef->data,
+                                           ef->data_size,
+                                           &ef->sha1_length);
+
+   if (sha1_length)
+      *sha1_length = ef->sha1_length;
 
-   if (sha1_length) *sha1_length = ef->sha1_length;
    return ef->sha1;
-}
+} /* eet_identity_sha1 */
 
 EAPI Eet_Error
-eet_identity_set(Eet_File *ef, Eet_Key *key)
+eet_identity_set(Eet_File *ef,
+                 Eet_Key  *key)
 {
    Eet_Key *tmp = ef->key;
 
-   if (!ef) return EET_ERROR_BAD_OBJECT;
+   if (!ef)
+      return EET_ERROR_BAD_OBJECT;
 
    ef->key = key;
    eet_identity_ref(ef->key);
@@ -1559,247 +1727,489 @@ eet_identity_set(Eet_File *ef, Eet_Key *key)
    ef->writes_pending = 1;
 
    return EET_ERROR_NONE;
-}
+} /* eet_identity_set */
 
 EAPI Eet_Error
 eet_close(Eet_File *ef)
 {
    return eet_internal_close(ef, EINA_FALSE);
-}
+} /* eet_close */
 
 EAPI void *
-eet_read_cipher(Eet_File *ef, const char *name, int *size_ret, const char *cipher_key)
+eet_read_cipher(Eet_File   *ef,
+                const char *name,
+                int        *size_ret,
+                const char *cipher_key)
 {
-   void                        *data = NULL;
-   int                 size = 0;
-   Eet_File_Node       *efn;
+   Eet_File_Node *efn;
+   char *data = NULL;
+   int size = 0;
 
    if (size_ret)
-     *size_ret = 0;
+      *size_ret = 0;
 
    /* check to see its' an eet file pointer */
    if (eet_check_pointer(ef))
-     return NULL;
+      return NULL;
+
    if (!name)
-     return NULL;
+      return NULL;
+
    if ((ef->mode != EET_FILE_MODE_READ) &&
        (ef->mode != EET_FILE_MODE_READ_WRITE))
-     return NULL;
+      return NULL;
 
    /* no header, return NULL */
    if (eet_check_header(ef))
-     return NULL;
+      return NULL;
 
    LOCK_FILE(ef);
 
    /* hunt hash bucket */
    efn = find_node_by_name(ef, name);
-   if (!efn) goto on_error;
+   if (!efn)
+      goto on_error;
 
    /* get size (uncompressed, if compressed at all) */
    size = efn->data_size;
 
    /* allocate data */
    data = malloc(size);
-   if (!data) goto on_error;
+   if (!data)
+      goto on_error;
 
    /* uncompressed data */
    if (efn->compression == 0)
      {
         void *data_deciphered = NULL;
-       unsigned int data_deciphered_sz = 0;
-       /* if we alreayd have the data in ram... copy that */
-       if (efn->data)
-         memcpy(data, efn->data, efn->size);
-       else
-         if (!read_data_from_disk(ef, efn, data, size))
-           goto on_error;
+        unsigned int data_deciphered_sz = 0;
+        /* if we alreayd have the data in ram... copy that */
+
+        if (efn->data)
+           memcpy(data, efn->data, efn->size);
+        else
+        if (!read_data_from_disk(ef, efn, data, size))
+           goto on_error;
+
         if (efn->ciphered && cipher_key)
-         {
-           if (eet_decipher(data, size, cipher_key, strlen(cipher_key), &data_deciphered, &data_deciphered_sz))
-             {
-               if (data_deciphered) free(data_deciphered);
-               goto on_error;
-             }
-           free(data);
-           data = data_deciphered;
-           size = data_deciphered_sz;
-         }
+          {
+             if (eet_decipher(data, size, cipher_key, strlen(cipher_key),
+                              &data_deciphered, &data_deciphered_sz))
+               {
+                  if (data_deciphered)
+                     free(data_deciphered);
+
+                  goto on_error;
+               }
+
+             free(data);
+             data = data_deciphered;
+             size = data_deciphered_sz;
+          }
      }
    /* compressed data */
    else
      {
-       void    *tmp_data;
-       void    *data_deciphered = NULL;
-       unsigned int data_deciphered_sz = 0;
-       int     free_tmp = 0;
-       int     compr_size = efn->size;
-       uLongf  dlen;
-
-       /* if we already have the data in ram... copy that */
-       if (efn->data)
-         tmp_data = efn->data;
-       else
-         {
-            tmp_data = malloc(compr_size);
-            if (!tmp_data)
-              goto on_error;
-
-            free_tmp = 1;
-
-            if (!read_data_from_disk(ef, efn, tmp_data, compr_size))
-              {
-                 free(tmp_data);
-                 goto on_error;
-              }
-         }
-
-       if (efn->ciphered && cipher_key)
-         {
-           if (eet_decipher(tmp_data, compr_size, cipher_key, strlen(cipher_key), &data_deciphered, &data_deciphered_sz))
-             {
-               if (free_tmp) free(tmp_data);
-               if (data_deciphered) free(data_deciphered);
-               goto on_error;
-             }
-           free(tmp_data);
-           tmp_data = data_deciphered;
-           compr_size = data_deciphered_sz;
-         }
-
-       /* decompress it */
-       dlen = size;
-       if (uncompress((Bytef *)data, &dlen,
-                tmp_data, (uLongf)compr_size))
-         goto on_error;
-
-       if (free_tmp)
-         free(tmp_data);
+        void *tmp_data;
+        void *data_deciphered = NULL;
+        unsigned int data_deciphered_sz = 0;
+        int free_tmp = 0;
+        int compr_size = efn->size;
+        uLongf dlen;
+
+        /* if we already have the data in ram... copy that */
+        if (efn->data)
+           tmp_data = efn->data;
+        else
+          {
+             tmp_data = malloc(compr_size);
+             if (!tmp_data)
+                goto on_error;
+
+             free_tmp = 1;
+
+             if (!read_data_from_disk(ef, efn, tmp_data, compr_size))
+               {
+                  free(tmp_data);
+                  goto on_error;
+               }
+          }
+
+        if (efn->ciphered && cipher_key)
+          {
+             if (eet_decipher(tmp_data, compr_size, cipher_key,
+                              strlen(cipher_key), &data_deciphered,
+                              &data_deciphered_sz))
+               {
+                  if (free_tmp)
+                     free(tmp_data);
+
+                  if (data_deciphered)
+                     free(data_deciphered);
+
+                  goto on_error;
+               }
+
+             free(tmp_data);
+             tmp_data = data_deciphered;
+             compr_size = data_deciphered_sz;
+          }
+
+        /* decompress it */
+        dlen = size;
+        if (uncompress((Bytef *)data, &dlen,
+                       tmp_data, (uLongf)compr_size))
+           goto on_error;
+
+        if (free_tmp)
+           free(tmp_data);
      }
 
+   UNLOCK_FILE(ef);
+
+   /* handle alias */
+   if (efn->alias)
+     {
+        void *tmp;
+
+        if (data[size - 1] != '\0')
+           goto on_error;
+
+        tmp = eet_read_cipher(ef, data, size_ret, cipher_key);
+
+        free(data);
+
+        data = tmp;
+     }
+   else
    /* fill in return values */
    if (size_ret)
-     *size_ret = size;
-
-   UNLOCK_FILE(ef);
+      *size_ret = size;
 
    return data;
 
- on_error:
+on_error:
    UNLOCK_FILE(ef);
    free(data);
    return NULL;
-}
+} /* eet_read_cipher */
 
 EAPI void *
-eet_read(Eet_File *ef, const char *name, int *size_ret)
+eet_read(Eet_File   *ef,
+         const char *name,
+         int        *size_ret)
 {
    return eet_read_cipher(ef, name, size_ret, NULL);
-}
+} /* eet_read */
 
 EAPI const void *
-eet_read_direct(Eet_File *ef, const char *name, int *size_ret)
+eet_read_direct(Eet_File   *ef,
+                const char *name,
+                int        *size_ret)
 {
-   const void  *data = NULL;
-   int          size = 0;
    Eet_File_Node *efn;
+   const char *data = NULL;
+   int size = 0;
 
    if (size_ret)
-     *size_ret = 0;
+      *size_ret = 0;
 
    /* check to see its' an eet file pointer */
    if (eet_check_pointer(ef))
-     return NULL;
+      return NULL;
+
    if (!name)
-     return NULL;
+      return NULL;
+
    if ((ef->mode != EET_FILE_MODE_READ) &&
        (ef->mode != EET_FILE_MODE_READ_WRITE))
-     return NULL;
+      return NULL;
 
    /* no header, return NULL */
    if (eet_check_header(ef))
-     return NULL;
+      return NULL;
 
    LOCK_FILE(ef);
 
    /* hunt hash bucket */
    efn = find_node_by_name(ef, name);
-   if (!efn) goto on_error;
+   if (!efn)
+      goto on_error;
 
    if (efn->offset < 0 && efn->data == NULL)
-     goto on_error;
+      goto on_error;
 
    /* get size (uncompressed, if compressed at all) */
    size = efn->data_size;
 
+   if (efn->alias)
+     {
+        data = efn->data ? efn->data : ef->data + efn->offset;
+
+        /* handle alias case */
+        if (efn->compression)
+          {
+             char *tmp;
+             int compr_size = efn->size;
+             uLongf dlen;
+
+             tmp = alloca(sizeof (compr_size));
+             dlen = size;
+
+             if (uncompress((Bytef *)tmp, &dlen, (Bytef *)data,
+                            (uLongf)compr_size))
+                goto on_error;
+
+             if (tmp[compr_size - 1] != '\0')
+                goto on_error;
+
+            UNLOCK_FILE(ef);
+
+             return eet_read_direct(ef, tmp, size_ret);
+          }
+
+        if (!data)
+           goto on_error;
+
+        if (data[size - 1] != '\0')
+           goto on_error;
+
+       UNLOCK_FILE(ef);
+
+        return eet_read_direct(ef, data, size_ret);
+     }
+   else
    /* uncompressed data */
    if (efn->compression == 0
        && efn->ciphered == 0)
-     data = efn->data ? efn->data : ef->data + efn->offset;
-   /* compressed data */
+      data = efn->data ? efn->data : ef->data + efn->offset;  /* compressed data */
    else
-     data = NULL;
+      data = NULL;
 
    /* fill in return values */
    if (size_ret)
-     *size_ret = size;
+      *size_ret = size;
 
    UNLOCK_FILE(ef);
 
    return data;
 
- on_error:
+on_error:
    UNLOCK_FILE(ef);
    return NULL;
-}
+} /* eet_read_direct */
+
+EAPI Eina_Bool
+eet_alias(Eet_File   *ef,
+          const char *name,
+          const char *destination,
+          int         comp)
+{
+   Eet_File_Node *efn;
+   void *data2;
+   Eina_Bool exists_already = EINA_FALSE;
+   int data_size;
+   int hash;
+
+   /* check to see its' an eet file pointer */
+   if (eet_check_pointer(ef))
+      return EINA_FALSE;
+
+   if ((!name) || (!destination))
+      return EINA_FALSE;
+
+   if ((ef->mode != EET_FILE_MODE_WRITE) &&
+       (ef->mode != EET_FILE_MODE_READ_WRITE))
+      return EINA_FALSE;
+
+   LOCK_FILE(ef);
+
+   if (!ef->header)
+     {
+        /* allocate header */
+        ef->header = calloc(1, sizeof(Eet_File_Header));
+        if (!ef->header)
+           goto on_error;
+
+        ef->header->magic = EET_MAGIC_FILE_HEADER;
+        /* allocate directory block in ram */
+        ef->header->directory = calloc(1, sizeof(Eet_File_Directory));
+        if (!ef->header->directory)
+          {
+             free(ef->header);
+             ef->header = NULL;
+             goto on_error;
+          }
+
+        /* 8 bit hash table (256 buckets) */
+        ef->header->directory->size = 8;
+        /* allocate base hash table */
+        ef->header->directory->nodes =
+           calloc(1, sizeof(Eet_File_Node *) *
+                  (1 << ef->header->directory->size));
+        if (!ef->header->directory->nodes)
+          {
+             free(ef->header->directory);
+             ef->header = NULL;
+             goto on_error;
+          }
+     }
+
+   /* figure hash bucket */
+   hash = _eet_hash_gen(name, ef->header->directory->size);
+
+   data_size = comp ?
+      12 + (((strlen(destination) + 1) * 101) / 100)
+      : strlen(destination) + 1;
+
+   data2 = malloc(data_size);
+   if (!data2)
+      goto on_error;
+
+   /* if we want to compress */
+   if (comp)
+     {
+        uLongf buflen;
+
+        /* compress the data with max compression */
+        buflen = (uLongf)data_size;
+        if (compress2((Bytef *)data2, &buflen, (Bytef *)destination,
+                      (uLong)strlen(destination) + 1,
+                      Z_BEST_COMPRESSION) != Z_OK)
+          {
+             free(data2);
+             goto on_error;
+          }
+
+        /* record compressed chunk size */
+        data_size = (int)buflen;
+        if (data_size < 0 || data_size >= (int)(strlen(destination) + 1))
+          {
+             comp = 0;
+             data_size = strlen(destination) + 1;
+          }
+        else
+          {
+             void *data3;
+
+             data3 = realloc(data2, data_size);
+             if (data3)
+                data2 = data3;
+          }
+     }
+
+   if (!comp)
+      memcpy(data2, destination, data_size);
+
+   /* Does this node already exist? */
+   for (efn = ef->header->directory->nodes[hash]; efn; efn = efn->next)
+     {
+        /* if it matches */
+        if ((efn->name) && (eet_string_match(efn->name, name)))
+          {
+             free(efn->data);
+             efn->alias = 1;
+             efn->ciphered = 0;
+             efn->compression = !!comp;
+             efn->size = data_size;
+             efn->data_size = strlen(destination) + 1;
+             efn->data = data2;
+             efn->offset = -1;
+             exists_already = EINA_TRUE;
+             break;
+          }
+     }
+   if (!exists_already)
+     {
+        efn = malloc(sizeof(Eet_File_Node));
+        if (!efn)
+          {
+             free(data2);
+             goto on_error;
+          }
+
+        efn->name = strdup(name);
+        efn->name_size = strlen(efn->name) + 1;
+        efn->free_name = 1;
+
+        efn->next = ef->header->directory->nodes[hash];
+        ef->header->directory->nodes[hash] = efn;
+        efn->offset = -1;
+        efn->alias = 1;
+        efn->ciphered = 0;
+        efn->compression = !!comp;
+        efn->size = data_size;
+        efn->data_size = strlen(destination) + 1;
+        efn->data = data2;
+     }
+
+   /* flags that writes are pending */
+   ef->writes_pending = 1;
+
+   UNLOCK_FILE(ef);
+   return EINA_TRUE;
+
+on_error:
+   UNLOCK_FILE(ef);
+   return EINA_FALSE;
+} /* eet_alias */
 
 EAPI int
-eet_write_cipher(Eet_File *ef, const char *name, const void *data, int size, int comp, const char *cipher_key)
+eet_write_cipher(Eet_File   *ef,
+                 const char *name,
+                 const void *data,
+                 int         size,
+                 int         comp,
+                 const char *cipher_key)
 {
-   Eet_File_Node       *efn;
-   void                        *data2 = NULL;
-   int                 exists_already = 0;
-   int                 data_size;
-   int                 hash;
+   Eet_File_Node *efn;
+   void *data2 = NULL;
+   int exists_already = 0;
+   int data_size;
+   int hash;
 
    /* check to see its' an eet file pointer */
    if (eet_check_pointer(ef))
-     return 0;
+      return 0;
+
    if ((!name) || (!data) || (size <= 0))
-     return 0;
+      return 0;
+
    if ((ef->mode != EET_FILE_MODE_WRITE) &&
        (ef->mode != EET_FILE_MODE_READ_WRITE))
-     return 0;
+      return 0;
 
    LOCK_FILE(ef);
 
    if (!ef->header)
      {
-       /* allocate header */
-       ef->header = calloc(1, sizeof(Eet_File_Header));
-       if (!ef->header)
-         goto on_error;
-
-       ef->header->magic = EET_MAGIC_FILE_HEADER;
-       /* allocate directory block in ram */
-       ef->header->directory = calloc(1, sizeof(Eet_File_Directory));
-       if (!ef->header->directory)
-         {
-            free(ef->header);
-            ef->header = NULL;
-            goto on_error;
-         }
-
-       /* 8 bit hash table (256 buckets) */
-       ef->header->directory->size = 8;
-       /* allocate base hash table */
-       ef->header->directory->nodes = calloc(1, sizeof(Eet_File_Node *) * (1 << ef->header->directory->size));
-       if (!ef->header->directory->nodes)
-         {
-            free(ef->header->directory);
-            ef->header = NULL;
-            goto on_error;
-         }
+        /* allocate header */
+        ef->header = calloc(1, sizeof(Eet_File_Header));
+        if (!ef->header)
+           goto on_error;
+
+        ef->header->magic = EET_MAGIC_FILE_HEADER;
+        /* allocate directory block in ram */
+        ef->header->directory = calloc(1, sizeof(Eet_File_Directory));
+        if (!ef->header->directory)
+          {
+             free(ef->header);
+             ef->header = NULL;
+             goto on_error;
+          }
+
+        /* 8 bit hash table (256 buckets) */
+        ef->header->directory->size = 8;
+        /* allocate base hash table */
+        ef->header->directory->nodes =
+           calloc(1, sizeof(Eet_File_Node *) *
+                  (1 << ef->header->directory->size));
+        if (!ef->header->directory->nodes)
+          {
+             free(ef->header->directory);
+             ef->header = NULL;
+             goto on_error;
+          }
      }
 
    /* figure hash bucket */
@@ -1809,101 +2219,111 @@ eet_write_cipher(Eet_File *ef, const char *name, const void *data, int size, int
 
    if (comp || !cipher_key)
      {
-       data2 = malloc(data_size);
-       if (!data2) goto on_error;
+        data2 = malloc(data_size);
+        if (!data2)
+           goto on_error;
      }
 
    /* if we want to compress */
    if (comp)
      {
-       uLongf buflen;
-
-       /* compress the data with max compression */
-       buflen = (uLongf)data_size;
-       if (compress2((Bytef *)data2, &buflen, (Bytef *)data,
-                          (uLong)size, Z_BEST_COMPRESSION) != Z_OK)
-         {
-            free(data2);
-            return 0;
-         }
-       /* record compressed chunk size */
-       data_size = (int)buflen;
-       if (data_size < 0 || data_size >= size)
-         {
-            comp = 0;
-            data_size = size;
-         }
-       else
-         {
-            void *data3;
-
-            data3 = realloc(data2, data_size);
-            if (data3)
-              data2 = data3;
-         }
+        uLongf buflen;
+
+        /* compress the data with max compression */
+        buflen = (uLongf)data_size;
+        if (compress2((Bytef *)data2, &buflen, (Bytef *)data,
+                      (uLong)size, Z_BEST_COMPRESSION) != Z_OK)
+          {
+             free(data2);
+             goto on_error;
+          }
+
+        /* record compressed chunk size */
+        data_size = (int)buflen;
+        if (data_size < 0 || data_size >= size)
+          {
+             comp = 0;
+             data_size = size;
+          }
+        else
+          {
+             void *data3;
+
+             data3 = realloc(data2, data_size);
+             if (data3)
+                data2 = data3;
+          }
      }
 
    if (cipher_key)
      {
-       void *data_ciphered = NULL;
-       unsigned int data_ciphered_sz = 0;
-       const void *tmp;
-
-       tmp = data2 ? data2 : data;
-       if (!eet_cipher(tmp, data_size, cipher_key, strlen(cipher_key), &data_ciphered, &data_ciphered_sz))
-        {
-          if (data2) free(data2);
-          data2 = data_ciphered;
-          data_size = data_ciphered_sz;
-          size = (data_size > size) ? data_size : size;
-        }
-       else
-        {
-          if (data_ciphered) free(data_ciphered);
-          cipher_key = NULL;
-        }
+        void *data_ciphered = NULL;
+        unsigned int data_ciphered_sz = 0;
+        const void *tmp;
+
+        tmp = data2 ? data2 : data;
+        if (!eet_cipher(tmp, data_size, cipher_key, strlen(cipher_key),
+                        &data_ciphered, &data_ciphered_sz))
+          {
+             if (data2)
+                free(data2);
+
+             data2 = data_ciphered;
+             data_size = data_ciphered_sz;
+             size = (data_size > size) ? data_size : size;
+          }
+        else
+          {
+             if (data_ciphered)
+                free(data_ciphered);
+
+             cipher_key = NULL;
+          }
      }
    else
-     if (!comp)
-       memcpy(data2, data, size);
+   if (!comp)
+      memcpy(data2, data, size);
 
    /* Does this node already exist? */
    for (efn = ef->header->directory->nodes[hash]; efn; efn = efn->next)
      {
-       /* if it matches */
-       if ((efn->name) && (eet_string_match(efn->name, name)))
-         {
-            free(efn->data);
-            efn->ciphered = cipher_key ? 1 : 0;
-            efn->compression = !!comp;
-            efn->size = data_size;
-            efn->data_size = size;
-            efn->data = data2;
-            efn->offset = -1;
-            exists_already = 1;
-            break;
-         }
+        /* if it matches */
+        if ((efn->name) && (eet_string_match(efn->name, name)))
+          {
+             free(efn->data);
+             efn->alias = 0;
+             efn->ciphered = cipher_key ? 1 : 0;
+             efn->compression = !!comp;
+             efn->size = data_size;
+             efn->data_size = size;
+             efn->data = data2;
+             efn->offset = -1;
+             exists_already = 1;
+             break;
+          }
      }
    if (!exists_already)
      {
-       efn = malloc(sizeof(Eet_File_Node));
-       if (!efn)
-         {
-            free(data2);
-            goto on_error;
-         }
-       efn->name = strdup(name);
+        efn = malloc(sizeof(Eet_File_Node));
+        if (!efn)
+          {
+             free(data2);
+             goto on_error;
+          }
+
+        efn->name = strdup(name);
         efn->name_size = strlen(efn->name) + 1;
         efn->free_name = 1;
 
-       efn->next = ef->header->directory->nodes[hash];
-       ef->header->directory->nodes[hash] = efn;
-       efn->offset = -1;
-       efn->ciphered = cipher_key ? 1 : 0;
-       efn->compression = !!comp;
-       efn->size = data_size;
-       efn->data_size = size;
-       efn->data = data2;
+        efn->next = ef->header->directory->nodes[hash];
+        ef->header->directory->nodes[hash] = efn;
+        efn->offset = -1;
+        efn->alias = 0;
+        efn->ciphered = cipher_key ? 1 : 0;
+        efn->compression = !!comp;
+        efn->size = data_size;
+        efn->data_size = size;
+        efn->data = data2;
      }
 
    /* flags that writes are pending */
@@ -1911,37 +2331,43 @@ eet_write_cipher(Eet_File *ef, const char *name, const void *data, int size, int
    UNLOCK_FILE(ef);
    return data_size;
 
- on_error:
+on_error:
    UNLOCK_FILE(ef);
    return 0;
-}
+} /* eet_write_cipher */
 
 EAPI int
-eet_write(Eet_File *ef, const char *name, const void *data, int size, int comp)
+eet_write(Eet_File   *ef,
+          const char *name,
+          const void *data,
+          int         size,
+          int         comp)
 {
    return eet_write_cipher(ef, name, data, size, comp, NULL);
-}
+} /* eet_write */
 
 EAPI int
-eet_delete(Eet_File *ef, const char *name)
+eet_delete(Eet_File   *ef,
+           const char *name)
 {
-   Eet_File_Node       *efn;
-   Eet_File_Node       *pefn;
-   int                 hash;
-   int                 exists_already = 0;
+   Eet_File_Node *efn;
+   Eet_File_Node *pefn;
+   int hash;
+   int exists_already = 0;
 
    /* check to see its' an eet file pointer */
    if (eet_check_pointer(ef))
-     return 0;
+      return 0;
+
    if (!name)
-     return 0;
+      return 0;
 
    /* deleting keys is only possible in RW or WRITE mode */
    if (ef->mode == EET_FILE_MODE_READ)
-     return 0;
+      return 0;
 
    if (eet_check_header(ef))
-     return 0;
+      return 0;
 
    LOCK_FILE(ef);
 
@@ -1950,53 +2376,57 @@ eet_delete(Eet_File *ef, const char *name)
 
    /* Does this node already exist? */
    for (pefn = NULL, efn = ef->header->directory->nodes[hash];
-       efn;
-       pefn = efn, efn = efn->next)
+        efn;
+        pefn = efn, efn = efn->next)
      {
-       /* if it matches */
-       if (eet_string_match(efn->name, name))
-         {
-            if (efn->data)
-              free(efn->data);
-
-            if (pefn == NULL)
-              ef->header->directory->nodes[hash] = efn->next;
-            else
-              pefn->next = efn->next;
-
-             if (efn->free_name) free(efn->name);
-            free(efn);
-            exists_already = 1;
-            break;
-         }
+        /* if it matches */
+        if (eet_string_match(efn->name, name))
+          {
+             if (efn->data)
+                free(efn->data);
+
+             if (pefn == NULL)
+                ef->header->directory->nodes[hash] = efn->next;
+             else
+                pefn->next = efn->next;
+
+             if (efn->free_name)
+                free(efn->name);
+
+             free(efn);
+             exists_already = 1;
+             break;
+          }
      }
    /* flags that writes are pending */
    if (exists_already)
-     ef->writes_pending = 1;
+      ef->writes_pending = 1;
 
    UNLOCK_FILE(ef);
 
    /* update access time */
    return exists_already;
-}
+} /* eet_delete */
 
 EAPI Eet_Dictionary *
 eet_dictionary_get(Eet_File *ef)
 {
-   if (eet_check_pointer(ef)) return NULL;
+   if (eet_check_pointer(ef))
+      return NULL;
 
    return ef->ed;
-}
-
+} /* eet_dictionary_get */
 
 EAPI char **
-eet_list(Eet_File *ef, const char *glob, int *count_ret)
+eet_list(Eet_File   *ef,
+         const char *glob,
+         int        *count_ret)
 {
-   Eet_File_Node       *efn;
-   char                        **list_ret = NULL;
-   int                 list_count = 0;
-   int                 list_count_alloc = 0;
-   int                 i, num;
+   Eet_File_Node *efn;
+   char **list_ret = NULL;
+   int list_count = 0;
+   int list_count_alloc = 0;
+   int i, num;
 
    /* check to see its' an eet file pointer */
    if (eet_check_pointer(ef) || eet_check_header(ef) ||
@@ -2004,13 +2434,14 @@ eet_list(Eet_File *ef, const char *glob, int *count_ret)
        ((ef->mode != EET_FILE_MODE_READ) &&
         (ef->mode != EET_FILE_MODE_READ_WRITE)))
      {
-       if (count_ret)
-         *count_ret = 0;
+        if (count_ret)
+           *count_ret = 0;
 
-       return NULL;
+        return NULL;
      }
 
-   if (!strcmp(glob, "*")) glob = NULL;
+   if (!strcmp(glob, "*"))
+      glob = NULL;
 
    LOCK_FILE(ef);
 
@@ -2018,55 +2449,57 @@ eet_list(Eet_File *ef, const char *glob, int *count_ret)
    num = (1 << ef->header->directory->size);
    for (i = 0; i < num; i++)
      {
-       for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
-         {
-            /* if the entry matches the input glob
-             * check for * explicitly, because on some systems, * isn't well
-             * supported
-             */
-            if ((!glob) || !fnmatch(glob, efn->name, 0))
-              {
-                 /* add it to our list */
-                 list_count++;
-
-                 /* only realloc in 32 entry chunks */
-                 if (list_count > list_count_alloc)
-                   {
-                      char     **new_list = NULL;
-
-                      list_count_alloc += 64;
-                      new_list = realloc(list_ret, list_count_alloc * (sizeof(char *)));
-                      if (!new_list)
-                        {
-                           free(list_ret);
-
-                           goto on_error;
-                        }
-                      list_ret = new_list;
-                   }
-
-                 /* put pointer of name string in */
-                 list_ret[list_count - 1] = efn->name;
-              }
-         }
+        for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
+          {
+             /* if the entry matches the input glob
+              * check for * explicitly, because on some systems, * isn't well
+              * supported
+              */
+             if ((!glob) || !fnmatch(glob, efn->name, 0))
+               {
+                  /* add it to our list */
+                  list_count++;
+
+                  /* only realloc in 32 entry chunks */
+                  if (list_count > list_count_alloc)
+                    {
+                       char **new_list = NULL;
+
+                       list_count_alloc += 64;
+                       new_list =
+                          realloc(list_ret, list_count_alloc * (sizeof(char *)));
+                       if (!new_list)
+                         {
+                            free(list_ret);
+
+                            goto on_error;
+                         }
+
+                       list_ret = new_list;
+                    }
+
+                  /* put pointer of name string in */
+                  list_ret[list_count - 1] = efn->name;
+               }
+          }
      }
 
    UNLOCK_FILE(ef);
 
    /* return count and list */
    if (count_ret)
-     *count_ret = list_count;
+      *count_ret = list_count;
 
    return list_ret;
 
- on_error:
+on_error:
    UNLOCK_FILE(ef);
 
    if (count_ret)
-     *count_ret = 0;
+      *count_ret = 0;
 
    return NULL;
-}
+} /* eet_list */
 
 EAPI int
 eet_num_entries(Eet_File *ef)
@@ -2078,7 +2511,7 @@ eet_num_entries(Eet_File *ef)
    if (eet_check_pointer(ef) || eet_check_header(ef) ||
        ((ef->mode != EET_FILE_MODE_READ) &&
         (ef->mode != EET_FILE_MODE_READ_WRITE)))
-     return -1;
+      return -1;
 
    LOCK_FILE(ef);
 
@@ -2086,17 +2519,18 @@ eet_num_entries(Eet_File *ef)
    num = (1 << ef->header->directory->size);
    for (i = 0; i < num; i++)
      {
-       for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
-         ret++;
+        for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
+           ret++;
      }
 
    UNLOCK_FILE(ef);
 
    return ret;
-}
+} /* eet_num_entries */
 
 static Eet_File_Node *
-find_node_by_name(Eet_File *ef, const char *name)
+find_node_by_name(Eet_File   *ef,
+                  const char *name)
 {
    Eet_File_Node *efn;
    int hash;
@@ -2106,34 +2540,42 @@ find_node_by_name(Eet_File *ef, const char *name)
 
    for (efn = ef->header->directory->nodes[hash]; efn; efn = efn->next)
      {
-       if (eet_string_match(efn->name, name))
-         return efn;
+        if (eet_string_match(efn->name, name))
+           return efn;
      }
 
    return NULL;
-}
+} /* find_node_by_name */
 
 static int
-read_data_from_disk(Eet_File *ef, Eet_File_Node *efn, void *buf, int len)
+read_data_from_disk(Eet_File      *ef,
+                    Eet_File_Node *efn,
+                    void          *buf,
+                    int            len)
 {
-   if (efn->offset < 0) return 0;
+   if (efn->offset < 0)
+      return 0;
 
    if (ef->data)
      {
-       if ((efn->offset + len) > ef->data_size) return 0;
-       memcpy(buf, ef->data + efn->offset, len);
+        if ((efn->offset + len) > ef->data_size)
+           return 0;
+
+        memcpy(buf, ef->data + efn->offset, len);
      }
    else
      {
-       if (!ef->readfp)
-         return 0;
+        if (!ef->readfp)
+           return 0;
 
-       /* seek to data location */
-       if (fseek(ef->readfp, efn->offset, SEEK_SET) < 0)
-         return 0;
+        /* seek to data location */
+        if (fseek(ef->readfp, efn->offset, SEEK_SET) < 0)
+           return 0;
 
-       /* read it */
-       len = fread(buf, len, 1, ef->readfp);
+        /* read it */
+        len = fread(buf, len, 1, ef->readfp);
      }
+
    return len;
-}
+} /* read_data_from_disk */
+