[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