From d3a3a76ccc78c9fe508bb84551bf31831978a89b Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Wed, 20 Nov 2013 14:08:28 +0000 Subject: [PATCH] Fix stderr redirect platform issues .. don't use toLatin1() and fopen, use QFile and full QStrings so we can support directory names with unicode characters. .. add unistd.h for dup() and close() --- src/main.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b39bbd36e..bfa32a696 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,6 +18,7 @@ #include #include +#include #include "ChooseCyclistDialog.h" #include "MainWindow.h" #include "Settings.h" @@ -29,13 +30,14 @@ // sadly, no equivalent on Windows #ifndef WIN32 #include "stdio.h" +#include "unistd.h" void nostderr(QString dir) { // redirect stderr to a file - FILE *fp = fopen(QString("%1/goldencheetah.log").arg(dir).toLatin1(), "w+"); - if (fp) { + QFile *fp = new QFile(QString("%1/goldencheetah.log").arg(dir)); + if (fp->open(QIODevice::WriteOnly|QIODevice::Truncate) == true) { close(2); - dup(fileno(fp)); + dup(fp->handle()); } else { fprintf(stderr, "GoldenCheetah: cannot redirect stderr\n"); }