Hallo,
in this patch is the e_fm_file_has_mime() function and it now gets used
instead of the bunch of strcmps. Probably e_fm_file_is_regular() shouldn
Âīt be exported. file->mime is now always lower case, so the programs
gets shown in open-with even if the extension has upper case. 

regards,
jeff


Index: e_fileman_file.c
===================================================================
RCS file: /root/e17/apps/e/src/bin/e_fileman_file.c,v
retrieving revision 1.1.1.5
diff -r1.1.1.5 e_fileman_file.c
77,83c77,87
< 	ext = strrchr(file->name, '.');
< 	if (ext)
< 	  {
< 	     file->mime = ext;
< 	  }
< 	else
< 	  file->mime = "unknown";
---
>   ext = strrchr(file->name, '.');
>   if (ext)
>     {
>        char *ext2;
>        ext = strdup(ext);
>        ext2 = ext;
>        for (; *ext2; ext2++) *ext2 = tolower(*ext2);
>        file->mime = ext;
>     }
>   else
>     file->mime = "unknown";
108,113c112,117
< 	free(file->path);
< 	file->path = strdup(path);
< 	free(file->name);
< 	file->name = strdup(name);
< 	D(("e_fm_file_rename: ok (%p) (%s)\n", file, name));
< 	return 1;
---
>   free(file->path);
>   file->path = strdup(path);
>   free(file->name);
>   file->name = strdup(name);
>   D(("e_fm_file_rename: ok (%p) (%s)\n", file, name));
>   return 1;
117,118c121,122
< 	D(("e_fm_file_rename: fail (%p) (%s)\n", file, name));
< 	return 0;
---
>   D(("e_fm_file_rename: fail (%p) (%s)\n", file, name));
>   return 0;
127,132c131,136
< 	free(file->path);
< 	file->path = NULL;
< 	free(file->name);
< 	file->name = NULL;
< 	D(("e_fm_file_delete: ok (%p) (%s)\n", file, file->name));
< 	return 1;
---
>   free(file->path);
>   file->path = NULL;
>   free(file->name);
>   file->name = NULL;
>   D(("e_fm_file_delete: ok (%p) (%s)\n", file, file->name));
>   return 1;
136,137c140,141
< 	D(("e_fm_file_delete: fail (%p) (%s)\n", file, file->name));
< 	return 0;
---
>   D(("e_fm_file_delete: fail (%p) (%s)\n", file, file->name));
>   return 0;
148,153c152,157
< 	free(file->path);
< 	file->path = strdup(name);
< 	free(file->name);
< 	file->name = strdup(ecore_file_get_file(name));
< 	D(("e_fm_file_copy: ok (%p) (%s)\n", file, name));
< 	return 1;
---
>   free(file->path);
>   file->path = strdup(name);
>   free(file->name);
>   file->name = strdup(ecore_file_get_file(name));
>   D(("e_fm_file_copy: ok (%p) (%s)\n", file, name));
>   return 1;
157,158c161,162
< 	D(("e_fm_file_copy: fail (%p) (%s)\n", file, name));
< 	return 0;
---
>   D(("e_fm_file_copy: fail (%p) (%s)\n", file, name));
>   return 0;
161a166,181
> int
> e_fm_file_is_regular(E_Fm_File *file) /* TODO: find better name */
> {
>    return ((file->type == E_FM_FILE_TYPE_FILE) 
>         || (file->type == E_FM_FILE_TYPE_SYMLINK)); 
> }
> 
> EAPI int
> e_fm_file_has_mime(E_Fm_File *file, char* mime)
> {
>    if (!file->mime) return 0;
> 
>    D(("e_fm_file_has_mime: (%p) : %s\n", file,file->mime));
>    return (!strcasecmp(file->mime, mime));
> }
> 
170c190
< 	E_Fm_File_Preview_Function func;
---
>   E_Fm_File_Preview_Function func;
172,174c192,194
< 	func = file->preview_funcs[i];
< 	if (func(file))
< 	  return 1;
---
>   func = file->preview_funcs[i];
>   if (func(file))
>     return 1;
186,195c206,212
<    char *ext;
< 
<    if ((file->type != E_FM_FILE_TYPE_FILE) && (file->type != E_FM_FILE_TYPE_SYMLINK)) return 0;
< 
<    ext = strrchr(file->name, '.');
<    if (!ext) return 0;
< 
<    D(("e_fm_file_is_image: (%p)\n", file));
<    return (!strcasecmp(ext, ".jpg")) || (!strcasecmp(ext, ".png")) ||
<      (!strcasecmp(ext, ".jpeg"));
---
>    
>    //D(("e_fm_file_is_image: (%p)\n", file));
>    
>    return e_fm_file_is_regular(file)
>         &&(e_fm_file_has_mime(file,".jpg") 
>         || e_fm_file_has_mime(file,".jpeg") 
>         || e_fm_file_has_mime(file,".png")); 
202d218
<    char        *ext;
205,210c221
<    if ((file->type != E_FM_FILE_TYPE_FILE) && (file->type != E_FM_FILE_TYPE_SYMLINK)) return 0;
< 
<    ext = strrchr(file->name, '.');
<    if (!ext) return 0;
< 
<    if (strcasecmp(ext, ".edj"))
---
>    if (!e_fm_file_is_regular(file) && !e_fm_file_has_mime(file,".edj"))
219,225c230,236
<      {
< 	if (!strcmp(l->data, "widgets/border/default/border"))
< 	  {
< 	     val = 1;
< 	     break;
< 	  }
<      }
---
>    {
>     if (!strcmp(l->data, "widgets/border/default/border"))
>     {
>        val = 1;
>        break;
>     }
>    }
234d244
<    char        *ext;
237,242c247
<    if ((file->type != E_FM_FILE_TYPE_FILE) && (file->type != E_FM_FILE_TYPE_SYMLINK)) return 0;
< 
<    ext = strrchr(file->name, '.');
<    if (!ext) return 0;
< 
<    if (strcasecmp(ext, ".edj"))
---
>    if (!e_fm_file_is_regular(file) && !e_fm_file_has_mime(file,".edj"))
244c249
< 
---
>   
251,257c256,262
<      {
< 	if (!strcmp(l->data, "desktop/background"))
< 	  {
< 	     val = 1;
< 	     break;
< 	  }
<      }
---
>    {
>     if (!strcmp(l->data, "desktop/background"))
>     {
>        val = 1;
>        break;
>     }
>    }
265,268d269
<    char *ext;
<    E_App *app;
< 
<    if ((file->type != E_FM_FILE_TYPE_FILE) && (file->type != E_FM_FILE_TYPE_SYMLINK)) return 0;
270,271c271
<    ext = strrchr(file->name, '.');
<    if (!ext) return 0;
---
>    E_App *app;
273c273
<    if (strcasecmp(ext, ".eap"))
---
>   if (!e_fm_file_is_regular(file) || !e_fm_file_has_mime(file,".eap"))
275c275
< 
---
>   
278,281c278,281
<      {
< 	e_object_unref(E_OBJECT(app));
< 	return 0;
<      }
---
>    {
>     e_object_unref(E_OBJECT(app));
>     return 0;
>    }
289,299c289,293
<    char *ext;
< 
<    ext = strrchr(file->name, '.');
<    if (ext)
<      {
< 	if (!strcasecmp(ext, ".eap"))
< 	  {
< 	     D(("e_fm_file_can_exec: true (%p) (%s)\n", file, file->name));
< 	     return 1;
< 	  }
<      }
---
>    if (e_fm_file_has_mime(file,".eap"))
>    {
>      D(("e_fm_file_can_exec: true (%p) (%s)\n", file, file->name));
>      return 1;
>    }
302,305c296,299
<      {
< 	D(("e_fm_file_can_exec: true (%p) (%s)\n", file, file->name));
< 	return 1;
<      }
---
>    {
>     D(("e_fm_file_can_exec: true (%p) (%s)\n", file, file->name));
>     return 1;
>    }
315d308
<    char *ext;
317,335c310,324
<    ext = strrchr(file->name, '.');
<    if (ext)
<      {
< 	if (!strcasecmp(ext, ".eap"))
< 	  {
< 	     E_App *e_app;
< 	     Ecore_Exe *exe;
< 
< 	     e_app = e_app_new(file->path, 0);
< 
< 	     if (!e_app) return 0;
< 
< 	     exe = ecore_exe_run(e_app->exe, NULL);
< 	     if (exe) ecore_exe_free(exe);
< 	     e_object_unref(E_OBJECT(e_app));
< 	     D(("e_fm_file_exec: eap (%p) (%s)\n", file, file->name));
< 	     return 1;
< 	  }
<      }
---
>    if(e_fm_file_has_mime(file,".eap"))
>    {
>        E_App *e_app;
>        Ecore_Exe *exe;
> 
>        e_app = e_app_new(file->path, 0);
> 
>        if (!e_app) return 0;
> 
>        exe = ecore_exe_run(e_app->exe, NULL);
>        if (exe) ecore_exe_free(exe);
>        e_object_unref(E_OBJECT(e_app));
>        D(("e_fm_file_exec: eap (%p) (%s)\n", file, file->name));
>        return 1;
>     } 
339,348c328,337
<      {
< 	e_error_dialog_show(_("Run Error"),
< 			    _("Enlightenment was unable to fork a child process:\n"
< 			      "\n"
< 			      "%s\n"
< 			      "\n"),
< 			    file->path);
< 	D(("e_fm_file_exec: fail (%p) (%s)\n", file, file->name));
< 	return 0;
<      }
---
>    {
>     e_error_dialog_show(_("Run Error"),
>           _("Enlightenment was unable to fork a child process:\n"
>             "\n"
>             "%s\n"
>             "\n"),
>           file->path);
>     D(("e_fm_file_exec: fail (%p) (%s)\n", file, file->name));
>     return 0;
>    }
374,382c363,368
<      {
< 	char *ext;
< 
< 	assoc = l->data;
< 	ext = strrchr(file->path, '.');
< 	if ((ext) && (!strcasecmp(ext, assoc->mime)))
< 	  break;
< 	assoc = NULL;
<      }
---
>    {
>     assoc = l->data;
>     if (e_fm_file_has_mime(file,assoc->mime))
>       break;
>     assoc = NULL;
>    }
390,399c376,385
<      {
< 	e_error_dialog_show(_("Run Error"),
< 			    _("Enlightenment was unable to fork a child process:\n"
< 			      "\n"
< 			      "%s\n"
< 			      "\n"),
< 			    app);
< 	D(("e_fm_assoc_exec: fail (%s)\n", app));
< 	return 0;
<      }
---
>    {
>     e_error_dialog_show(_("Run Error"),
>           _("Enlightenment was unable to fork a child process:\n"
>             "\n"
>             "%s\n"
>             "\n"),
>           app);
>     D(("e_fm_assoc_exec: fail (%s)\n", app));
>     return 0;
>    }
418,426c404,412
<      {
< 	e_error_dialog_show(_("Run Error"),
< 			    _("3 Enlightenment was unable to fork a child process:\n"
< 			      "\n"
< 			      "%s\n"
< 			      "\n"),
< 			    app);
< 	return 0;
<      }
---
>    {
>     e_error_dialog_show(_("Run Error"),
>           _("3 Enlightenment was unable to fork a child process:\n"
>             "\n"
>             "%s\n"
>             "\n"),
>           app);
>      return 0;
>    }
438c424
<    ///???  if (file->mime) free(file->mime);
---
>    ///???  if (file->mime) free(file->mime); 
Index: e_fileman_file.h
===================================================================
RCS file: /root/e17/apps/e/src/bin/e_fileman_file.h,v
retrieving revision 1.1.1.2
diff -r1.1.1.2 e_fileman_file.h
40c40
<    char     *mime;            /* mimetype (just the extension) */
---
>    char     *mime;            /* mimetype (just the extension, beginning with dot) */
70,71c70,72
< EAPI int	e_fm_file_exec_with   (E_Fm_File *file, char* exec_with);
< 
---
> EAPI int				e_fm_file_exec_with   (E_Fm_File *file, char* exec_with);
> EAPI int				e_fm_file_has_mime    (E_Fm_File *file, char* mime);
> EAPI int        e_fm_file_is_regular  (E_Fm_File *file);
Index: e_fileman_icon.c
===================================================================
RCS file: /root/e17/apps/e/src/bin/e_fileman_icon.c,v
retrieving revision 1.1.1.17
diff -r1.1.1.17 e_fileman_icon.c
499,518c499,512
<    sd->image_object = edje_object_add(sd->evas);
<    if (sd->file->type ==  E_FM_FILE_TYPE_DIRECTORY)
<      e_theme_edje_object_set(sd->image_object, "base/theme/fileman",
< 			     "icons/fileman/folder");
<    else
<      {
< 	char *ext;
< 
< 	ext = strrchr(sd->file->name, '.');
< 	if (ext)
< 	  {
< 	     char part[PATH_MAX];
< 	     char *ext2;
< 
< 	     ext = strdup(ext);
< 	     ext2 = ext;
< 	     for (; *ext2; ext2++) *ext2 = tolower(*ext2);
< 
< 	     snprintf(part, PATH_MAX, "icons/fileman/%s", (ext + 1));
< 	     if (!e_theme_edje_object_set(sd->image_object, "base/theme/fileman", part))
---
>   char part[PATH_MAX];
> 	
> 	sd->image_object = edje_object_add(sd->evas);
> 	
> 	// since a mime is set with every creation of an E_Fm_File its existence isnīt checked here
> 	if(sd->file->type ==  E_FM_FILE_TYPE_DIRECTORY)
> 		 	e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "icons/fileman/folder");
>   
>   else if(e_fm_file_has_mime(sd->file,"unknown"))
>    	  e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "icons/fileman/file");
>   else 
>   {
>    	  snprintf(part, PATH_MAX, "icons/fileman/%s", (sd->file->mime + 1)); 
> 	    if (!e_theme_edje_object_set(sd->image_object, "base/theme/fileman", part))
520,524c514
< 	     free(ext);
< 	  }
< 	else
< 	  e_theme_edje_object_set(sd->image_object, "base/theme/fileman", "icons/fileman/file");
<      }
---
>    }
531a522,523
> 
> 
536d527
<    char                 *ext;
540,544c531
<    ext = strrchr(sd->file->name, '.');
<    if ((ext) && (strcasecmp(ext, ".eap")))
<      ext = NULL;
< 
<    if ((ext) || (ecore_file_exists(sd->thumb_path)))
---
>    if (e_fm_file_has_mime(sd->file,".eap") || (ecore_file_exists(sd->thumb_path)))
Index: e_fileman_smart.c
===================================================================
RCS file: /root/e17/apps/e/src/bin/e_fileman_smart.c,v
retrieving revision 1.1.1.44
diff -r1.1.1.44 e_fileman_smart.c
1214c1214
<    snprintf(text, 512, "%s", "An Image");
---
>    snprintf(text, 512, "%s", icon->file->mime);
2123c2123
< 	     if (!strcmp(icon->file->name, ".")) return;
---
> 	     if (!strcmp(icon->file->name, ".")) return; /* this case cant happen!? */
2218c2218
< 		  if (strcmp(icon->file->mime, assoc->mime) == 0)
---
> 		  if (e_fm_file_has_mime(icon->file, assoc->mime))

Reply via email to