[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdecore
From: Jaison Lee <lee.jaison () gmail ! com>
Date: 2006-10-29 20:53:21
Message-ID: 1162155201.532509.15318.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 600192 by jlee:
Cleanup of KTempDir: Spelling and etc. fixes, update to
current D pointer conventions, indentation updates where not too
intrusive, use Q_DISABLE_COPY, etc. etc. Also added a few new
tests.
M +47 -64 ktempdir.cpp
M +8 -12 ktempdir.h
M +14 -5 tests/ktempdirtest.cpp
--- trunk/KDE/kdelibs/kdecore/ktempdir.cpp #600191:600192
@@ -1,3 +1,4 @@
+/* kate: tab-indents off; replace-tabs on; tab-width 4; remove-trailing-space on; \
encoding utf-8;*/ /*
* This file is part of the KDE libraries
* Copyright (c) 2003 Joseph Wenninger <jowenn@kde.org>
@@ -38,10 +39,6 @@
#include <paths.h>
#endif
-#ifndef _PATH_TMP
-#define _PATH_TMP "/tmp"
-#endif
-
#include <qdir.h>
#include "kglobal.h"
@@ -52,29 +49,28 @@
#include <kdebug.h>
#include "kde_file.h"
-class KTempDir::KTempDirPrivate
+class KTempDir::Private
{
public:
- int _error;
-#define mError d->_error
- QString _tmpName;
-#define mTmpName d->_tmpName
- bool _exists;
-#define bExists d->_exists
- bool _autoDelete;
-#define bAutoDelete d->_autoDelete
+ int error;
+ QString tmpName;
+ bool exists;
+ bool autoDelete;
+
+ Private()
+ {
+ autoDelete = false;
+ exists = false;
+ error=0;
+ }
};
-KTempDir::KTempDir(const QString &directoryPrefix, int mode) : d(new \
KTempDirPrivate) +KTempDir::KTempDir(const QString &directoryPrefix, int mode) : \
d(new Private) {
- bAutoDelete = false;
- bExists = false;
- mError=0;
- (void) create( directoryPrefix.isEmpty() ? KStandardDirs::locateLocal("tmp", \
KGlobal::instance()->instanceName()) : directoryPrefix , mode); + (void) create( \
directoryPrefix.isEmpty() ? KStandardDirs::locateLocal("tmp", \
KGlobal::instance()->instanceName()) : directoryPrefix , mode); }
-bool
-KTempDir::create(const QString &directoryPrefix, int mode)
+bool KTempDir::create(const QString &directoryPrefix, int mode)
{
// make sure the random seed is randomized
(void) KRandom::random();
@@ -87,15 +83,15 @@
nme = QFile::encodeName(directoryPrefix) + "XXXXXX";
kWarning(180) << "KTempDir: Error trying to create " << nme.data()
<< ": " << ::strerror(errno) << endl;
- mError = errno;
- mTmpName.clear();
+ d->error = errno;
+ d->tmpName.clear();
return false;
}
// got a return value != 0
QByteArray realNameStr(realName);
- mTmpName = QFile::decodeName(realNameStr)+'/';
- kDebug(180) << "KTempDir: Temporary directory created :" << mTmpName
+ d->tmpName = QFile::decodeName(realNameStr)+'/';
+ kDebug(180) << "KTempDir: Temporary directory created :" << d->tmpName
<< endl;
mode_t tmp = 0;
mode_t umsk = umask(tmp);
@@ -103,7 +99,7 @@
chmod(nme, mode&(~umsk));
// Success!
- bExists = true;
+ d->exists = true;
// Set uid/gid (necessary for SUID programs)
chown(nme, getuid(), getgid());
@@ -112,63 +108,51 @@
KTempDir::~KTempDir()
{
- if (bAutoDelete)
- unlink();
+ if (d->autoDelete) {
+ unlink();
+ }
- delete d;
+ delete d;
}
-int
-KTempDir::status() const
+int KTempDir::status() const
{
- return mError;
+ return d->error;
}
-QString
-KTempDir::name() const
+QString KTempDir::name() const
{
- return mTmpName;
+ return d->tmpName;
}
-bool
-KTempDir::exists() const
+bool KTempDir::exists() const
{
- return bExists;
+ return d->exists;
}
-QDir *
-KTempDir::qDir()
+QDir * KTempDir::qDir()
{
- if (bExists) return new QDir(mTmpName);
- return 0;
+ if (d->exists) return new QDir(d->tmpName);
+ return 0;
}
-void
-KTempDir::setAutoDelete(bool autoDelete)
+void KTempDir::setAutoDelete(bool autoDelete)
{
- bAutoDelete = autoDelete;
+ d->autoDelete = autoDelete;
}
-void
-KTempDir::setError(int error)
+void KTempDir::unlink()
{
- mError = error;
+ if (!d->exists) return;
+ if (KTempDir::removeDir(d->tmpName))
+ d->error=0;
+ else
+ d->error=errno;
+ d->exists=false;
}
-void
-KTempDir::unlink()
-{
- if (!bExists) return;
- if (KTempDir::removeDir(mTmpName))
- mError=0;
- else
- mError=errno;
- bExists=false;
-}
-
// Auxiliary recursive function for removeDirs
-static bool
-rmtree(const QByteArray& name)
+static bool rmtree(const QByteArray& name)
{
//kDebug(180) << "Checking directory for remove " << name << endl;
KDE_struct_stat st;
@@ -216,9 +200,9 @@
}
else
{
- // This is a non-directory file, so remove it
- kDebug(180) << "KTempDir: unlinking file " << name << endl;
- return ! ::unlink( name );
+ // This is a non-directory file, so remove it
+ kDebug(180) << "KTempDir: unlinking file " << name << endl;
+ return ! ::unlink( name );
}
}
@@ -232,4 +216,3 @@
return rmtree( cstr );
}
-
--- trunk/KDE/kdelibs/kdecore/ktempdir.h #600191:600192
@@ -26,6 +26,8 @@
class QDir;
/**
+ * @brief Create a unique directory for temporary use.
+ *
* The KTempDir class creates a unique directory for temporary use.
*
* This is especially useful if you need to create a directory in a world
@@ -40,9 +42,10 @@
* in the "tmp" resource, one should use:
* KTempDir(locateLocal("tmp", prefix));
*
- * KTempFile does not create any missing directories, but locateLocal() does.
+ * KTempDir does not create any missing directories, but locateLocal() does.
*
* @see KStandardDirs
+ * @see KTemporaryFile
* @author Joseph Wenninger <jowenn@kde.org>
*/
class KDECORE_EXPORT KTempDir
@@ -68,7 +71,7 @@
/**
- * The destructor deletes the directory and it's contents if autoDelete
+ * The destructor deletes the directory and its contents if autoDelete
* is set to true.
* @see setAutoDelete.
**/
@@ -154,17 +157,10 @@
*/
bool create(const QString &directoryPrefix, int mode);
- /**
- * Sets the errno value
- * @param error the value to set the status to.
- */
- void setError(int error);
-
private:
- class KTempDirPrivate;
- KTempDirPrivate * const d;
- KTempDir(const KTempDir&);
- KTempDir& operator=(const KTempDir&);
+ Q_DISABLE_COPY(KTempDir);
+ class Private;
+ Private * const d;
};
#endif
--- trunk/KDE/kdelibs/kdecore/tests/ktempdirtest.cpp #600191:600192
@@ -51,16 +51,25 @@
void KTempDirTest::testCreateSubDir()
{
- KTempDir dir("test");
- dir.setAutoDelete(true);
- QVERIFY(dir.status() == 0);
- QVERIFY(dir.exists());
+ KTempDir *dir = new KTempDir("test");
+ dir->setAutoDelete(true);
+ QVERIFY(dir->status() == 0);
+ QVERIFY(dir->exists());
- QDir *d = dir.qDir();
+ QDir *d = dir->qDir();
QVERIFY(d->exists());
QVERIFY(d->mkdir(QString("123")));
QVERIFY(d->mkdir(QString("456")));
+
+ QString dName = dir->name();
+ delete dir;
+ d->refresh();
+
+ QVERIFY(!QDir(dName).exists());
+ QVERIFY(!d->exists(QString("123")));
+ QVERIFY(!d->exists(QString("456")));
+ delete d;
}
QTEST_KDEMAIN(KTempDirTest, 0)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic