From 070e412f18875b74e329d932d65b2917d8d81bd7 Mon Sep 17 00:00:00 2001 From: hiro Date: Fri, 25 Feb 2011 06:34:07 +0000 Subject: use 'open' command on OS X. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2847 ee746299-78ed-0310-b773-934348b2243d --- ChangeLog | 8 ++++++++ libsylph/defs.h | 6 +++++- libsylph/utils.c | 14 ++++++++++++-- src/mimeview.c | 15 +++++++++++++++ src/prefs_common_dialog.c | 4 +++- 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", -- cgit v1.2.3