added eet_num_entries()
authortsauerbeck <tsauerbeck>
Fri, 15 Jul 2005 20:37:29 +0000 (20:37 +0000)
committertsauerbeck <tsauerbeck@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 15 Jul 2005 20:37:29 +0000 (20:37 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/e17/libs/eet@15785 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/Eet.h
src/lib/eet_lib.c

index 9f4923f..c79a436 100644 (file)
@@ -243,6 +243,14 @@ extern "C" {
     */
    EAPI char    **eet_list  (Eet_File *ef, char *glob, int *count_ret);
 
+   /**
+    * Return the number of entries in the specified eet file.
+    * @param ef A valid eet file handle.
+    * @return Number of entries in ef or -1 if the number of entries
+    *         cannot be read due to open mode restrictions.
+    */
+   EAPI int       eet_num_entries(Eet_File *ef);
+
 /***************************************************************************/
 
    /**
index a60442d..95c11db 100644 (file)
@@ -1040,6 +1040,34 @@ eet_list(Eet_File *ef, char *glob, int *count_ret)
    return list_ret;
 }
 
+int
+eet_num_entries(Eet_File *ef)
+{
+   int i, num, ret = 0;
+   Eet_File_Node *efn;
+
+   /* check to see its' an eet file pointer */
+   if ((!ef) || (ef->magic != EET_MAGIC_FILE) ||
+       (!ef->header) || (!ef->header->directory) ||
+       ((ef->mode != EET_FILE_MODE_READ) &&
+        (ef->mode != EET_FILE_MODE_READ_WRITE)))
+     {
+       return -1;
+     }
+
+   /* loop through all entries */
+   num = (1 << ef->header->directory->size);
+   for (i = 0; i < num; i++)
+     {
+       for (efn = ef->header->directory->nodes[i]; efn; efn = efn->next)
+         {
+            ret++;
+         }
+     }
+
+   return ret;
+}
+
 int eet_init(void)
 {
    return ++eet_initcount;