Browse Source

Clear temp directory when done compiling.

git-svn-id: file:///var/svn/tigccpp/trunk@615 9552661e-59e3-4036-b4f2-dbe53926924f
kevinkofler 18 years ago
parent
commit
4398a2cebb
3 changed files with 30 additions and 3 deletions
  1. 25 0
      ktigcc/ktigcc.cpp
  2. 4 3
      ktigcc/ktigcc.h
  3. 1 0
      ktigcc/mainform.ui.h

+ 25 - 0
ktigcc/ktigcc.cpp

@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include <qstring.h>
 #include <qimage.h>
+#include <qdir.h>
 #include <kapplication.h>
 #include <kcmdlineargs.h>
 #include <kaboutdata.h>
@@ -165,6 +166,30 @@ void delete_temp_file(const char *filename)
   if (unlink(buffer)) {fputs("Fatal error: Can't delete temp file!\n",stderr); exit(1);}
 }
 
+static bool clear_dir(const QString &dirname)
+{
+  QDir qdir(dirname);
+  QStringList subdirs=qdir.entryList(QDir::Dirs|QDir::Hidden);
+  for (QStringList::Iterator it=subdirs.begin();it!=subdirs.end();++it) {
+    if ((*it).compare(".") && (*it).compare("..")) {
+      QString subdir=dirname+"/"+*it;
+      if (!clear_dir(subdir)) return FALSE;
+      if (!qdir.rmdir(subdir)) return FALSE;
+    }
+  }
+  QStringList files=qdir.entryList(QDir::Files|QDir::Hidden);
+  for (QStringList::Iterator it=files.begin();it!=files.end();++it) {
+    QString file=dirname+"/"+*it;
+    if (!qdir.remove(file)) return FALSE;
+  }
+  return TRUE;
+}
+
+void clear_temp_dir(void)
+{
+  if (!clear_dir(tempdir)) {fputs("Fatal error: Can't delete temp file!\n",stderr); exit(1);};
+}
+
 void force_qt_assistant_page(int n)
 {
   char *home=getenv("HOME");

+ 4 - 3
ktigcc/ktigcc.h

@@ -32,9 +32,10 @@ extern const char *quill_drv;
 extern bool have_fargo;
 extern bool have_flashos;
 extern char tempdir[];
-extern void write_temp_file(const char *filename, const char *data, const size_t len);
-extern void delete_temp_file(const char *filename);
-extern void force_qt_assistant_page(int n);
+void write_temp_file(const char *filename, const char *data, const size_t len);
+void delete_temp_file(const char *filename);
+void clear_temp_dir(void);
+void force_qt_assistant_page(int n);
 const char *lookup_doc_keyword(const char *keyword);
 extern KConfig *pconfig;
 extern KAboutData *pabout;

+ 1 - 0
ktigcc/mainform.ui.h

@@ -2725,6 +2725,7 @@ void MainForm::startCompiling()
 
 void MainForm::stopCompiling()
 {
+  clear_temp_dir();
   stopCompilingFlag=FALSE;
   forceQuitFlag=FALSE;
   compiling=FALSE;