forked from AuroraMiddleware/gtk
Fix a thinko that leads to constantly reloading the mime data if a
2006-07-20 Matthias Clasen <mclasen@redhat.com> Fix a thinko that leads to constantly reloading the mime data if a mime.cache is present. Patch by Yevgen Muntyan, bugs.freedesktop.org #7495 * xdgmime.c (xdg_check_dir): Look for mime.cache first. (xdg_check_file): Report existance of the file separately.
This commit is contained in:
parent
02471fdddc
commit
066bb1b8f6
@ -1,3 +1,12 @@
|
||||
2006-07-20 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
Fix a thinko that leads to constantly reloading
|
||||
the mime data if a mime.cache is present. Patch
|
||||
by Yevgen Muntyan, bugs.freedesktop.org #7495
|
||||
|
||||
* xdgmime.c (xdg_check_dir): Look for mime.cache first.
|
||||
(xdg_check_file): Report existance of the file separately.
|
||||
|
||||
2006-07-20 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* xdgmime.c (xdg_mime_shutdown): Unref the caches.
|
||||
|
@ -281,7 +281,8 @@ xdg_run_command_on_dirs (XdgDirectoryFunc func,
|
||||
* FIXME: This doesn't protect against permission changes.
|
||||
*/
|
||||
static int
|
||||
xdg_check_file (const char *file_path)
|
||||
xdg_check_file (const char *file_path,
|
||||
int *exists)
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
@ -290,6 +291,9 @@ xdg_check_file (const char *file_path)
|
||||
{
|
||||
XdgDirTimeList *list;
|
||||
|
||||
if (exists)
|
||||
*exists = TRUE;
|
||||
|
||||
for (list = dir_time_list; list; list = list->next)
|
||||
{
|
||||
if (! strcmp (list->directory_name, file_path) &&
|
||||
@ -306,6 +310,9 @@ xdg_check_file (const char *file_path)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (exists)
|
||||
*exists = FALSE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -313,15 +320,30 @@ static int
|
||||
xdg_check_dir (const char *directory,
|
||||
int *invalid_dir_list)
|
||||
{
|
||||
int invalid;
|
||||
int invalid, exists;
|
||||
char *file_name;
|
||||
|
||||
assert (directory != NULL);
|
||||
|
||||
/* Check the mime.cache file */
|
||||
file_name = malloc (strlen (directory) + strlen ("/mime/mime.cache") + 1);
|
||||
strcpy (file_name, directory); strcat (file_name, "/mime/mime.cache");
|
||||
invalid = xdg_check_file (file_name, &exists);
|
||||
free (file_name);
|
||||
if (invalid)
|
||||
{
|
||||
*invalid_dir_list = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
else if (exists)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Check the globs file */
|
||||
file_name = malloc (strlen (directory) + strlen ("/mime/globs") + 1);
|
||||
strcpy (file_name, directory); strcat (file_name, "/mime/globs");
|
||||
invalid = xdg_check_file (file_name);
|
||||
invalid = xdg_check_file (file_name, NULL);
|
||||
free (file_name);
|
||||
if (invalid)
|
||||
{
|
||||
@ -332,18 +354,7 @@ xdg_check_dir (const char *directory,
|
||||
/* Check the magic file */
|
||||
file_name = malloc (strlen (directory) + strlen ("/mime/magic") + 1);
|
||||
strcpy (file_name, directory); strcat (file_name, "/mime/magic");
|
||||
invalid = xdg_check_file (file_name);
|
||||
free (file_name);
|
||||
if (invalid)
|
||||
{
|
||||
*invalid_dir_list = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Check the mime.cache file */
|
||||
file_name = malloc (strlen (directory) + strlen ("/mime/mime.cache") + 1);
|
||||
strcpy (file_name, directory); strcat (file_name, "/mime/mime.cache");
|
||||
invalid = xdg_check_file (file_name);
|
||||
invalid = xdg_check_file (file_name, NULL);
|
||||
free (file_name);
|
||||
if (invalid)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user