aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2011-02-25 06:34:07 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2011-02-25 06:34:07 +0000
commit070e412f18875b74e329d932d65b2917d8d81bd7 (patch)
tree9a892d712cf507a9bcef1df2a65481020c3b9427
parentb81cb2016a3fb6bb6f297a057516aac13e5bcf42 (diff)
use 'open' command on OS X.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2847 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog8
-rw-r--r--libsylph/defs.h6
-rw-r--r--libsylph/utils.c14
-rw-r--r--src/mimeview.c15
-rw-r--r--src/prefs_common_dialog.c4
5 files changed, 43 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 4b6aa880..97ee1086 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-02-25
+
+ * libsylph/utils.c
+ libsylph/defs.h
+ src/mimeview.c
+ src/prefs_common_dialog.c: use 'open' command for URI, file open
+ and text editor on OS X.
+
2011-02-15
* src/summaryview.c: summary_show_queued_msgs(): clear selection list
diff --git a/libsylph/defs.h b/libsylph/defs.h
index 8786fb27..8901b9c9 100644
--- a/libsylph/defs.h
+++ b/libsylph/defs.h
@@ -98,7 +98,11 @@
/* #define DEFAULT_INC_PATH "/usr/bin/imget" */
/* #define DEFAULT_INC_PROGRAM "imget" */
#define DEFAULT_SENDMAIL_CMD "/usr/sbin/sendmail -t -i"
-#define DEFAULT_BROWSER_CMD "xdg-open '%s'"
+#ifdef __APPLE__
+# define DEFAULT_BROWSER_CMD "open '%s'"
+#else
+# define DEFAULT_BROWSER_CMD "xdg-open '%s'"
+#endif
#ifdef _PATH_MAILDIR
# define DEFAULT_SPOOL_PATH _PATH_MAILDIR
diff --git a/libsylph/utils.c b/libsylph/utils.c
index 8026cc28..3b1301a8 100644
--- a/libsylph/utils.c
+++ b/libsylph/utils.c
@@ -4097,9 +4097,9 @@ gint execute_command_line_async_wait(const gchar *cmdline)
gint execute_open_file(const gchar *file, const gchar *content_type)
{
+#ifdef G_OS_WIN32
g_return_val_if_fail(file != NULL, -1);
-#ifdef G_OS_WIN32
log_print("opening %s - %s\n", file, content_type ? content_type : "");
if (G_WIN32_HAVE_WIDECHAR_API()) {
@@ -4127,7 +4127,17 @@ gint execute_open_file(const gchar *file, const gchar *content_type)
return 0;
}
+#elif defined(__APPLE__)
+ const gchar *argv[3] = {"open", NULL, NULL};
+
+ g_return_val_if_fail(file != NULL, -1);
+
+ log_print("opening %s - %s\n", file, content_type ? content_type : "");
+
+ argv[1] = file;
+ execute_async(argv);
#endif
+
return 0;
}
@@ -4192,7 +4202,7 @@ gint open_uri(const gchar *uri, const gchar *cmdline)
g_return_val_if_fail(uri != NULL, -1);
-#ifdef G_OS_WIN32
+#if defined(G_OS_WIN32) || defined(__APPLE__)
if (!cmdline || cmdline[0] == '\0')
return execute_open_file(uri, NULL);
#endif
diff --git a/src/mimeview.c b/src/mimeview.c
index 41768d0b..be13eaf5 100644
--- a/src/mimeview.c
+++ b/src/mimeview.c
@@ -1226,6 +1226,21 @@ static void mimeview_view_file(const gchar *filename, MimeInfo *partinfo,
}
execute_open_file(filename, partinfo->content_type);
return;
+#elif defined(__APPLE__)
+ if (g_file_test(filename, G_FILE_TEST_IS_EXECUTABLE) ||
+ str_has_suffix_case(filename, ".py") ||
+ str_has_suffix_case(filename, ".rb") ||
+ str_has_suffix_case(filename, ".sh")) {
+ alertpanel_full
+ (_("Opening executable file"),
+ _("This is an executable file. Opening executable file is restricted for security.\n"
+ "If you want to launch it, save it to somewhere and make sure it is not an virus or something like a malicious program."),
+ ALERT_WARNING, G_ALERTDEFAULT, FALSE,
+ GTK_STOCK_OK, NULL, NULL);
+ return;
+ }
+ execute_open_file(filename, partinfo->content_type);
+ return;
#else
if (MIME_IMAGE == partinfo->mime_type)
cmd = prefs_common.mime_image_viewer;
diff --git a/src/prefs_common_dialog.c b/src/prefs_common_dialog.c
index 36554540..6a4108e7 100644
--- a/src/prefs_common_dialog.c
+++ b/src/prefs_common_dialog.c
@@ -2732,7 +2732,7 @@ static GtkWidget *prefs_extcmd_create(void)
gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
GTK_EXPAND | GTK_FILL, 0, 0, 0);
gtkut_combo_set_items (GTK_COMBO (uri_combo),
-#ifdef G_OS_WIN32
+#if defined(G_OS_WIN32) || defined(__APPLE__)
_("(Default browser)"),
#else
DEFAULT_BROWSER_CMD,
@@ -2760,6 +2760,8 @@ static GtkWidget *prefs_extcmd_create(void)
gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
#ifdef G_OS_WIN32
"notepad '%s'",
+#elif defined(__APPLE__)
+ "open -t '%s'",
#else
"gedit %s",
"kedit %s",