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()
This commit is contained in:
Mark Liversedge
2013-11-20 14:08:28 +00:00
parent d548cccf49
commit d3a3a76ccc

View File

@@ -18,6 +18,7 @@
#include <QApplication>
#include <QtGui>
#include <QFile>
#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");
}