diff options
Diffstat (limited to 'kiostdetool/kiosksync.cpp')
-rw-r--r-- | kiostdetool/kiosksync.cpp | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/kiostdetool/kiosksync.cpp b/kiostdetool/kiosksync.cpp deleted file mode 100644 index 3f20044..0000000 --- a/kiostdetool/kiosksync.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - * kiosksync.cpp - * - * Copyright (C) 2004 Waldo Bastian <[email protected]> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include "kiosksync.h" - -#include <tqdir.h> -#include <tqwidget.h> - -#include <kdebug.h> -#include <klocale.h> -#include <ksimpleconfig.h> -#include <kstandarddirs.h> - -KioskSync::KioskSync( TQWidget* parent, const char* name) - : TQObject(parent, name), - m_parent(parent) -{ -} - -KioskSync::~KioskSync() -{ -} - -void -KioskSync::addDir(const TQString &_src, const KURL &dest) -{ - TQString src = _src; - if (!src.endsWith("/")) - src.append("/"); - - m_syncDirs.append(SyncDir(src, dest)); -} - -bool -KioskSync::sync(bool incremental) -{ - m_incremental = incremental; - m_timestamps = new KSimpleConfig(locateLocal("appdata", "profile-data")); - - bool canceled = false; - - for(SyncDirList::ConstIterator it = m_syncDirs.begin(); - it != m_syncDirs.end(); ++it) - { - m_changedFiles.clear(); - m_changedDirs.clear(); - - m_timestamps->setGroup((*it).src); - - if (!KioskRun::self()->createRemoteDirRecursive((*it).dest, true)) - { - canceled = true; - break; - } - - scanChangedFiles((*it).src, TQString()); - - for(TQStringList::ConstIterator it2 = m_changedDirs.begin(); - it2 != m_changedDirs.end(); ++it2) - { - KURL dest = (*it).dest; - dest.setPath(dest.path(1) + *it2); - if (!KioskRun::self()->createRemoteDir(dest)) - { - canceled = true; - break; - } - } - - if (canceled) - break; - - for(TQStringList::ConstIterator it2 = m_changedFiles.begin(); - it2 != m_changedFiles.end(); ++it2) - { - KURL dest = (*it).dest; - dest.setPath(dest.path(1) + *it2); - if (!syncFile((*it).src, *it2, dest)) - { - canceled = true; - break; - } - } - if (canceled) - break; - } - delete m_timestamps; - m_changedFiles.clear(); - m_changedDirs.clear(); - - return !canceled; -} - -TQStringList -KioskSync::listFiles() -{ - m_changedFiles.clear(); - m_changedDirs.clear(); - m_incremental = false; - m_timestamps = 0; - - for(SyncDirList::ConstIterator it = m_syncDirs.begin(); - it != m_syncDirs.end(); ++it) - { - scanChangedFiles((*it).src, TQString()); - } - return m_changedFiles; -} - -void -KioskSync::addChangedDir(const TQString &dir) -{ - if (dir.isEmpty()) - return; - - if (m_changedDirs.contains(dir)) - return; - - int i = dir.findRev('/', -2); - if (i != -1) - { - TQString parentDir = dir.left(i+1); - addChangedDir(parentDir); - } - - kdDebug() << "KioskSync: Adding " << dir << endl; - m_changedDirs.append(dir); -} - -void -KioskSync::scanChangedFiles(const TQString &_dir, const TQString &prefix) -{ - kdDebug() << "KioskSync: Scanning " << _dir << endl; - TQDir dir(_dir); - if (!dir.exists()) - { - emit warning(i18n("Directory <b>%1</b> does not exist.").arg(_dir)); - return; - } - if (!dir.isReadable()) - { - emit warning(i18n("Directory <b>%1</b> is not readable.").arg(_dir)); - return; - } - - TQStringList subDirs; - const TQFileInfoList *list = dir.entryInfoList(TQDir::Dirs | TQDir::Files | TQDir::NoSymLinks); - - bool dirtyDir = false; - TQFileInfoListIterator it( *list ); - for ( TQFileInfo *fi; (fi = it.current()) != 0; ++it) - { - if (fi->isDir()) - { - TQString subDir = fi->fileName(); - if ((subDir != ".") && (subDir != "..")) - subDirs.append(subDir+"/"); - continue; - } - - // TODO: Check file - TQString file = prefix + fi->fileName(); - TQDateTime lastModified = fi->lastModified(); - if (!m_incremental || !m_timestamps->hasKey(file) || - (m_timestamps->readDateTimeEntry(file) != lastModified)) - { - dirtyDir = true; - m_changedFiles.append(file); - } - } - if (dirtyDir) - addChangedDir(prefix); - - for( TQStringList::ConstIterator it = subDirs.begin(); - it != subDirs.end(); ++it) - { - TQString subDir = *it; - scanChangedFiles(_dir + subDir, prefix + subDir); - } -} - -bool -KioskSync::syncFile(const TQString &prefix, const TQString &file, const KURL &dest) -{ - kdDebug() << "KioskSync: Syncing [" << prefix << "]" << file << " --> " << dest.prettyURL() << endl; - - if (!KioskRun::self()->uploadRemote(prefix+file, dest)) - return false; - - TQFileInfo fi(prefix+file); - m_timestamps->writeEntry(file, fi.lastModified()); - return true; -} - -#include "kiosksync.moc" |