[Xfce4-commits] [xfce/thunar] 01/01: Improve check for shell scripts and add hidden option for bug #7596

noreply at xfce.org noreply at xfce.org
Sat Feb 28 13:40:21 CET 2015


This is an automated email from the git hooks/post-receive script.

hjudt pushed a commit to branch master
in repository xfce/thunar.

commit b385bcf7c856fdc0a63b5f91a6d4053a7d22347e
Author: Harald Judt <h.judt at gmx.at>
Date:   Fri Feb 27 22:26:09 2015 +0100

    Improve check for shell scripts and add hidden option for bug #7596
    
    The check for shell scripts was incomplete. This commit extends it to
    all executable scripts that are text/plain. For people wanting the
    old, unsafe behaviour there is a new boolean option called
    "misc-exec-shell-scripts-by-default" that can be created and set to
    TRUE using xfconf-query or the Xfce settings editor.
---
 thunar/thunar-file.c        |   34 +++++++++++++++++++---------------
 thunar/thunar-preferences.c |   17 +++++++++++++++++
 2 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index e254347..9b5aa9b 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -63,6 +63,7 @@
 #include <thunar/thunar-gio-extensions.h>
 #include <thunar/thunar-gobject-extensions.h>
 #include <thunar/thunar-private.h>
+#include <thunar/thunar-preferences.h>
 #include <thunar/thunar-user.h>
 #include <thunar/thunar-util.h>
 #include <thunar/thunar-dialogs.h>
@@ -2755,8 +2756,10 @@ thunar_file_is_ancestor (const ThunarFile *file,
 gboolean
 thunar_file_is_executable (const ThunarFile *file)
 {
-  gboolean     can_execute = FALSE;
-  const gchar *content_type;
+  ThunarPreferences *preferences;
+  gboolean           can_execute = FALSE;
+  gboolean           exec_shell_scripts = FALSE;
+  const gchar       *content_type;
 
   _thunar_return_val_if_fail (THUNAR_IS_FILE (file), FALSE);
 
@@ -2769,20 +2772,21 @@ thunar_file_is_executable (const ThunarFile *file)
       content_type = thunar_file_get_content_type (THUNAR_FILE (file));
       if (G_LIKELY (content_type != NULL))
         {
-#ifdef G_OS_WIN32
-          /* check for .exe, .bar or .com */
           can_execute = g_content_type_can_be_executable (content_type);
-#else
-          /* Check if the content type is safe to execute, we don't
-           * use g_content_type_can_be_executable() for unix because
-           * it also returns true for "text/plain" and we don't want
-           * that. Also do not execute x-shellscripts by default, it
-           * is safer to open them in an editor or run them in a
-           * terminal, usually they require parameters. */
-          if (g_content_type_is_a (content_type, "application/x-executable")
-              && ! g_content_type_is_a (content_type, "application/x-shellscript"))
-              can_execute = TRUE;
-#endif
+
+          if (can_execute)
+            {
+              /* check if the shell scripts should be executed or opened by default */
+              preferences = thunar_preferences_get ();
+              g_object_get (preferences, "misc-exec-shell-scripts-by-default", &exec_shell_scripts, NULL);
+              g_object_unref (preferences);
+
+              /* do never execute plain text files which are not shell scripts but marked executable */
+              if (g_strcmp0 (content_type, "text/plain") == 0)
+                  can_execute = FALSE;
+              else if (g_content_type_is_a (content_type, "text/plain") && ! exec_shell_scripts)
+                  can_execute = FALSE;
+            }
         }
     }
 
diff --git a/thunar/thunar-preferences.c b/thunar/thunar-preferences.c
index 684485f..9a86ae1 100644
--- a/thunar/thunar-preferences.c
+++ b/thunar/thunar-preferences.c
@@ -75,6 +75,7 @@ enum
   PROP_MISC_VOLUME_MANAGEMENT,
   PROP_MISC_CASE_SENSITIVE,
   PROP_MISC_DATE_STYLE,
+  PROP_EXEC_SHELL_SCRIPTS_BY_DEFAULT,
   PROP_MISC_FOLDERS_FIRST,
   PROP_MISC_FULL_PATH_IN_TITLE,
   PROP_MISC_HORIZONTAL_WHEEL_NAVIGATES,
@@ -492,6 +493,22 @@ thunar_preferences_class_init (ThunarPreferencesClass *klass)
                          EXO_PARAM_READWRITE);
 
   /**
+   * ThunarPreferences:misc-execute-shell-scripts-by-default:
+   *
+   * Shell scripts are often unsafe to execute, require additional
+   * parameters and most users will only want to edit them in their
+   * favorite editor, so the default is to open them in the associated
+   * application. Setting this to TRUE allows executing them, like
+   * binaries, by default. See bug #7596.
+   **/
+  preferences_props[PROP_EXEC_SHELL_SCRIPTS_BY_DEFAULT] =
+      g_param_spec_boolean ("misc-exec-shell-scripts-by-default",
+                            "MiscExecShellScriptsByDefault",
+                            NULL,
+                            FALSE,
+                            EXO_PARAM_READWRITE);
+
+  /**
    * ThunarPreferences:misc-folders-first:
    *
    * Whether to sort folders before files.

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list