From 106bab644a5d55f136d223fadc1440e07cd41872 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Wed, 24 Aug 2011 09:03:02 +0300 Subject: [PATCH] Fix qsystemerror for WinCE Windows CE does not have strerror(_r), so lets use string formatting provided by windowsErrorString function. In order to use windowsErrorString it was moved before standardLibraryErrorString function. Task-number: QTBUG-22498 Change-Id: Ifa20c4ac314ac8a26de6b0c5b67ced96b262c2b4 Reviewed-by: Andreas Holzammer Reviewed-by: Shane Kearns --- src/corelib/kernel/qsystemerror.cpp | 80 ++++++++++++++++------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/src/corelib/kernel/qsystemerror.cpp b/src/corelib/kernel/qsystemerror.cpp index eabb20001c..708eba89a6 100644 --- a/src/corelib/kernel/qsystemerror.cpp +++ b/src/corelib/kernel/qsystemerror.cpp @@ -46,6 +46,10 @@ # if defined(Q_CC_MSVC) # include # endif +#else +# if (_WIN32_WCE >= 0x700) +# include +# endif #endif #ifdef Q_OS_WIN #include @@ -76,42 +80,6 @@ namespace { } #endif -static QString standardLibraryErrorString(int errorCode) -{ - const char *s = 0; - QString ret; - switch (errorCode) { - case 0: - break; - case EACCES: - s = QT_TRANSLATE_NOOP("QIODevice", "Permission denied"); - break; - case EMFILE: - s = QT_TRANSLATE_NOOP("QIODevice", "Too many open files"); - break; - case ENOENT: - s = QT_TRANSLATE_NOOP("QIODevice", "No such file or directory"); - break; - case ENOSPC: - s = QT_TRANSLATE_NOOP("QIODevice", "No space left on device"); - break; - default: { - #if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && _POSIX_VERSION >= 200112L && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_QNX) - QByteArray buf(1024, '\0'); - ret = fromstrerror_helper(strerror_r(errorCode, buf.data(), buf.size()), buf); - #else - ret = QString::fromLocal8Bit(strerror(errorCode)); - #endif - break; } - } - if (s) { - // ######## this breaks moc build currently - // ret = QCoreApplication::translate("QIODevice", s); - ret = QString::fromLatin1(s); - } - return ret.trimmed(); -} - #ifdef Q_OS_WIN static QString windowsErrorString(int errorCode) { @@ -133,6 +101,46 @@ static QString windowsErrorString(int errorCode) } #endif +static QString standardLibraryErrorString(int errorCode) +{ + const char *s = 0; + QString ret; + switch (errorCode) { + case 0: + break; + case EACCES: + s = QT_TRANSLATE_NOOP("QIODevice", "Permission denied"); + break; + case EMFILE: + s = QT_TRANSLATE_NOOP("QIODevice", "Too many open files"); + break; + case ENOENT: + s = QT_TRANSLATE_NOOP("QIODevice", "No such file or directory"); + break; + case ENOSPC: + s = QT_TRANSLATE_NOOP("QIODevice", "No space left on device"); + break; + default: { + #ifdef Q_OS_WINCE + ret = windowsErrorString(errorCode); + #else + #if !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && _POSIX_VERSION >= 200112L && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_QNX) + QByteArray buf(1024, '\0'); + ret = fromstrerror_helper(strerror_r(errorCode, buf.data(), buf.size()), buf); + #else + ret = QString::fromLocal8Bit(strerror(errorCode)); + #endif + #endif + break; } + } + if (s) { + // ######## this breaks moc build currently + // ret = QCoreApplication::translate("QIODevice", s); + ret = QString::fromLatin1(s); + } + return ret.trimmed(); +} + #ifdef Q_OS_SYMBIAN static QString symbianErrorString(int errorCode) {