? dist.log ? gnome-vfs-2.5.1.tar.gz ? gnome-vfs-mime.c ? intltool-modules ? portability.diff ? show_bug.cgi?id=132652 ? showattachment.cgi?attach_id=23797 ? showattachment.cgi?attach_id=24373 ? showattachment.cgi?attach_id=24375 ? showattachment.cgi?attach_id=24525 ? xdg.diff ? daemon/vfs-daemon ? doc/xml ? doc/tmpl/gnome-vfs-2.0-unused.sgml ? doc/tmpl/gnome-vfs.sgml ? gtk/Makefile ? gtk/Makefile.in ? libgnomevfs/gnome-vfs-enum-types.c ? libgnomevfs/gnome-vfs-enum-types.h ? libgnomevfs/mime.diff ? libgnomevfs/s-enum-types-c ? libgnomevfs/s-enum-types-h ? modules/leaks2.diff Index: libgnomevfs/xdgmimemagic.c =================================================================== RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/xdgmimemagic.c,v retrieving revision 1.5 diff -u -r1.5 xdgmimemagic.c --- libgnomevfs/xdgmimemagic.c 21 Jan 2004 14:32:38 -0000 1.5 +++ libgnomevfs/xdgmimemagic.c 23 Feb 2004 22:52:17 -0000 @@ -559,12 +559,12 @@ size_t len, int indent) { - while (matchlet != NULL && matchlet->indent == indent) + while ((matchlet != NULL) && (matchlet->indent == indent)) { if (_xdg_mime_magic_matchlet_compare_to_data (matchlet, data, len)) { - if (matchlet->next == NULL || - matchlet->next->indent <= indent) + if ((matchlet->next == NULL) || + (matchlet->next->indent <= indent)) return TRUE; if (_xdg_mime_magic_matchlet_compare_level (matchlet->next, @@ -686,6 +686,32 @@ mime_magic->max_extent = max_extent; } +static XdgMimeMagicMatchlet * +_xdg_mime_magic_matchlet_mirror (XdgMimeMagicMatchlet *matchlets) +{ + XdgMimeMagicMatchlet *new_list; + XdgMimeMagicMatchlet *tmp; + + if ((matchlets == NULL) || (matchlets->next == NULL)) + { + return matchlets; + } + + new_list = NULL; + tmp = matchlets; + while (tmp != NULL) + { + XdgMimeMagicMatchlet *matchlet; + matchlet = tmp; + tmp = tmp->next; + matchlet->next = new_list; + new_list = matchlet; + } + + return new_list; + +} + static void _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic, FILE *magic_file) @@ -707,8 +733,11 @@ break; case XDG_MIME_MAGIC_MAGIC: state = _xdg_mime_magic_parse_magic_line (magic_file, match); - if (state == XDG_MIME_MAGIC_SECTION) - _xdg_mime_magic_insert_match (mime_magic, match); + if (state == XDG_MIME_MAGIC_SECTION) + { + match->matchlet = _xdg_mime_magic_matchlet_mirror (match->matchlet); + _xdg_mime_magic_insert_match (mime_magic, match); + } else if (state == XDG_MIME_MAGIC_EOF || state == XDG_MIME_MAGIC_ERROR) _xdg_mime_magic_match_free (match); break; Index: programs/gnomevfs-info.c =================================================================== RCS file: /cvs/gnome/gnome-vfs/programs/gnomevfs-info.c,v retrieving revision 1.2 diff -u -r1.2 gnomevfs-info.c --- programs/gnomevfs-info.c 8 Jan 2004 12:22:21 -0000 1.2 +++ programs/gnomevfs-info.c 23 Feb 2004 22:52:17 -0000 @@ -142,6 +142,7 @@ gnome_vfs_get_file_info (argv[1], info, (GNOME_VFS_FILE_INFO_GET_MIME_TYPE | GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS + | GNOME_VFS_FILE_INFO_FORCE_SLOW_MIME_TYPE | GNOME_VFS_FILE_INFO_FOLLOW_LINKS)); show_file_info (info);