* don't insist on using xdg-open; use "open" on MacOS or what MU_PLAY_PROGRAM sets

This commit is contained in:
djcb
2012-01-23 00:11:23 +02:00
parent 22aeb33c4c
commit 688d571715
5 changed files with 29 additions and 38 deletions

View File

@ -248,18 +248,6 @@ AM_CONDITIONAL(HAVE_MAKEINFO, [test "x$have_makeinfo" = "xyes"])
###############################################################################
# check for xdg-open
AS_IF([test "x$buildgui"="xyes"],[
AC_PATH_PROG(XDGOPEN, [xdg-open], [], [$PATH])
AS_IF([test "x$XDGOPEN" != "x"],[
AC_DEFINE_UNQUOTED([XDGOPEN], ["$XDGOPEN"],[Path to xdg-open])],[
AC_MSG_WARN([xdg-open not found, mu cannot open attachments])])
])
###############################################################################
###############################################################################
# check for pmccabe
AC_PATH_PROG([PMCCABE],[pmccabe],[pmccabe],[no])
@ -326,7 +314,6 @@ echo
echo "Build unit tests (glib >= 2.22) : $have_gtest"
echo "Build 'mug' toy-ui (requires GTK+) : $buildgui"
echo "McCabe's Cyclomatic Complexity tool : $have_pmccabe"
echo "xdg-open : $XDGOPEN"
echo
echo "Have direntry->d_ino : $use_dirent_d_ino"

View File

@ -1,6 +1,6 @@
.TH MU EXTRACT 1 "May 2011" "User Manuals"
.SH NAME
.SH NAME
mu extract\- display and save message parts (attachments), and open them with
other tools.
@ -57,8 +57,9 @@ allowed.
.TP
\fB\-\-play\fR Try to 'play' (open) the attachment with the default
application for the particular file type. Depends on the \fBxdg-open\fR
utility.
application for the particular file type. On MacOS, this uses the \fBopen\fR
program, on other platforms is uses \fBxdg-open\fR. You can choose a different
program by setting the \fBMU_PLAY_PROGRAM\fR environment variable.
.SH EXAMPLES
@ -78,8 +79,7 @@ To extract all files ending in '.jpg' (case-insensitive):
$ mu extract msgfile '.*\.jpg'
.fi
To extract an mp3-file, and play it in the the default mp3-playing application
(requires \fIxdg-open\fR):
To extract an mp3-file, and play it in the the default mp3-playing application.
.nf
$ mu extract --play msgfile 'whoopsididitagain.mp3'
.fi
@ -95,4 +95,4 @@ Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
.SH "SEE ALSO"
.BR mu(1) xdg-open(1)
.BR mu(1)

View File

@ -114,9 +114,7 @@ Using the \fBsave\fR command, we can save an attachment from a message to disk.
.TP
.B open
Using the \fBsave\fR command, we can open an attachment file (using the
\fBxdg-open\fR program).
Using the \fBopen\fR command, we can open an attachment file.
.nf
-> open <docid> <partindex>
<- (:info open :message "<filename> has been opened")

View File

@ -324,38 +324,42 @@ mu_util_is_local_file (const char* path)
}
gboolean
mu_util_play (const char *path, gboolean allow_local, gboolean allow_remote)
{
#ifndef XDGOPEN
g_warning ("opening files not supported (xdg-open missing)");
return FALSE;
#else
gboolean rv;
GError *err;
const gchar *argv[3];
const gchar *prog;
char *cmdline;
g_return_val_if_fail (path, FALSE);
g_return_val_if_fail (mu_util_is_local_file (path) || allow_remote,
FALSE);
g_return_val_if_fail (!mu_util_is_local_file (path) || allow_local,
FALSE);
argv[0] = XDGOPEN;
argv[1] = path;
argv[2] = NULL;
prog = g_getenv ("MU_PLAY_PROGRAM");
if (!prog) {
#ifdef __APPLE__
prog = "open";
#else
prog = "xdg-open";
#endif /*!__APPLE__*/
}
cmdline = g_strconcat (prog, " ", path, NULL);
err = NULL;
rv = g_spawn_async (NULL, (gchar**)&argv, NULL, 0,
NULL, NULL, NULL, &err);
rv = g_spawn_command_line_async (cmdline, &err);
if (!rv) {
g_warning ("failed to spawn xdg-open: %s",
err->message ? err->message : "error");
g_warning ("failed to spawn %s: %s",
cmdline, err->message ? err->message : "error");
g_error_free (err);
}
g_free (cmdline);
return rv;
#endif /*XDGOPEN*/
}

View File

@ -179,8 +179,10 @@ gboolean mu_util_printerr_encoded (const char *frm, ...) G_GNUC_PRINTF(1,2);
/**
* try to 'play' (ie., open with it's associated program) a
* file. depends on xdg-open to do the actual opening
* Try to 'play' (ie., open with it's associated program) a file. On
* MacOS, the the program 'open' is used for this; on other platforms
* 'xdg-open' to do the actual opening. In addition you can set it to another program
* by setting the MU_PLAY_PROGRAM environment variable
*
* @param path full path of the file to open
* @param allow_local allow local files (ie. with file:// prefix or fs paths)