Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_font.c e_font.h e_ipc.c e_remote_main.c 


Log Message:


shorne's cleanups

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_font.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_font.c    13 Apr 2005 06:03:49 -0000      1.3
+++ e_font.c    22 Apr 2005 04:25:51 -0000      1.4
@@ -8,17 +8,12 @@
  * - use e_path to search for available fonts
  */
 
-static Evas_List *_e_font_defaults = NULL;     /* MRU <E_Font_Default> */
-static Evas_List *_e_font_fallbacks = NULL;    /* <E_Font_Fallback> */
-
 static Evas_List *_e_font_font_dir_available_get (Evas_List * available_fonts, 
const char *font_dir);
 
 int
 e_font_init(void)
 {
-   /* just get the pointers into the config */
-   _e_font_defaults = e_config->font_defaults;
-   _e_font_fallbacks = e_config->font_fallbacks;
+   /* all init stuff is in e_config */
    return 1;
 }
 
@@ -38,7 +33,7 @@
    E_Font_Default *efd;
    
    /* setup edje fallback list */
-   next = _e_font_fallbacks;
+   next = e_config->font_fallbacks;
    if (next)
      {
        eff = evas_list_data(next);
@@ -62,12 +57,10 @@
      edje_fontset_append_set(buf);
    
    /* setup edje text classes */
-   next = _e_font_defaults;
-   while (next)
+   for(next = e_config->font_defaults; next; next = evas_list_next(next))
      {
        efd = evas_list_data(next);
        edje_text_class_set(efd->text_class, efd->font, efd->size);
-       next = evas_list_next(next);
      }
 }
 
@@ -86,32 +79,30 @@
 void
 e_font_available_list_free(Evas_List * available)
 {
-   char *font_name;
-   Evas_List *l;
+   E_Font_Available *efa;
    
-   for (l = available; l; l = l->next)
+   while(available)
      {
-       font_name = evas_list_data(l);
-       available = evas_list_remove(available, l);
-       free(font_name);
+       efa = available->data;
+       available = evas_list_remove_list(available, available);
+       E_FREE(efa->name);
+       E_FREE(efa);    
      }
 }
 
 void
 e_font_fallback_clear(void)
 {
-   Evas_List *next;
+   E_Font_Fallback *eff;
    
-   next = _e_font_fallbacks;
-   while (next)
-     {
-       E_Font_Fallback *eff;
-       
-       eff = evas_list_data(next);
-       _e_font_fallbacks = evas_list_remove_list(_e_font_fallbacks, next);
+   while(e_config->font_fallbacks)
+     { 
+       eff = e_config->font_fallbacks->data;
+       e_config->font_fallbacks = evas_list_remove_list(
+                                       e_config->font_fallbacks, 
+                                       e_config->font_fallbacks);
        E_FREE(eff->name);
        E_FREE(eff);
-       next = evas_list_next(next);
     }
 }
 
@@ -124,7 +115,7 @@
    
    eff = E_NEW(E_Font_Fallback, 1);
    eff->name = strdup(font);
-   _e_font_fallbacks = evas_list_append(_e_font_fallbacks, eff);
+   e_config->font_fallbacks = evas_list_append(e_config->font_fallbacks, eff);
 }
 
 void
@@ -136,35 +127,34 @@
    
    eff = E_NEW(E_Font_Fallback, 1);
    eff->name = strdup(font);
-   _e_font_fallbacks = evas_list_prepend(_e_font_fallbacks, eff);
+   e_config->font_fallbacks = evas_list_prepend(e_config->font_fallbacks, eff);
 }
 
 void
 e_font_fallback_remove(const char *font)
 {
    Evas_List *next;
-   
-   next = _e_font_fallbacks;
-   while (next)
+
+   for(next = e_config->font_fallbacks; next; next = evas_list_next(next))
      {
        E_Font_Fallback *eff;
        
        eff = evas_list_data(next);
        if (!strcmp(eff->name, font))
          {
-            _e_font_fallbacks = evas_list_remove_list(_e_font_fallbacks, next);
+            e_config->font_fallbacks = evas_list_remove_list(
+                                       e_config->font_fallbacks, next);
             E_FREE(eff->name);
             E_FREE(eff);
             break;
          }
-       next = evas_list_next(next);
      }
 }
 
 Evas_List *
 e_font_fallback_list(void)
 {
-   return _e_font_fallbacks;
+   return e_config->font_fallbacks;
 }
 
 void
@@ -174,8 +164,7 @@
    Evas_List *next;
 
    /* search for the text class */
-   next = _e_font_defaults;
-   while (next)
+   for(next = e_config->font_defaults; next; next = evas_list_next(next))
      {
        efd = evas_list_data(next);
        if (!strcmp(efd->text_class, text_class))
@@ -184,11 +173,12 @@
             efd->font = strdup(font);
             efd->size = size;
             /* move to the front of the list */
-            _e_font_defaults = evas_list_remove_list(_e_font_defaults, next);
-            _e_font_defaults = evas_list_prepend(_e_font_defaults, efd);
+            e_config->font_defaults = evas_list_remove_list(
+                                       e_config->font_defaults, next);
+            e_config->font_defaults = evas_list_prepend(
+                                       e_config->font_defaults, efd);
             return;
          }
-       next = evas_list_next(next);
      }
 
    /* the text class doesnt exist */
@@ -197,7 +187,7 @@
    efd->font = strdup(font);
    efd->size = size;
    
-   _e_font_defaults = evas_list_prepend(_e_font_defaults, efd);
+   e_config->font_defaults = evas_list_prepend(e_config->font_defaults, efd);
 }
 
 /*
@@ -210,18 +200,18 @@
    Evas_List *next;
 
    /* search for the text class */
-   next = _e_font_defaults;
-   while (next)
+   for(next = e_config->font_defaults; next; next = evas_list_next(next))
      {
        efd = evas_list_data(next);
        if (!strcmp(efd->text_class, text_class))
          {
             /* move to the front of the list */
-            _e_font_defaults = evas_list_remove_list(_e_font_defaults, next);
-            _e_font_defaults = evas_list_prepend(_e_font_defaults, efd);
+            e_config->font_defaults = evas_list_remove_list(
+                                       e_config->font_defaults, next);
+            e_config->font_defaults = evas_list_prepend(
+                                       e_config->font_defaults, efd);
             return efd;
          }
-       next = evas_list_next(next);
      }
    return NULL;
 }
@@ -233,26 +223,25 @@
    Evas_List *next;
    
    /* search for the text class */
-   next = _e_font_defaults;
-   while (next)
+   for(next = e_config->font_defaults; next; next = evas_list_next(next))
      {
        efd = evas_list_data(next);
        if (!strcmp(efd->text_class, text_class))
          {
-            _e_font_defaults = evas_list_remove_list(_e_font_defaults, next);
+            e_config->font_defaults = evas_list_remove_list(
+                                       e_config->font_defaults, next);
             E_FREE(efd->text_class);
             E_FREE(efd->font);
             E_FREE(efd);
             return;
          }
-       next = evas_list_next(next);
     }
 }
 
 Evas_List *
 e_font_default_list(void)
 {
-   return _e_font_defaults;
+   return e_config->font_defaults;
 }
 
 static Evas_List *
@@ -271,19 +260,25 @@
        /* read font alias lines */
        while (fscanf(f, "%4090s %[^\n]\n", fname, fdef) == 2)
          {
+            E_Font_Available *efa;
+            
             /* skip comments */
             if ((fdef[0] == '!') || (fdef[0] == '#'))
               continue;
             
             /* skip duplicates */
-            next = available_fonts;
-            while (next)
+            
+            for (next = available_fonts; next; next = evas_list_next(next))
               {
-                 if (!strcmp((char *)evas_list_data(next), fname))
-                   continue;
-                 next = evas_list_next(next);
+                 efa = (E_Font_Available *)evas_list_data(next);
+              
+                 if (!strcmp(efa->name, fname))
+                   continue;             
               }
-            available_fonts = evas_list_append(available_fonts, strdup(fname));
+               
+            efa = malloc(sizeof(E_Font_Available));
+            efa->name = strdup(fname);
+            available_fonts = evas_list_append(available_fonts, efa);
          }
        fclose (f);
      }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_font.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_font.h    2 Apr 2005 17:11:04 -0000       1.1
+++ e_font.h    22 Apr 2005 04:25:51 -0000      1.2
@@ -5,6 +5,7 @@
 
 typedef struct _E_Font_Default E_Font_Default;
 typedef struct _E_Font_Fallback E_Font_Fallback;
+typedef struct _E_Font_Fallback E_Font_Available;
 
 #else
 #ifndef E_FONT_H
@@ -14,7 +15,7 @@
 {
    char * text_class;
    char * font;
-   int size;
+   int    size;
 };
 
 struct _E_Font_Fallback
@@ -22,6 +23,11 @@
    char * name;
 };
 
+struct _E_Font_Available
+{
+   char * name;
+};
+
 EAPI int               e_font_init(void);
 EAPI int               e_font_shutdown(void);
 EAPI void              e_font_apply(void);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- e_ipc.c     21 Apr 2005 17:02:18 -0000      1.13
+++ e_ipc.c     22 Apr 2005 04:25:51 -0000      1.14
@@ -5,6 +5,15 @@
 static int _e_ipc_cb_client_del(void *data, int type, void *event);
 static int _e_ipc_cb_client_data(void *data, int type, void *event);
 static char *_e_ipc_path_str_get(char **paths, int *bytes);
+static char *_e_ipc_simple_str_dec(char *data, int bytes);
+static char **_e_ipc_multi_str_dec(char *data, int bytes, int str_count);
+
+/* encode functions, Should these be global? */
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_module_list_enc);
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_available_list_enc);
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_fallback_list_enc);
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_default_list_enc);
+ECORE_IPC_ENC_STRUCT_PROTO(_e_ipc_font_default_enc);
 
 /* local subsystem globals */
 static Ecore_Ipc_Server *_e_ipc_server  = NULL;
@@ -76,9 +85,8 @@
          {
             char *name;
             
-            name = malloc(e->size + 1);
-            name[e->size] = 0;
-            memcpy(name, e->data, e->size);
+            name = _e_ipc_simple_str_dec(e->data, e->size);
+            
             if (!e_module_find(name))
               {
                  e_module_new(name);
@@ -92,9 +100,8 @@
             char *name;
             E_Module *m;
             
-            name = malloc(e->size + 1);
-            name[e->size] = 0;
-            memcpy(name, e->data, e->size);
+            name = _e_ipc_simple_str_dec(e->data, e->size);
+            
             if ((m = e_module_find(name)))
               {
                  if (e_module_enabled_get(m))
@@ -109,9 +116,8 @@
             char *name;
             E_Module *m;
             
-            name = malloc(e->size + 1);
-            name[e->size] = 0;
-            memcpy(name, e->data, e->size);
+            name = _e_ipc_simple_str_dec(e->data, e->size);
+            
             if ((m = e_module_find(name)))
               {
                  if (!e_module_enabled_get(m))
@@ -121,13 +127,12 @@
          }
        break;
       case E_IPC_OP_MODULE_DISABLE:
-         {
+         {      
             char *name;
             E_Module *m;
             
-            name = malloc(e->size + 1);
-            name[e->size] = 0;
-            memcpy(name, e->data, e->size);
+            name = _e_ipc_simple_str_dec(e->data, e->size);
+            
             if ((m = e_module_find(name)))
               {
                  if (e_module_enabled_get(m))
@@ -138,30 +143,15 @@
        break;
       case E_IPC_OP_MODULE_LIST:
          {
-            Evas_List *modules, *l;
+            /* encode module list (str,8-bit) */
+            Evas_List *modules;
+            char * data;
             int bytes;
-            E_Module *m;
-            char *data, *p;
-                 
-            bytes = 0;
-            modules = e_module_list();
-            for (l = modules; l; l = l->next)
-              {
-                 m = l->data;
-                 bytes += strlen(m->name) + 1 + 1;
-              }
-            data = malloc(bytes);
-            p = data;
-            for (l = modules; l; l = l->next)
-              {
-                 m = l->data;
-                 strcpy(p, m->name);
-                 p += strlen(m->name);
-                 *p = 0;
-                 p++;
-                 *p = e_module_enabled_get(m);
-                 p++;
-              }
+
+             modules = e_module_list();
+            data = _e_ipc_module_list_enc(modules, &bytes);
+            
+            /* send reply data */
             ecore_ipc_client_send(e->client,
                                   E_IPC_DOMAIN_REPLY,
                                   E_IPC_OP_MODULE_LIST_REPLY,
@@ -194,10 +184,9 @@
          {
             char *file;
             Evas_List *managers, *l;
+
+            file = _e_ipc_simple_str_dec(e->data, e->size);
             
-            file = malloc(e->size + 1);
-            file[e->size] = 0;
-            memcpy(file, e->data, e->size);
             E_FREE(e_config->desktop_default_background);
             e_config->desktop_default_background = file;
             
@@ -236,29 +225,13 @@
        break;
       case E_IPC_OP_FONT_AVAILABLE_LIST:
          {
-            Evas_List *fonts_available, *l;
+            /* encode font available list (str) */
+            Evas_List *fonts_available;
             int bytes;
-            char *font_name, *data, *p;
+            char *data;
                  
-            bytes = 0;
-            fonts_available = e_font_available_list();
-            printf("ipc font av: %d\n", fonts_available);
-            for (l = fonts_available; l; l = l->next)
-              {
-                 font_name = evas_list_data(l);
-                 bytes += strlen(font_name) + 1;
-              }
-
-            data = malloc(bytes);
-            p = data;
-            for (l = fonts_available; l; l = l->next)
-              {
-                 font_name = evas_list_data(l);
-                 strcpy(p, font_name);
-                 p += strlen(font_name);
-                 *p = 0;
-                 p++;
-              }
+            fonts_available = e_font_available_list();        
+            data = _e_ipc_font_available_list_enc(fonts_available, &bytes);    
       
             ecore_ipc_client_send(e->client,
                                   E_IPC_DOMAIN_REPLY,
                                   E_IPC_OP_FONT_AVAILABLE_LIST_REPLY,
@@ -282,9 +255,8 @@
       case E_IPC_OP_FONT_FALLBACK_APPEND:
          {
             char * font_name;
-            font_name = malloc(e->size + 1);
-            font_name[e->size] = 0;
-            memcpy(font_name, e->data, e->size);
+            
+            font_name = _e_ipc_simple_str_dec(e->data, e->size);
             e_font_fallback_append(font_name);
             free(font_name);
 
@@ -294,9 +266,8 @@
       case E_IPC_OP_FONT_FALLBACK_PREPEND:
          {
             char * font_name;
-            font_name = malloc(e->size + 1);
-            font_name[e->size] = 0;
-            memcpy(font_name, e->data, e->size);
+
+            font_name = _e_ipc_simple_str_dec(e->data, e->size);            
             e_font_fallback_prepend(font_name);
             free(font_name);      
                
@@ -305,28 +276,15 @@
        break;
       case E_IPC_OP_FONT_FALLBACK_LIST:
          {
-            Evas_List *fallbacks, *l;
+               
+            /* encode font fallback list (str) */
+            Evas_List *fallbacks;
             int bytes;
-            E_Font_Fallback *eff;
-            char *data, *p;
-                 
-            bytes = 0;
+            char *data;
+                
             fallbacks = e_font_fallback_list();
-            for (l = fallbacks; l; l = l->next)
-              {
-                 eff = evas_list_data(l);
-                 bytes += strlen(eff->name) + 1;
-              }
-            data = malloc(bytes);
-            p = data;
-            for (l = fallbacks; l; l = l->next)
-              {
-                 eff = evas_list_data(l);
-                 strcpy(p, eff->name);
-                 p += strlen(eff->name);
-                 *p = 0;
-                 p++;
-              }
+
+            data = _e_ipc_font_fallback_list_enc(fallbacks, &bytes);
             ecore_ipc_client_send(e->client,
                                   E_IPC_DOMAIN_REPLY,
                                   E_IPC_OP_FONT_FALLBACK_LIST_REPLY,
@@ -339,9 +297,8 @@
       case E_IPC_OP_FONT_FALLBACK_REMOVE:
          {
             char * font_name;
-            font_name = malloc(e->size + 1);
-            font_name[e->size] = 0;
-            memcpy(font_name, e->data, e->size);
+
+            font_name = _e_ipc_simple_str_dec(e->data, e->size);
             e_font_fallback_remove(font_name);
             free(font_name);        
 
@@ -350,75 +307,30 @@
        break;
       case E_IPC_OP_FONT_DEFAULT_SET:
          {
-            char * p;
-            char * font_name;
-            char * text_class;
-            int font_size;
-
+            char ** argv;
+            int i, argc;
             
-            p = e->data;
+            argc = 3;
+            
+            argv = _e_ipc_multi_str_dec(e->data, e->size, argc);
+            e_font_default_set(argv[0], argv[1], atoi(argv[2]));
+            free(argv);             
             
-            /* Make sure our data is packed for us <str>0<str>0 */
-            if( p[e->size - 1] != 0) {
-               break;
-            }
-
-            text_class = strdup(p);
-
-            p += strlen(text_class) + 1;
-            font_name = strdup(p);
-       
-            p += strlen(font_name) + 1;
-            font_size = atoi(p);
-
-            e_font_default_set(text_class, font_name, font_size);
-
-            free(font_name);
-            free(text_class);
-
             e_config_save_queue();
          }
        break;
       case E_IPC_OP_FONT_DEFAULT_GET:
          {
-            int bytes;
+         
+            /* encode font default struct (str,str,32-bits)(E_Font_Default) */ 
     
             E_Font_Default *efd;
-            char *data, *p, *text_class;
-            
-            text_class = malloc(e->size + 1);
-            text_class[e->size] = 0;
-            memcpy(text_class, e->data, e->size);
-            
-            efd = e_font_default_get (text_class);
+            char *data, *text_class;
+            int bytes;
             
+            text_class = _e_ipc_simple_str_dec(e->data, e->size);           
+            efd = e_font_default_get (text_class);          
             free(text_class);
-                 
-            bytes = 0;
-            if (efd) {
-                bytes += strlen(efd->text_class) + 1;
-                bytes += strlen(efd->font) + 1;
-                bytes++; /* efd->size */
-            }
-            
-            data = malloc(bytes);
-            p = data;
-            
-            if (efd) {
-                strcpy(p, efd->text_class);
-                 p += strlen(efd->text_class);
-                 *p = 0;
-                p++;
-            
-                strcpy(p, efd->font);
-                p += strlen(efd->font);
-                *p = 0;
-                p++;
-                 
-                 /* FIXME: should this be packed like this (int to char) ? */
-                *p = (char) efd->size;
-                p++;
-            }
-
+            data = _e_ipc_font_default_enc(efd, &bytes);
             ecore_ipc_client_send(e->client,
                                   E_IPC_DOMAIN_REPLY,
                                   E_IPC_OP_FONT_DEFAULT_GET_REPLY,
@@ -430,9 +342,8 @@
       case E_IPC_OP_FONT_DEFAULT_REMOVE:
          {       
             char * text_class;
-            text_class = malloc(e->size + 1);
-            text_class[e->size] = 0;
-            memcpy(text_class, e->data, e->size);
+            
+            text_class = _e_ipc_simple_str_dec(e->data, e->size);
             e_font_default_remove(text_class);
             free(text_class);     
 
@@ -441,37 +352,13 @@
        break;
       case E_IPC_OP_FONT_DEFAULT_LIST:
          {
-            Evas_List *defaults, *l;
+            /* encode font default struct list 
(str,str,32-bits)(E_Font_Default) */
+            Evas_List *defaults;
             int bytes;
-            E_Font_Default *efd;
-            char *data, *p;
+            char *data;
                  
-            bytes = 0;
             defaults = e_font_default_list();
-            for (l = defaults; l; l = l->next)
-              {
-                 efd = l->data;
-                 bytes += strlen(efd->text_class) + 1;
-                 bytes += strlen(efd->font) + 1;
-                 bytes++; /* efd->size */
-              }
-            data = malloc(bytes);
-            p = data;
-            for (l =defaults; l; l = l->next)
-              {
-                 efd = l->data;
-                 strcpy(p, efd->text_class);
-                 p += strlen(efd->text_class);
-                 *p = 0;
-                 p++;
-                 strcpy(p, efd->font);
-                 p += strlen(efd->font);
-                 *p = 0;
-                 p++;
-                 /* FIXME: should this be packed like this (int to char) ? */
-                 *p = (char) efd->size;
-                 p++;
-              }
+            data = _e_ipc_font_default_list_enc(defaults, &bytes);
             ecore_ipc_client_send(e->client,
                                   E_IPC_DOMAIN_REPLY,
                                   E_IPC_OP_FONT_DEFAULT_LIST_REPLY,
@@ -557,4 +444,115 @@
    return data;
 }
 
+/**
+ * Decode a simple string that was passed by an IPC client
+ *
+ * The returned string must be freed
+ */
+static char *
+_e_ipc_simple_str_dec(char *data, int bytes)
+{
+    char *str;
+    
+    str = malloc(bytes + 1);
+    str[bytes] = 0;
+    memcpy(str, data, bytes);
+    
+    return str;
+}
+
+/**
+ * Decode a list of strings and return an array, you need to pass
+ * the string count that you are expecting back.
+ *
+ * Strings are encoded <str>0<str>0...
+ *
+ * free up the array that you get back
+ */
+static char **
+_e_ipc_multi_str_dec(char *data, int bytes, int str_count)
+{
+    char ** str_array;
+    int i;
+ 
+    /* Make sure our data is packed for us <str>0<str>0 */
+    if( data[bytes - 1] != 0) {
+       return NULL;
+    }
+
+    str_array = malloc(sizeof(char *)*str_count);
+
+    for(i = 0; i < str_count; i++) 
+    {
+        str_array[i] = data;
+       data += strlen(str_array[i]) + 1;
+    }
+
+    return str_array;
+}
+
+
+/* list/struct encoding functions */
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_module_list_enc)
+{
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_START(E_Module);
+       ECORE_IPC_CNTS(name);
+       ECORE_IPC_CNT8();
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH();
+       int l1;
+       ECORE_IPC_SLEN(l1, name);
+       ECORE_IPC_PUTS(name, l1);
+       ECORE_IPC_PUT8(enabled);
+    ECORE_IPC_ENC_EVAS_LIST_FOOT();
+}
+
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_available_list_enc)
+{
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_START(E_Font_Available);
+       ECORE_IPC_CNTS(name);
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH();
+       int l1;
+       ECORE_IPC_SLEN(l1, name);
+       ECORE_IPC_PUTS(name, l1);
+    ECORE_IPC_ENC_EVAS_LIST_FOOT();
+}
+
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_fallback_list_enc)
+{
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_START(E_Font_Fallback);
+       ECORE_IPC_CNTS(name);
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH();
+       int l1;
+       ECORE_IPC_SLEN(l1, name);
+       ECORE_IPC_PUTS(name, l1);
+    ECORE_IPC_ENC_EVAS_LIST_FOOT();
+}
 
+ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_default_list_enc)
+{
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_START(E_Font_Default);
+       ECORE_IPC_CNTS(text_class);
+       ECORE_IPC_CNTS(font);
+       ECORE_IPC_CNT32();
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH();
+       int l1, l2;
+       ECORE_IPC_SLEN(l1, text_class);
+       ECORE_IPC_SLEN(l2, font);
+       ECORE_IPC_PUTS(text_class, l1);
+       ECORE_IPC_PUTS(font, l2);
+       ECORE_IPC_PUT32(size);
+    ECORE_IPC_ENC_EVAS_LIST_FOOT();
+}
+
+ECORE_IPC_ENC_STRUCT_PROTO(_e_ipc_font_default_enc)
+{
+   int l1, l2;
+   ECORE_IPC_ENC_STRUCT_HEAD(E_Font_Default, 
+       ECORE_IPC_SLEN(l1, text_class) +
+       ECORE_IPC_SLEN(l2, font) +
+       4);                
+   ECORE_IPC_PUTS(text_class, l1);
+   ECORE_IPC_PUTS(font, l2);
+   ECORE_IPC_PUT32(size);
+   ECORE_IPC_ENC_STRUCT_FOOT();
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_remote_main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_remote_main.c     14 Apr 2005 09:09:22 -0000      1.12
+++ e_remote_main.c     22 Apr 2005 04:25:51 -0000      1.13
@@ -27,6 +27,12 @@
 
 static void _e_help(void);
 
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_module_list_dec);
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_available_list_dec);
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_fallback_list_dec);
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_default_list_dec);
+ECORE_IPC_DEC_STRUCT_PROTO(_e_ipc_font_default_dec);
+
 /* local subsystem globals */
 static Ecore_Ipc_Server *_e_ipc_server  = NULL;
 static const char *display_name = NULL;
@@ -316,33 +322,23 @@
       case E_IPC_OP_MODULE_LIST_REPLY:
        if (e->data)
          {
-            char *p;
+            Evas_List *modules;
+            E_Module *m;
             
-            p = e->data;
-            while (p < (char *)(e->data + e->size))
+            modules = _e_ipc_module_list_dec(e->data, e->size);             
+            while(modules)
               {
-                 char *name;
-                 char  enabled;
-                 
-                 name = p;
-                 p += strlen(name);
-                 if (p < (char *)(e->data + e->size))
-                   {
-                      p++;
-                      if (p < (char *)(e->data + e->size))
-                        {
-                           enabled = *p;
-                           p++;
-                           printf("REPLY: MODULE NAME=\"%s\" ENABLED=%i\n",
-                                  name, (int)enabled);
-                        }
-                   }
+                  m = modules->data;
+                  printf("REPLY: MODULE NAME=\"%s\" ENABLED=%i\n",
+                                       m->name, m->enabled);
+                  modules = evas_list_remove_list(modules, modules);
+                  E_FREE(m);
               }
          }
        else
          printf("REPLY: MODULE NONE\n");
        break;
-       case E_IPC_OP_MODULE_DIRS_LIST_REPLY:
+       case E_IPC_OP_MODULE_DIRS_LIST_REPLY:
        if (e->data)
          {
             char *p;
@@ -366,7 +362,7 @@
       break;
       case E_IPC_OP_BG_DIRS_LIST_REPLY:
       if (e->data)
-       {
+       {       
           char *p;
  
           p = e->data;
@@ -383,21 +379,17 @@
       case E_IPC_OP_FONT_FALLBACK_LIST_REPLY:
        if (e->data)
          {
-            char *p;
+            Evas_List *fallbacks;
+            E_Font_Fallback *eff;
             
-            p = e->data;
-            while (p < (char *)(e->data + e->size))
-              {
-                 char *name;
-                 
-                 name = p;
-                 p += strlen(name);
-                 if (p < (char *)(e->data + e->size))
-                   {
-                       printf("REPLY: FALLBACK NAME=\"%s\"\n", name);
-                   }
-                 p++;
-              }
+            fallbacks = _e_ipc_font_fallback_list_dec(e->data, e->size);
+            while(fallbacks)
+               {
+                   eff = fallbacks->data;
+                   printf("REPLY: FALLBACK NAME=\"%s\"\n", eff->name);
+                   fallbacks = evas_list_remove_list(fallbacks, fallbacks);
+                   E_FREE(eff);
+               }
          }
        else
          printf("REPLY: FALLBACK NONE\n");
@@ -405,20 +397,17 @@
       case E_IPC_OP_FONT_AVAILABLE_LIST_REPLY:
         if (e->data)
           {
-             char *p;
-          
-             p = e->data;
-             while (p < (char *)(e->data + e->size))
-               {
-                 char *name;
-                 name = p;
-                 p += strlen(name);
-                 if (p < (char *)(e->data + e->size))
-                   {
-                       printf("REPLY: AVAILABLE NAME=\"%s\"\n", name);
-                   }
-                 p++;                      
-               }
+             Evas_List *available;
+            E_Font_Available *fa;
+       
+            available = _e_ipc_font_available_list_dec(e->data, e->size);
+            while(available)
+               {
+                   fa = available->data;
+                   printf("REPLY: AVAILABLE NAME=\"%s\"\n", fa->name);
+                   available = evas_list_remove_list(available, available);
+                   E_FREE(fa);
+               }
           }
         else
           printf("REPLY: AVAILABLE NONE\n"); 
@@ -426,27 +415,10 @@
       case E_IPC_OP_FONT_DEFAULT_GET_REPLY:
         if (e->data)
           {
-             char *text_class, *name;
-             char *p;
-            char size;
-            
-            p = e->data;
-                 
-            text_class = p;
-            p += strlen(text_class) + 1;
-            if (p < (char *)(e->data + e->size))
-              {
-                      name = p;
-                      p  += strlen(name) + 1;     
-                      if (p < (char *)(e->data + e->size))
-                        {
-                                size = *p;
-                                printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" 
NAME=\"%s\" SIZE=%i\n",
-                                  text_class, name, (int)size);
-                                p++;
-                         
-                        }
-              }
+             E_Font_Default efd;
+             _e_ipc_font_default_dec(e->data, e->size, &efd);
+             printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" NAME=\"%s\" SIZE=%d\n",
+                                  efd.text_class, efd.font, efd.size);
           }
         else
           printf("REPLY: DEFAULT NONE\n"); 
@@ -454,29 +426,18 @@
       case E_IPC_OP_FONT_DEFAULT_LIST_REPLY:
         if (e->data)
           {
-             char *text_class, *name;
-             char *p;
-            char size;
-            
-            p = e->data;
-               
-       while (p < (char *)(e->data + e->size))
-       {  
-            text_class = p;
-            p += strlen(text_class) + 1;
-            if (p < (char *)(e->data + e->size))
-              {
-                      name = p;
-                      p += strlen(name) + 1;
-                      if (p < (char *)(e->data + e->size))
-                        {
-                                size = *p;
-                                printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" 
NAME=\"%s\" SIZE=%i\n",
-                                  text_class, name, (int)size);
-                                p++;
-                        }
+             Evas_List *defaults;
+             E_Font_Default *efd;
+          
+             defaults = _e_ipc_font_default_list_dec(e->data, e->size);
+             while(defaults)
+               {
+                 efd = defaults->data;
+                 printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" NAME=\"%s\" 
SIZE=%d\n",
+                                  efd->text_class, efd->font, efd->size);  
+                  defaults = evas_list_remove_list(defaults, defaults);
+                 E_FREE(efd);
               }
-         }
           }
         else
           printf("REPLY: DEFAULT NONE\n"); 
@@ -532,3 +493,49 @@
        printf("  - %s\n", handler->desc);
      }
 }
+
+
+/* list/struct encoding functions */
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_module_list_dec)
+{
+    ECORE_IPC_DEC_EVAS_LIST_HEAD(E_Module);
+    ECORE_IPC_GETS(name);
+    ECORE_IPC_GET8(enabled);
+    ECORE_IPC_DEC_EVAS_LIST_FOOT();
+}
+
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_available_list_dec)
+{
+    ECORE_IPC_DEC_EVAS_LIST_HEAD(E_Font_Available);
+    ECORE_IPC_GETS(name);
+    ECORE_IPC_DEC_EVAS_LIST_FOOT();
+}
+
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_fallback_list_dec)
+{
+    ECORE_IPC_DEC_EVAS_LIST_HEAD(E_Font_Fallback);
+    ECORE_IPC_GETS(name);
+    ECORE_IPC_DEC_EVAS_LIST_FOOT();
+}
+
+ECORE_IPC_DEC_EVAS_LIST_PROTO(_e_ipc_font_default_list_dec)
+{
+    ECORE_IPC_DEC_EVAS_LIST_HEAD(E_Font_Default);
+    ECORE_IPC_GETS(text_class);
+    ECORE_IPC_GETS(font);
+    ECORE_IPC_GET32(size);
+    ECORE_IPC_DEC_EVAS_LIST_FOOT();
+}
+
+ECORE_IPC_DEC_STRUCT_PROTO(_e_ipc_font_default_dec)
+{  
+   ECORE_IPC_DEC_STRUCT_HEAD_MIN(E_Font_Default,
+              1 +
+              1 +
+              4);
+   ECORE_IPC_CHEKS();
+   ECORE_IPC_GETS(text_class);
+   ECORE_IPC_GETS(font);
+   ECORE_IPC_GET32(size);
+   ECORE_IPC_DEC_STRUCT_FOOT();
+}




-------------------------------------------------------
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://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to