more patches...
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 15 May 2009 11:47:39 +0000 (11:47 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 15 May 2009 11:47:39 +0000 (11:47 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@40669 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/efreet_desktop.c
src/lib/efreet_desktop.h

index 6d2ef4c..72aaf1f 100644 (file)
@@ -429,7 +429,7 @@ efreet_desktop_save(Efreet_Desktop *desktop)
     Efreet_Ini *ini;
     int ok = 1;
 
-    ini = efreet_ini_new(desktop->orig_path);
+    ini = efreet_ini_new(NULL);
     efreet_ini_section_add(ini, "Desktop Entry");
     efreet_ini_section_set(ini, "Desktop Entry");
 
@@ -1838,3 +1838,48 @@ efreet_desktop_command_path_absolute(const char *path)
     /* just dup an already absolute buffer */
     return strdup(path);
 }
+
+EAPI Eina_Bool
+efreet_desktop_x_field_set(Efreet_Desktop *desktop, const char *key, const char *data)
+{
+   if (!desktop || strncmp(key, "X-", 2))
+      return EINA_FALSE;
+
+   if (!desktop->x)
+     desktop->x = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del));
+   
+   eina_hash_del(desktop->x, key, NULL);
+   eina_hash_add(desktop->x, key, eina_stringshare_add(data));
+   
+   return EINA_TRUE;
+}
+
+EAPI const char *
+efreet_desktop_x_field_get(Efreet_Desktop *desktop, const char *key)
+{
+   const char *ret;
+   
+   if (!desktop || strncmp(key, "X-", 2))
+      return NULL;
+   
+   if (!desktop->x)
+      return NULL;
+   
+   ret = eina_hash_find(desktop->x, key);
+   if (!ret)
+      return NULL;
+   
+   return eina_stringshare_add(ret);
+}
+
+EAPI Eina_Bool
+efreet_desktop_x_field_del(Efreet_Desktop *desktop, const char *key)
+{
+   if (!desktop || strncmp(key, "X-", 2))
+      return EINA_FALSE;
+   
+   if (!desktop->x)
+      return EINA_FALSE;
+   
+   return eina_hash_del(desktop->x, key, NULL);
+}
index f301463..c3ca2b4 100644 (file)
@@ -136,6 +136,10 @@ EAPI void             *efreet_desktop_type_data_get(Efreet_Desktop *desktop);
 EAPI Eina_List        *efreet_desktop_string_list_parse(const char *string);
 EAPI char             *efreet_desktop_string_list_join(Eina_List *list);
 
+EAPI Eina_Bool         efreet_desktop_x_field_set(Efreet_Desktop *desktop, const char *key, const char *data);
+EAPI const char *      efreet_desktop_x_field_get(Efreet_Desktop *desktop, const char *key);
+EAPI Eina_Bool         efreet_desktop_x_field_del(Efreet_Desktop *desktop, const char *key);
+
 EAPI void              efreet_desktop_cache_flush(void);
 
 /**