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 Log Message: ecore_desktop_get_command can now return a list of commands if it needs to. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/Ecore_Desktop.h,v retrieving revision 1.42 retrieving revision 1.43 diff -u -3 -r1.42 -r1.43 --- Ecore_Desktop.h 15 Oct 2006 23:08:53 -0000 1.42 +++ Ecore_Desktop.h 25 Oct 2006 10:22:42 -0000 1.43 @@ -209,7 +209,7 @@ 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, + EAPI Ecore_List *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.59 retrieving revision 1.60 diff -u -3 -r1.59 -r1.60 --- ecore_desktop.c 24 Oct 2006 14:20:03 -0000 1.59 +++ ecore_desktop.c 25 Oct 2006 10:22:42 -0000 1.60 @@ -505,6 +505,7 @@ void ecore_desktop_save(Ecore_Desktop * desktop) { + Ecore_List *commands; char *temp; int trash = 0; @@ -555,9 +556,16 @@ } } - temp = ecore_desktop_get_command(desktop, NULL, 0); - if (temp) - ecore_hash_set(desktop->group, strdup("Exec"), temp); + /* We are not passing a list of files, so we only expect one command. */ + commands = ecore_desktop_get_command(desktop, NULL, 0); + if (commands) + { + temp = ecore_list_first(commands); + if (temp) + ecore_hash_set(desktop->group, strdup("Exec"), strdup(temp)); + ecore_list_destroy(commands); + } + if (desktop->name) ecore_hash_set(desktop->group, strdup("Name"), strdup(desktop->name)); @@ -827,10 +835,11 @@ return strdup(home); } -EAPI char * +EAPI Ecore_List * ecore_desktop_get_command(Ecore_Desktop * desktop, Ecore_List * files, int fill) { - char *result = NULL, *params = NULL; + Ecore_List *result; + char *sub_result = NULL, *params = NULL; /* FIXME: for onefang * 1. handle a list of files. @@ -840,17 +849,22 @@ * is a path relative to cwd i.e. "file.png" or "blah/file.png" and * thus %d/%D would be ./ implicitly (but may need to be explicit * in the command line) - * 4. i spot lots of kde .desktops use %m (i assume %M exists too). find - * out what it is - if not known - i guess assume %f/%F * */ - if (fill && (desktop->exec_params)) + + result = ecore_list_new(); + if (!result) return NULL; + ecore_list_set_free_cb(result, free); + + if (desktop->exec_params) + params = strdup(desktop->exec_params); + if (fill) { Ecore_DList *command; char *p, *t, buf[PATH_MAX + 10]; int len = 0; - params = strdup(desktop->exec_params); + if (!params) params = strdup("%F"); if (!params) goto error; command = ecore_dlist_new(); if (!command) goto error; @@ -921,6 +935,9 @@ } break; + case 'm': /* Deprecated mini icon, the spec says we can just drop it. */ + break; + case 'v': /* Device field from .desktop file. */ break; @@ -958,10 +975,9 @@ } ecore_list_destroy(command); } - else if (desktop->exec_params) - params = strdup(desktop->exec_params); - result = ecore_desktop_merge_command(desktop->exec, params); + sub_result = ecore_desktop_merge_command(desktop->exec, params); + if (sub_result) ecore_list_append(result, sub_result); error: if (params) free(params); ------------------------------------------------------------------------- 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