Enlightenment CVS committal Author : andreas99 Project : e16 Module : tools
Dir : e16/tools/e16menuedit2/src Modified Files: e16menuedit2.c file.c file.h Log Message: e16menuedit2 try to autodetect the runnunig E version and if > 0.16.8 loads the new menu structure =================================================================== RCS file: /cvsroot/enlightenment/e16/tools/e16menuedit2/src/e16menuedit2.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e16menuedit2.c 5 Dec 2004 11:12:51 -0000 1.15 +++ e16menuedit2.c 5 Dec 2004 13:19:48 -0000 1.16 @@ -47,7 +47,7 @@ GtkWidget *main_statusbar; char app_dir[PATH_MAX]; char package[] = "librsvg-2.0"; - char good_version[] = "2.7.1"; + char librsvg_version[] = "2.7.1"; char *version; int i; char *pixmap_file; @@ -97,7 +97,7 @@ /* get librsvg version and check if good enough */ version = pkg_config_version (package); - librsvg_cmp = version_cmp (version, good_version); + librsvg_cmp = version_cmp (version, librsvg_version); g_free (version); print_statusbar (_("Menu successfully loaded!")); @@ -192,12 +192,15 @@ poptContext context; int option; char *emenu = NULL; + char *e_version_current; + int e_version_cmp; + char e_version[] = "0.16.8"; struct poptOption options[] = { {"emenu", 'e', POPT_ARG_STRING, &emenu, ARG_EMENU, - "Enlightenment menu dir...", + "Enlightenment menu dir (enlightenment or e16).", NULL}, {"version", 'v', POPT_ARG_NONE, NULL, ARG_VERSION, "show version", NULL}, POPT_AUTOHELP {NULL, '\0', 0, NULL, 0} @@ -222,8 +225,20 @@ if (emenu == NULL) { - emenu_path = malloc (strlen (".enlightenment") + 1); - strcpy (emenu_path, ".enlightenment"); + e_version_current = e16_version (); + e_version_cmp = version_cmp (e_version_current, e_version); + printf ("ver: %d", e_version_cmp); + + if (e_version_cmp >= 0) + { + emenu_path = malloc (strlen (E16_MENU) + 1); + strcpy (emenu_path, E16_MENU); + } + else + { + emenu_path = malloc (strlen (ENLIGHTENMENT_MENU) + 1); + strcpy (emenu_path, ENLIGHTENMENT_MENU); + } } else { @@ -240,8 +255,8 @@ else { g_print ("Sorry, the parameter 'emenu' has only state 'enlightenment'\n" - "for old directory before E-0.16.7.1 and 'e16' for new\n" - "direcory in '.e16/menus'\n"); + "for old menu structure and 'e16' for new direcory structure\n" + "in '.e16/menus' for E16 > 0.16.8.\n"); exit (0); } } =================================================================== RCS file: /cvsroot/enlightenment/e16/tools/e16menuedit2/src/file.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- file.c 5 Dec 2004 11:12:51 -0000 1.10 +++ file.c 5 Dec 2004 13:19:48 -0000 1.11 @@ -300,6 +300,43 @@ return strdup (buf); } +/* returns a version number of a pkg-config package + * the return char* could be freed after use + */ +char *e16_version () +{ + gboolean spawn; + const int buf_len = 1024; + gchar buf[buf_len]; + gchar *argv_child[4]; + gint stdout_child; + gint stderr_child; + int ret_val; + gchar buf2[buf_len]; + + argv_child[0] = g_strdup ("eesh"); + argv_child[1] = g_strdup ("-ewait"); + argv_child[2] = g_strdup ("ver");; + argv_child[3] = NULL; + + spawn = g_spawn_async_with_pipes (NULL, argv_child, NULL, + G_SPAWN_SEARCH_PATH, NULL, + NULL, NULL, NULL, + &stdout_child, &stderr_child, NULL); + + g_free (argv_child[0]); + g_free (argv_child[1]); + + ret_val = read (stdout_child, buf, buf_len); + + sscanf (buf, "Enlightenment-Version: enlightenment-%s\n", buf2); + + if (ret_val == 0) + return 0; + else + return strdup (buf2); +} + char *get_fallback_locale (char *locale) { char *locale_dup; =================================================================== RCS file: /cvsroot/enlightenment/e16/tools/e16menuedit2/src/file.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- file.h 10 Nov 2004 13:39:47 -0000 1.7 +++ file.h 5 Dec 2004 13:19:48 -0000 1.8 @@ -51,6 +51,7 @@ char *strsplit (char *s, char **right, int count); int version_cmp (char *ver1, char *ver2); char *pkg_config_version (char *package); +char *e16_version (); char *get_fallback_locale (char *locale); int run_help (char *help_app, char* help_dir, char *help_file); ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs