summaryrefslogtreecommitdiff
path: root/xattr-tags/caja-xattr-tags-extension.c
diff options
context:
space:
mode:
Diffstat (limited to 'xattr-tags/caja-xattr-tags-extension.c')
-rw-r--r--xattr-tags/caja-xattr-tags-extension.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/xattr-tags/caja-xattr-tags-extension.c b/xattr-tags/caja-xattr-tags-extension.c
index 9435215..cc420c7 100644
--- a/xattr-tags/caja-xattr-tags-extension.c
+++ b/xattr-tags/caja-xattr-tags-extension.c
@@ -2,6 +2,7 @@
* Caja xattr tags extension
*
* Copyright (C) 2016 Felipe Barriga Richards
+ * Copyright (C) 2016-2021 MATE developers.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -49,6 +50,16 @@ typedef struct {
GClosure *update_complete;
} CajaXattrTagsHandle;
+/* List of protocols that don't support xattr retriving,
+ * so we can skip it safetely
+ */
+static gchar *protocols_blacklist[] = {
+ "mtp://",
+ "gphoto2://",
+
+ NULL
+};
+
/* Stolen code: why they didn't expose it!?
* file: glocalfileinfo.c
* function: hex_unescape_string
@@ -106,8 +117,21 @@ static gchar *caja_xattr_tags_get_xdg_tags(CajaFileInfo *file)
gchar *tags = NULL, *uri;
GFile *location;
GFileInfo *info;
+ int i;
uri = caja_file_info_get_activation_uri (file);
+ for (i = 0 ; protocols_blacklist[i] ; i++) {
+ int l = strlen(protocols_blacklist[i]);
+
+ if (strlen(uri) < l)
+ continue;
+ if (strncasecmp(uri, protocols_blacklist[i], l))
+ continue;
+
+ g_free (uri);
+ return NULL;
+ }
+
location = g_file_new_for_uri (uri);
info = g_file_query_info (location,
G_FILE_ATTRIBUTE_XATTR_XDG_TAGS,
@@ -153,7 +177,6 @@ caja_xattr_tags_update_file_info(CajaInfoProvider *provider,
return CAJA_OPERATION_COMPLETE;
}
-
static void
caja_xattr_tags_cancel_update(CajaInfoProvider *provider,
CajaOperationHandle *handle)
@@ -171,7 +194,6 @@ caja_xattr_tags_info_provider_iface_init(CajaInfoProviderIface *iface)
iface->cancel_update = caja_xattr_tags_cancel_update;
}
-
static GList *
caja_xattr_tags_get_columns(CajaColumnProvider *provider)
{
@@ -193,30 +215,25 @@ caja_xattr_tags_column_provider_iface_init(CajaColumnProviderIface *iface)
iface->get_columns = caja_xattr_tags_get_columns;
}
-
static void
caja_xattr_tags_instance_init(CajaXattrTags *cajaXattrTags)
{
}
-
static void
caja_xattr_tags_class_init(CajaXattrTagsClass *class)
{
parent_class = g_type_class_peek_parent (class);
}
-
static GType caja_xattr_tags_type = 0;
-
GType
caja_xattr_tags_get_type(void)
{
return caja_xattr_tags_type;
}
-
void
caja_xattr_tags_register_type(GTypeModule *module)
{
@@ -230,9 +247,9 @@ caja_xattr_tags_register_type(GTypeModule *module)
sizeof (CajaXattrTags),
0,
(GInstanceInitFunc) caja_xattr_tags_instance_init,
+ NULL
};
-
caja_xattr_tags_type = g_type_module_register_type (module,
G_TYPE_OBJECT,
"CajaXattrTags",
@@ -255,7 +272,6 @@ caja_xattr_tags_register_type(GTypeModule *module)
NULL
};
-
g_type_module_add_interface (module,
CAJA_TYPE_XATTR_TAGS,
CAJA_TYPE_COLUMN_PROVIDER,
@@ -268,6 +284,10 @@ caja_module_initialize (GTypeModule *module)
{
g_print ("Initializing caja-xattr-tags extension\n");
caja_xattr_tags_register_type (module);
+#ifdef ENABLE_NLS
+ bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+#endif /* ENABLE_NLS */
}
void