diff options
author | Jannis Pohlmann <jannis@xfce.org> | 2009-09-30 15:09:16 +0200 |
---|---|---|
committer | Jannis Pohlmann <jannis@xfce.org> | 2009-09-30 15:09:16 +0200 |
commit | fd8d82d61bf59129583dc2dab7edae54be214f31 (patch) | |
tree | 7e5e4441a713b985f293cc6fe73c58fe45c86416 /tumbler/tumbler-util.c | |
parent | 7d6875461d59e7b7c558f5586ceb4df92b3c57a9 (diff) | |
download | tumbler-fd8d82d61bf59129583dc2dab7edae54be214f31.tar.gz |
Always check for "file" and add it if necessary. Clearly the better way.
Diffstat (limited to 'tumbler/tumbler-util.c')
-rw-r--r-- | tumbler/tumbler-util.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tumbler/tumbler-util.c b/tumbler/tumbler-util.c new file mode 100644 index 0000000..1d5910e --- /dev/null +++ b/tumbler/tumbler-util.c @@ -0,0 +1,69 @@ +/* vi:set et ai sw=2 sts=2 ts=2: */ +/*- + * Copyright (c) 2009 Jannis Pohlmann <jannis@xfce.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU Library General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <glib.h> +#include <gio/gio.h> + +#include <tumbler/tumbler-util.h> + + + +GStrv +tumbler_util_get_supported_uri_schemes (void) +{ + const gchar *const *vfs_schemes; + GStrv uri_schemes; + gboolean file_scheme_found = FALSE; + guint length; + guint n; + GVfs *vfs; + + /* determine the URI schemes supported by GIO */ + vfs = g_vfs_get_default (); + vfs_schemes = g_vfs_get_supported_uri_schemes (vfs); + + /* search for the "file" scheme */ + for (n = 0; !file_scheme_found && vfs_schemes[n] != NULL; ++n) + if (g_strcmp0 (vfs_schemes[n], "file") == 0) + file_scheme_found = TRUE; + + /* check if the "file" scheme is included */ + if (file_scheme_found) + { + /* it is, so simply copy the array */ + uri_schemes = g_strdupv ((GStrv) vfs_schemes); + } + else + { + /* it is not, so we need to copy the array and add "file" */ + length = g_strv_length ((GStrv) vfs_schemes); + uri_schemes = g_new0 (gchar *, length + 1); + uri_schemes[0] = g_strdup ("file"); + for (n = 0; n < length; ++n) + uri_schemes[1+n] = g_strdup (vfs_schemes[n]); + uri_schemes[n] = NULL; + } + + return uri_schemes; +} |