summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYongha Hwang <mshrimp@sogang.ac.kr>2021-06-23 20:56:59 +0000
committerAlexander Schwinn <alexxcons@xfce.org>2021-06-23 20:56:59 +0000
commit0057767de24bfc850aa4c7f652bac3bddda63c27 (patch)
treea02b321e95acc65a7e47811ca5f5cadb06b9fd15
parentd722ef6202ebbbf677d0353dfa53b095e6ca09ca (diff)
downloadexo-0057767de24bfc850aa4c7f652bac3bddda63c27.tar.gz
Keep execute permission bit after launcher modification (Issue #64)
MR !43 Related: Exo #64
-rw-r--r--exo-desktop-item-edit/exo-die-utils.c37
1 files changed, 11 insertions, 26 deletions
diff --git a/exo-desktop-item-edit/exo-die-utils.c b/exo-desktop-item-edit/exo-die-utils.c
index 2a9cd01..f855244 100644
--- a/exo-desktop-item-edit/exo-die-utils.c
+++ b/exo-desktop-item-edit/exo-die-utils.c
@@ -100,7 +100,7 @@ static void trust_launcher (GFile *gfile)
NULL);
}
- g_object_unref (G_OBJECT (info));
+ g_object_unref (info);
}
@@ -135,7 +135,6 @@ exo_die_g_key_file_save (GKeyFile *key_file,
guint n;
gboolean desktop_suffix;
const gchar *suffix;
- gchar *path;
g_return_val_if_fail (G_IS_FILE (base), FALSE);
g_return_val_if_fail (key_file != NULL, FALSE);
@@ -155,14 +154,14 @@ exo_die_g_key_file_save (GKeyFile *key_file,
g_free (name);
if (desktop_suffix)
{
- file = G_FILE (g_object_ref (G_OBJECT (base)));
+ file = g_object_ref (base);
}
else
{
file_type = g_file_query_file_type (base, G_FILE_QUERY_INFO_NONE, NULL);
if (file_type == G_FILE_TYPE_REGULAR)
{
- file = G_FILE (g_object_ref (G_OBJECT (base)));
+ file = g_object_ref (base);
}
else if (file_type == G_FILE_TYPE_DIRECTORY)
{
@@ -184,7 +183,7 @@ exo_die_g_key_file_save (GKeyFile *key_file,
{
/* release the previous name */
g_free (filename);
- g_object_unref (G_OBJECT (file));
+ g_object_unref (file);
/* generate a new file name */
filename = g_strdup_printf ("%s%d%s", name, n, suffix);
@@ -210,41 +209,27 @@ exo_die_g_key_file_save (GKeyFile *key_file,
else
{
/* base is the file */
- file = G_FILE (g_object_ref (G_OBJECT (base)));
+ file = g_object_ref (base);
}
/* determine the data for the key file */
data = g_key_file_to_data (key_file, &length, error);
if (G_UNLIKELY (data == NULL))
{
- g_object_unref (G_OBJECT (file));
+ g_object_unref (file);
return FALSE;
}
- /* write the contents to the file */
- if (g_file_is_native (file))
- {
- /* for local writes, to make sure the file is written to a tmp
- * file before the origional desktop file is replaced */
- path = g_file_get_path (file);
- result = g_file_set_contents (path, data, length, error);
- g_free (path);
- }
- else
- {
- /* for remote writes */
- result = g_file_replace_contents (file, data, length, NULL, FALSE,
- G_FILE_CREATE_REPLACE_DESTINATION,
- NULL, NULL, error);
- }
+ result = g_file_replace_contents (file, data, length, NULL, FALSE,
+ G_FILE_CREATE_NONE,
+ NULL, NULL, error);
- if (trust) {
+ if (trust)
trust_launcher (file);
- }
/* cleanup */
g_free (data);
- g_object_unref (G_OBJECT (file));
+ g_object_unref (file);
return result;
}