aboutsummaryrefslogtreecommitdiff
path: root/libsylph/procmsg.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-10-25 08:43:05 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-10-25 08:43:05 +0000
commit97fe8bb5863e75e62afcb6c2b6cac10299920e9c (patch)
treed45a60052e8c56c27edb0670afe3b542b547c207 /libsylph/procmsg.c
parent749d0bd1eb364a5efc52d2f0a0b4b7731c9332ba (diff)
win32: use ShellExecute() on print.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@680 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph/procmsg.c')
-rw-r--r--libsylph/procmsg.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/libsylph/procmsg.c b/libsylph/procmsg.c
index 344b43f1..0837d44b 100644
--- a/libsylph/procmsg.c
+++ b/libsylph/procmsg.c
@@ -1167,7 +1167,7 @@ void procmsg_print_message(MsgInfo *msginfo, const gchar *cmdline)
return;
}
- prtmp = g_strdup_printf("%s%cprinttmp.%08x",
+ prtmp = g_strdup_printf("%s%cprinttmp-%08x.txt",
get_mime_tmp_dir(), G_DIR_SEPARATOR, id++);
if ((prfp = g_fopen(prtmp, "wb")) == NULL) {
@@ -1228,14 +1228,31 @@ void procmsg_print_message(MsgInfo *msginfo, const gchar *cmdline)
fclose(prfp);
fclose(tmpfp);
+#ifdef G_OS_WIN32
+ if (canonicaize_file_replace(prtmp) < 0) {
+ g_free(prtmp);
+ return;
+ }
+#endif
+
if (cmdline && (p = strchr(cmdline, '%')) && *(p + 1) == 's' &&
!strchr(p + 2, '%'))
g_snprintf(buf, sizeof(buf) - 1, cmdline, prtmp);
else {
- if (cmdline)
+ if (cmdline) {
g_warning(_("Print command line is invalid: `%s'\n"),
cmdline);
+ g_free(prtmp);
+ return;
+ }
+
+#ifdef G_OS_WIN32
+ execute_print_file(prtmp);
+ g_free(prtmp);
+ return;
+#else
g_snprintf(buf, sizeof(buf) - 1, def_cmd, prtmp);
+#endif
}
g_free(prtmp);