author | zautrix <zautrix> | 2005-04-21 22:07:10 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-04-21 22:07:10 (UTC) |
commit | 6284b1d7d597463347b471ed8ec2770f4e2d449b (patch) (side-by-side diff) | |
tree | 5444a13ed788191733fec406791ddf03ec246b59 /pwmanager | |
parent | fd38343ef53c9b2a48208f747100579703cc1814 (diff) | |
download | kdepimpi-6284b1d7d597463347b471ed8ec2770f4e2d449b.zip kdepimpi-6284b1d7d597463347b471ed8ec2770f4e2d449b.tar.gz kdepimpi-6284b1d7d597463347b471ed8ec2770f4e2d449b.tar.bz2 |
fixes
-rw-r--r-- | pwmanager/pwmanager/pwmdoc.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/pwmanager/pwmanager/pwmdoc.cpp b/pwmanager/pwmanager/pwmdoc.cpp index 61f2616..36b0df5 100644 --- a/pwmanager/pwmanager/pwmdoc.cpp +++ b/pwmanager/pwmanager/pwmdoc.cpp @@ -14,48 +14,50 @@ * This file is originaly based on version 1.1 of pwmanager * and was modified to run on embedded devices that run microkde * * $Id$ **************************************************************************/ #include "pwmdoc.h" #include "pwmview.h" #include "blowfish.h" #include "sha1.h" #include "globalstuff.h" #include "gpasmanfile.h" #include "serializer.h" #include "compressgzip.h" //US#include "compressbzip2.h" #include "randomizer.h" #include "pwminit.h" #include "libgcryptif.h" #ifdef PWM_EMBEDDED #include "pwmprefs.h" #include "kglobal.h" #endif #include <kmessagebox.h> +#include <kconfig.h> +#include <kglobalsettings.h> #include <libkcal/syncdefines.h> #ifdef CONFIG_KWALLETIF # include "kwalletemu.h" #endif // CONFIG_KWALLETIF #include <qdatetime.h> #include <qsize.h> #include <qfileinfo.h> #include <qfile.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> //US#include <iostream> #include <algorithm> #include <sys/types.h> #include <sys/stat.h> #ifndef _WIN32_ #include <unistd.h> #include <stdint.h> #endif @@ -406,48 +408,91 @@ PwMerror PwMDoc::saveDoc(char compress, const QString *file) int _hashAlgo = conf()->confGlobHashAlgo(); // sanity check for the selected algorithms if (_cryptAlgo < PWM_CRYPT_BLOWFISH || _cryptAlgo > PWM_CRYPT_TWOFISH128) { printWarn("Invalid Crypto-Algorithm selected! " "Config-file seems to be corrupt. " "Falling back to Blowfish."); _cryptAlgo = PWM_CRYPT_BLOWFISH; } if (_hashAlgo < PWM_HASH_SHA1 || _hashAlgo > PWM_HASH_TIGER) { printWarn("Invalid Hash-Algorithm selected! " "Config-file seems to be corrupt. " "Falling back to SHA1."); _hashAlgo = PWM_HASH_SHA1; } char cryptAlgo = static_cast<char>(_cryptAlgo); char hashAlgo = static_cast<char>(_hashAlgo); if (conf()->confGlobMakeFileBackup()) { if (!backupFile(filename)) return e_fileBackup; } + int mLastBackupDate = 0; + KConfig configGlobal (locateLocal("config","pwmanagerbuprc")); + QFileInfo fileInfo ( filename ); + mLastBackupDate = configGlobal.readNumEntry( "LastBackupDate-"+ fileInfo.fileName (), 0 ); + KConfig config (locateLocal("config","microkdeglobalrc")); + config.setGroup( "BackupSettings" ); + bool b_enabled = config.readBoolEntry( "BackupEnabled" ); + if ( b_enabled ) { + int num = config.readNumEntry( "BackupNumbers" ); + int d_count = config.readNumEntry( "BackupDayCount" ); + bool stdDir = config.readBoolEntry( "BackupUseDefaultDir" ); + QString bupDir = config.readEntry( "BackupDatadir" ); + QDate reference ( 2000,1,1 ); + int daysTo = reference.daysTo ( QDate::currentDate() ); + bool saveDate = false; + if ( daysTo - d_count >= mLastBackupDate ) { + qDebug("KA: Last backup was %d days ago ", daysTo - mLastBackupDate ); + if ( stdDir ) + bupDir = KGlobalSettings::backupDataDir(); + int retval = KApplication::createBackup( filename, bupDir, num ); + if ( retval == 0 ) { + qDebug("KO: Backup cancelled. Will try again tomorrow "); + // retval == 0 : backup skipped for today, try again tomorrow + mLastBackupDate = daysTo - d_count+1; + saveDate = true; + } else if ( retval == 1 ){ + qDebug("KO: Backup created."); + // backup ok + mLastBackupDate = daysTo; + saveDate = true; + } else if ( retval == 2 ){ + qDebug("KO: Backup globally cancelled."); + // backup globally cancelled + b_enabled = false; + } + if ( !b_enabled ) { + config.writeEntry( "mBackupEnabled", false ); + } + if ( saveDate ) { + configGlobal.writeEntry( "LastBackupDate-"+ fileInfo.fileName (), mLastBackupDate ); + } + } + } if (QFile::exists(filename)) { /* Move the existing file to some tmp file. * When saving file succeeds, delete tmp file. Otherwise * move tmp file back. See below. */ Randomizer *rnd = Randomizer::obj(); char rnd_buf[5]; sprintf(rnd_buf, "%X%X%X%X", rnd->genRndChar() & 0xFF, rnd->genRndChar() & 0xFF, rnd->genRndChar() & 0xFF, rnd->genRndChar() & 0xFF); tmpFileMoved = filename + "." + rnd_buf + ".mv"; if (!copyFile(filename, tmpFileMoved)) return e_openFile; if (!QFile::remove(filename)) { printWarn(string("removing orig file ") + filename.latin1() + " failed!"); } } f.setName(filename); if (!f.open(IO_ReadWrite)) { ret = e_openFile; goto out_moveback; } e = writeFileHeader(hashAlgo, hashAlgo, |