Enlightenment CVS committal

Author  : onefang
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_desktop


Modified Files:
        Ecore_Desktop.h ecore_desktop.c ecore_desktop_menu.c 


Log Message:
Separate the exe from its parameters.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/Ecore_Desktop.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- Ecore_Desktop.h     5 Sep 2006 17:54:20 -0000       1.22
+++ Ecore_Desktop.h     7 Sep 2006 08:51:47 -0000       1.23
@@ -45,6 +45,7 @@
    char               *type;
    char               *categories;
    char               *exec;
+   char               *exec_params;
    char               *icon;
    char               *icon_class;
    char               *icon_path;
@@ -149,6 +150,8 @@
    Ecore_Hash         *ecore_desktop_ini_get(const char *file);
    Ecore_Desktop      *ecore_desktop_get(const char *file, const char *lang);
    void                ecore_desktop_save(Ecore_Desktop * desktop);
+   EAPI char *         ecore_desktop_get_command(Ecore_Desktop *desktop, 
Ecore_List *files, int fill);
+   EAPI char *         ecore_desktop_merge_command(char *exec, char *params);
    void                ecore_desktop_destroy(Ecore_Desktop * desktop);
 
 
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- ecore_desktop.c     4 Sep 2006 15:20:27 -0000       1.26
+++ ecore_desktop.c     7 Sep 2006 08:51:47 -0000       1.27
@@ -246,8 +246,17 @@
 
                       result->exec =
                          (char *)ecore_hash_get(result->group, "Exec");
-// FIXME: Handle the fdo %x replacable params.  Some should be stripped, some 
should be expanded.
-                       exe = result->exec;
+                      if (result->exec)
+                         {
+                             exe = strchr(result->exec, ' ');
+                            if (exe)
+                               {
+                                  *exe = '\0';
+                                  result->exec_params = ++exe;
+                               }
+                             exe = result->exec;
+                          }
+
                       value =
                          (char *)ecore_hash_get(result->group,
                                                 "StartupWMClass");
@@ -469,6 +478,8 @@
 void
 ecore_desktop_save(Ecore_Desktop * desktop)
 {
+   char *temp;
+
    if (!desktop->group)
       {
          desktop->group = ecore_hash_new(ecore_str_hash, ecore_str_compare);
@@ -495,13 +506,15 @@
                  }
            }
 
+         temp = ecore_desktop_get_command(desktop, NULL, 0);
+        if (temp)
+            ecore_hash_set(desktop->group, strdup("Exec"), temp);
          if (desktop->name)   ecore_hash_set(desktop->group, strdup("Name"), 
strdup(desktop->name));
          if (desktop->generic)   ecore_hash_set(desktop->group, 
strdup("GenericName"), strdup(desktop->generic));
          if (desktop->comment)   ecore_hash_set(desktop->group, 
strdup("Comment"), strdup(desktop->comment));
          if (desktop->type)   ecore_hash_set(desktop->group, strdup("Type"), 
strdup(desktop->type));
          if (desktop->URL)   ecore_hash_set(desktop->group, strdup("URL"), 
strdup(desktop->URL));
          if (desktop->file)   ecore_hash_set(desktop->group, strdup("File"), 
strdup(desktop->file));
-         if (desktop->exec)   ecore_hash_set(desktop->group, strdup("Exec"), 
strdup(desktop->exec));
          if (desktop->icon)   ecore_hash_set(desktop->group, strdup("Icon"), 
strdup(desktop->icon));
          if (desktop->icon_class)   ecore_hash_set(desktop->group, 
strdup("X-Enlightenment-IconClass"), strdup(desktop->icon_class));
          if (desktop->icon_path)   ecore_hash_set(desktop->group, 
strdup("X-Enlightenment-IconPath"), strdup(desktop->icon_path));
@@ -686,3 +699,54 @@
    return strdup(home);
 }
 
+EAPI char *
+ecore_desktop_get_command(Ecore_Desktop *desktop, Ecore_List *files, int fill)
+{
+   char *result = NULL, *params = NULL;
+
+   if (fill && (desktop->exec_params))
+      {
+         /* FIXME: Handle the fdo %x replacable params.  Some should be 
stripped, some should be expanded. */
+         params = strdup(desktop->exec_params);
+      }
+   else if (desktop->exec_params)
+      params = strdup(desktop->exec_params);
+
+   result = ecore_desktop_merge_command(desktop->exec, params);
+
+   if (params)
+      free(params);
+   return result;
+}
+
+
+EAPI char *
+ecore_desktop_merge_command(char *exec, char *params)
+{
+   int size;
+   char *end, *result = NULL;
+
+   if ((exec) && (params))
+      {
+         size = strlen(exec);
+         end = exec + size;
+         /* Two possibilities, it was just split at the space, or it was setup 
seperatly. */
+         if (params == (end + 1))
+            {
+               *end = ' ';
+               result = strdup(exec);
+              *end = '\0';
+            }
+         else
+            {
+               size += strlen(params) + 2;
+              result = malloc(size);
+              if (result)
+                 sprintf(result, "%s %s", exec, params);
+            }
+      }
+   else if (exec)
+      result = strdup(exec);
+
+   return result;
+}
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- ecore_desktop_menu.c        6 Sep 2006 05:22:32 -0000       1.16
+++ ecore_desktop_menu.c        7 Sep 2006 08:51:47 -0000       1.17
@@ -133,24 +133,16 @@
 
    if (menu_file)
       {
-//         char *path;
-            
-//      path = ecore_file_get_dir(menu_file);
-//      if (path)
-           {
-              Ecore_Desktop_Tree *menus;
+         Ecore_Desktop_Tree *menus;
                  
-              /* convert the xml into menus */
-              menus = ecore_desktop_menu_get(menu_file);
-              if (menus)
-                 {
-                    /* create the .desktop and order files from the menu */
-                    ecore_desktop_tree_foreach(menus, 0, 
_ecore_desktop_menu_make_apps, func);
+        /* convert the xml into menus */
+        menus = ecore_desktop_menu_get(menu_file);
+        if (menus)
+           {
+              /* create the .desktop and order files from the menu */
+              ecore_desktop_tree_foreach(menus, 0, 
_ecore_desktop_menu_make_apps, func);
 // FIXME: Can't free this just yet, causes major memory corruption.
-//                  ecore_desktop_tree_del(menus);
-                 }
-//            free(path);
-              
+//              ecore_desktop_tree_del(menus);
            }
         free(menu_file);
       }



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to