Example #1
0
char *
caja_get_xdg_dir (const char *type)
{
    int i;

    if (cached_xdg_dirs == NULL)
    {
        update_xdg_dir_cache ();
    }

    for (i = 0 ; cached_xdg_dirs != NULL && cached_xdg_dirs[i].type != NULL; i++)
    {
        if (strcmp (cached_xdg_dirs[i].type, type) == 0)
        {
            return g_strdup (cached_xdg_dirs[i].path);
        }
    }
    if (strcmp ("DESKTOP", type) == 0)
    {
        return g_build_filename (g_get_home_dir (), DESKTOP_DIRECTORY_NAME, NULL);
    }
    if (strcmp ("TEMPLATES", type) == 0)
    {
        return g_build_filename (g_get_home_dir (), "Templates", NULL);
    }

    return g_strdup (g_get_home_dir ());
}
static void
xdg_dir_cache_changed_cb (GFileMonitor  *monitor,
                          GFile *file,
                          GFile *other_file,
                          GFileMonitorEvent event_type)
{
    if (event_type == G_FILE_MONITOR_EVENT_CHANGED ||
            event_type == G_FILE_MONITOR_EVENT_CREATED) {
        update_xdg_dir_cache ();
    }
}