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 <andreas.holzammer@kdab.com> Reviewed-by: Shane Kearns <ext-shane.2.kearns@nokia.com>bb10
parent
f0841fe4cf
commit
106bab644a
|
|
@ -46,6 +46,10 @@
|
|||
# if defined(Q_CC_MSVC)
|
||||
# include <crtdbg.h>
|
||||
# endif
|
||||
#else
|
||||
# if (_WIN32_WCE >= 0x700)
|
||||
# include <errno.h>
|
||||
# endif
|
||||
#endif
|
||||
#ifdef Q_OS_WIN
|
||||
#include <windows.h>
|
||||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue