diff options
author | Rafael Roquetto <rafael.roquetto@kdab.com> | 2012-01-24 18:14:07 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-31 16:17:55 +0100 |
commit | eb60e93d347bfa439df3e900b1fc899ed85fb6de (patch) | |
tree | 6d942fde8c3ac7e8c480116ec518d563ce423c6b /src/corelib/io/qtemporarydir.cpp | |
parent | 4fce5d1795eaf6b9911e139b7ec50292d004e269 (diff) |
mkdtemp() support for QNX platform
Change-Id: I30feebbbcdbe065e899a048da20ac887d4d48a4f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/corelib/io/qtemporarydir.cpp')
-rw-r--r-- | src/corelib/io/qtemporarydir.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/corelib/io/qtemporarydir.cpp b/src/corelib/io/qtemporarydir.cpp index 6cacce8035..fedbb695e8 100644 --- a/src/corelib/io/qtemporarydir.cpp +++ b/src/corelib/io/qtemporarydir.cpp @@ -95,6 +95,42 @@ static QString defaultTemplateName() return QDir::tempPath() + QLatin1Char('/') + baseName + QLatin1String("-XXXXXX"); } +#ifdef Q_OS_QNX +static char *mkdtemp(char *templateName) +{ + static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + + const int length = strlen(templateName); + + char *XXXXXX = templateName + length - 6; + + if ((length < 6) || strncmp(XXXXXX, "XXXXXX", 6)) + return 0; + + for (int i = 0; i < 256; ++i) { + int v = qrand(); + + /* Fill in the random bits. */ + XXXXXX[0] = letters[v % 62]; + v /= 62; + XXXXXX[1] = letters[v % 62]; + v /= 62; + XXXXXX[2] = letters[v % 62]; + v /= 62; + XXXXXX[3] = letters[v % 62]; + v /= 62; + XXXXXX[4] = letters[v % 62]; + v /= 62; + XXXXXX[5] = letters[v % 62]; + + if (!mkdir(templateName, 0700)) + return templateName; + } + + return 0; +} +#endif + void QTemporaryDirPrivate::create(const QString &templateName) { #ifdef Q_OS_WIN |