Hey hackers,

I found this problem with LibFm, tested with last sources from git master.

Create a file called "New1".
Create a file called "New 1".
Create a file with special characters, like accentuated ones,
for example : "Accentué"

Trash these files, then from the Trash Can click restore.

On my system I can only restore "New1", I get an error with other files.
(Tested with src/libfm-demo)

I fixed it this way :

GFile *fm_path_to_gfile (FmPath *path)
{
     GFile *gf;

     char *str = fm_path_to_str (path);

     if (fm_path_is_native (path))
     {
         gf = g_file_new_for_path (str);
     }
     else
     {
         // Escape the path so that it supports spaces and special 
characters like accentuated ones...
         char *tmp_str = g_uri_escape_string (str, 
G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, TRUE);

         gf = g_file_new_for_uri (tmp_str);
         g_free (tmp_str);
     }

     g_free (str);

     return gf;
}



g_uri_escape_string adds escape characters,

"trash:///\home\hotnuma\Bureau\.Trash-1000\files\New%201"

becomes :

"trash:///%5Chome%5Chotnuma%5CBureau%5C.Trash-1000%5Cfiles%5CNew%25201"

That's what you get if you copy the file from Nautilus or Thunar and 
paste the string in a text editor.


I found also a problem in fm_str_replace

I fixed it this way :


char *fm_str_replace (char *str, char *old, char *new)
{
     int i;
     int len = strlen (str);
     int old_len = strlen (old);

     GString *buf = g_string_sized_new (len);

     char *found;
     while (found = strstr (str, old))
     {
         g_string_append_len (buf, str,  (found - str));
         g_string_append (buf, new);
         str = found + old_len;
     }
     for (; *str; ++str)
         g_string_append_c (buf, *str);
     return g_string_free (buf, FALSE);
}



"str = found + old_len;" instead of "str = found + 1;"


Cheers!


-- 
Axel FILMORE
#--------------------------------------------#
         https://github.com/afilmore
#--------------------------------------------#
  Vala - Compiler For The GObject Type System
         https://live.gnome.org/Vala
#--------------------------------------------#

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Lxde-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/lxde-list

Reply via email to