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

Reply via email to