Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_apps.c e_utils.c e_utils.h 


Log Message:


handle spaces in eap filenames when editing, and proeprly escape things, add
gneric escaper, and reduce file path of icon files nicely.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_apps.c,v
retrieving revision 1.132
retrieving revision 1.133
diff -u -3 -r1.132 -r1.133
--- e_apps.c    13 May 2006 14:57:20 -0000      1.132
+++ e_apps.c    13 May 2006 15:20:15 -0000      1.133
@@ -1419,7 +1419,7 @@
 static int
 _e_app_new_save(E_App *a)
 {
-   static char tmpn[1024];
+   static char tmpn[4096];
    int fd = 0, ret = 0;
    char cmd[2048];  
    char ipart[512];
@@ -1446,20 +1446,13 @@
      }
    
    i = 0;
-   
    if (a->image)
      {
        start = strchr(a->image, '/');
-       end = strrchr(a->image ,'/');
+       end = strrchr(a->image, '/');
 
-       if (start == end)
-         {
-            imgdir = strdup("/");;
-         }
-       else if ((!start) || (!end))
-         {
-            imgdir = strdup("");
-         }
+       if (start == end) imgdir = strdup("/");
+       else if ((!start) || (!end)) imgdir = strdup("");
        else
          {
             imgdir = malloc((end - start + 1));
@@ -1473,24 +1466,27 @@
 
    if (imgdir)
      {
-       snprintf(ipart, sizeof(ipart), "-id %s", imgdir);
+       snprintf(ipart, sizeof(ipart), "-id %s",
+                e_util_filename_escape(imgdir));
        free(imgdir);
      }
-   else ipart[0] = '\0';
+   else ipart[0] = 0;
    
    if (a->image)
      {
-       if (a->width <= 0)
-         a->width = EAP_MIN_WIDTH;
-       if (a->height <= 0)
-         a->height = EAP_MIN_HEIGHT;
-       fprintf(out, EAP_EDC_TMPL, a->image, a->width, a->height, a->image);
+       if (a->width <= 0) a->width = EAP_MIN_WIDTH;
+       if (a->height <= 0) a->height = EAP_MIN_HEIGHT;
+       fprintf(out, EAP_EDC_TMPL, 
+               e_util_filename_escape(ecore_file_get_file(a->image)), 
+               a->width, a->height, 
+               e_util_filename_escape(ecore_file_get_file(a->image)));
      }
    else
      fprintf(out, EAP_EDC_TMPL_EMPTY);
    fclose(out);
    
-   snprintf(cmd, sizeof(cmd), "edje_cc -v %s %s %s", ipart, tmpn, a->path);
+   snprintf(cmd, sizeof(cmd), "edje_cc -v %s %s %s", ipart, tmpn, 
+           e_util_filename_escape(a->path));
    ret = system(cmd);
    
    if (ret < 0)
@@ -1500,7 +1496,7 @@
        return 0;
      }
    
-   unlink(tmpn);
+   ecore_file_unlink(tmpn);
    return 1;   
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- e_utils.c   30 Apr 2006 04:31:42 -0000      1.41
+++ e_utils.c   13 May 2006 15:20:15 -0000      1.42
@@ -527,6 +527,38 @@
    e_dialog_show(dia);
 }
 
+EAPI const char *
+e_util_filename_escape(const char *filename)
+{
+   char *p, *q;
+   static char buf[4096];
+   
+   p = filename;
+   q = buf;
+   while (*p)
+     {
+       if ((q - buf) > 4090) return NULL;
+       if (
+           (*p == ' ') || (*p == '\t') || (*p == '\n') ||
+           (*p == '\\') || (*p == '\'') || (*p == '\"') ||
+           (*p == ';') || (*p == '!') || (*p == '#') ||
+           (*p == '$') || (*p == '%') || (*p == '&') ||
+           (*p == '*') || (*p == '(') || (*p == ')') ||
+           (*p == '[') || (*p == ']') || (*p == '{') ||
+           (*p == '}') || (*p == '|') || (*p == '<') ||
+           (*p == '>') || (*p == '?')
+           )
+         {
+            *q = '\\';
+            q++;
+         }
+       *q = *p;
+       q++;
+       p++;
+     }
+   return buf;
+}
+
 /* local subsystem functions */
 static void
 _e_util_container_fake_mouse_up_cb(void *data)
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_utils.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- e_utils.h   2 Mar 2006 12:03:48 -0000       1.22
+++ e_utils.h   13 May 2006 15:20:15 -0000      1.23
@@ -39,6 +39,7 @@
 EAPI E_Border    *e_util_desk_border_below(E_Border *bd);
 EAPI int          e_util_edje_collection_exists(const char *file, const char 
*coll);
 EAPI void         e_util_dialog_internal(const char *title, const char *txt);
-    
+EAPI const char  *e_util_filename_escape(const char *filename);
+
 #endif
 #endif




-------------------------------------------------------
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