early check of the open mode, slightly more efficient
authortsauerbeck <tsauerbeck>
Wed, 12 Jan 2005 19:59:11 +0000 (19:59 +0000)
committertsauerbeck <tsauerbeck@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 12 Jan 2005 19:59:11 +0000 (19:59 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/e17/libs/eet@12933 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eet_lib.c

index 06d45bd..6f8d952 100644 (file)
@@ -1,3 +1,7 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
 #include "Eet.h"
 #include "Eet_private.h"
 
@@ -963,13 +967,16 @@ eet_write(Eet_File *ef, char *name, void *data, int size, int compress)
 int
 eet_delete(Eet_File *ef, char *name)
 {
-   int hash, node_size;
+   int hash, node_size, i;
    int exists_already = 0;
    
    /* check to see its' an eet file pointer */   
    if ((!ef) || (ef->magic != EET_MAGIC_FILE) || (!name))
      return 0;
 
+   /* deleting keys is only possible in RW mode */
+   if (ef->mode != EET_FILE_MODE_RW) return 0;
+
    if (!ef->header) return 0;
    
    /* figure hash bucket */
@@ -977,22 +984,18 @@ eet_delete(Eet_File *ef, char *name)
    node_size = ef->header->directory->hash[hash].size;
    
    /* Does this node already exist? */
-   if (ef->mode == EET_FILE_MODE_RW)
+   for (i = 0; i < node_size; i++)
      {
-       int i;
-       for (i = 0; i < node_size; i++)
+       /* if it matches */
+       if (eet_string_match(ef->header->directory->hash[hash].node[i].name, name))
          {
-            /* if it matches */
-            if (eet_string_match(ef->header->directory->hash[hash].node[i].name, name))
-              {
-                 free(ef->header->directory->hash[hash].node[i].data);
-                 ef->header->directory->hash[hash].node[i].compression = -1;
-                 ef->header->directory->hash[hash].node[i].size = 0;
-                 ef->header->directory->hash[hash].node[i].data_size = 0;
-                 ef->header->directory->hash[hash].node[i].data = NULL;
-                 exists_already = 1;
-                 break;
-              }
+            free(ef->header->directory->hash[hash].node[i].data);
+            ef->header->directory->hash[hash].node[i].compression = -1;
+            ef->header->directory->hash[hash].node[i].size = 0;
+            ef->header->directory->hash[hash].node[i].data_size = 0;
+            ef->header->directory->hash[hash].node[i].data = NULL;
+            exists_already = 1;
+            break;
          }
      }
    /* flags that writes are pending */