summaryrefslogtreecommitdiffabout
path: root/kabc
Unidiff
Diffstat (limited to 'kabc') (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/plugins/dir/resourcedir.cpp32
-rw-r--r--kabc/plugins/file/resourcefile.cpp16
-rw-r--r--kabc/plugins/sharpdtm/resourcesharpdtm.cpp15
3 files changed, 42 insertions, 21 deletions
diff --git a/kabc/plugins/dir/resourcedir.cpp b/kabc/plugins/dir/resourcedir.cpp
index fac06a1..7d96cb7 100644
--- a/kabc/plugins/dir/resourcedir.cpp
+++ b/kabc/plugins/dir/resourcedir.cpp
@@ -56,12 +56,14 @@ $Id$
56//US 56//US
57#include <qdir.h> 57#include <qdir.h>
58 58
59#include "resourcedir.h" 59#include "resourcedir.h"
60#include "syncprefwidget.h" 60#include "syncprefwidget.h"
61 61
62//#define ALLOW_LOCKING
63
62using namespace KABC; 64using namespace KABC;
63 65
64extern "C" 66extern "C"
65#ifdef _WIN32_ 67#ifdef _WIN32_
66__declspec(dllexport) 68__declspec(dllexport)
67#else 69#else
@@ -133,22 +135,23 @@ void ResourceDir::writeConfig( KConfig *config )
133 config->writeEntry( "FilePath", mPath ); 135 config->writeEntry( "FilePath", mPath );
134 config->writeEntry( "FileFormat", mFormatName ); 136 config->writeEntry( "FileFormat", mFormatName );
135} 137}
136 138
137Ticket *ResourceDir::requestSaveTicket() 139Ticket *ResourceDir::requestSaveTicket()
138{ 140{
139 kdDebug(5700) << "ResourceDir::requestSaveTicket()" << endl; 141
140 142
141 if ( !addressBook() ) return 0; 143 if ( !addressBook() ) return 0;
142 144#ifdef ALLOW_LOCKING
143 if ( !lock( mPath ) ) { 145 if ( !lock( mPath ) ) {
144 kdDebug(5700) << "ResourceDir::requestSaveTicket(): Unable to lock path '" 146
145 << mPath << "'" << endl;
146 return 0; 147 return 0;
147 } 148 }
149#endif
148 return createTicket( this ); 150 return createTicket( this );
151
149} 152}
150 153
151 154
152bool ResourceDir::doOpen() 155bool ResourceDir::doOpen()
153{ 156{
154 QDir dir( mPath ); 157 QDir dir( mPath );
@@ -175,14 +178,12 @@ bool ResourceDir::doOpen()
175void ResourceDir::doClose() 178void ResourceDir::doClose()
176{ 179{
177} 180}
178 181
179bool ResourceDir::load() 182bool ResourceDir::load()
180{ 183{
181 kdDebug(5700) << "ResourceDir::load(): '" << mPath << "'" << endl;
182
183 QDir dir( mPath ); 184 QDir dir( mPath );
184 QStringList files = dir.entryList( QDir::Files ); 185 QStringList files = dir.entryList( QDir::Files );
185 186
186 QStringList::Iterator it; 187 QStringList::Iterator it;
187 bool ok = true; 188 bool ok = true;
188 for ( it = files.begin(); it != files.end(); ++it ) { 189 for ( it = files.begin(); it != files.end(); ++it ) {
@@ -202,14 +203,12 @@ bool ResourceDir::load()
202 203
203 return ok; 204 return ok;
204} 205}
205 206
206bool ResourceDir::save( Ticket *ticket ) 207bool ResourceDir::save( Ticket *ticket )
207{ 208{
208 kdDebug(5700) << "ResourceDir::save(): '" << mPath << "'" << endl;
209
210 AddressBook::Iterator it; 209 AddressBook::Iterator it;
211 bool ok = true; 210 bool ok = true;
212 211
213 mDirWatch.stopScan(); 212 mDirWatch.stopScan();
214 213
215 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 214 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
@@ -229,42 +228,38 @@ bool ResourceDir::save( Ticket *ticket )
229 228
230 file.close(); 229 file.close();
231 } 230 }
232 mDirWatch.startScan(); 231 mDirWatch.startScan();
233 232
234 delete ticket; 233 delete ticket;
234#ifdef ALLOW_LOCKING
235 unlock( mPath ); 235 unlock( mPath );
236 236#endif
237 return ok; 237 return ok;
238} 238}
239 239
240bool ResourceDir::lock( const QString &path ) 240bool ResourceDir::lock( const QString &path )
241{ 241{
242 kdDebug(5700) << "ResourceDir::lock()" << endl; 242#ifdef ALLOW_LOCKING
243
244 QString p = path; 243 QString p = path;
245//US change the implementation how the lockfilename is getting created 244//US change the implementation how the lockfilename is getting created
246//US p.replace( QRegExp("/"), "_" ); 245//US p.replace( QRegExp("/"), "_" );
247//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" ); 246//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" );
248 KURL url(p); 247 KURL url(p);
249 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 248 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
250 249
251 250
252 kdDebug(5700) << "-- lock name: " << lockName << endl;
253
254 if ( QFile::exists( lockName ) ) return false; 251 if ( QFile::exists( lockName ) ) return false;
255 252
256 QString lockUniqueName; 253 QString lockUniqueName;
257 lockUniqueName = p + KApplication::randomString( 8 ); 254 lockUniqueName = p + KApplication::randomString( 8 );
258 255
259 url = lockUniqueName; 256 url = lockUniqueName;
260//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 257//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
261 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 258 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
262 259
263 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
264
265 // Create unique file 260 // Create unique file
266 QFile file( mLockUniqueName ); 261 QFile file( mLockUniqueName );
267 file.open( IO_WriteOnly ); 262 file.open( IO_WriteOnly );
268 file.close(); 263 file.close();
269 264
270 // Create lock file 265 // Create lock file
@@ -278,26 +273,33 @@ bool ResourceDir::lock( const QString &path )
278 return true; 273 return true;
279 } 274 }
280 275
281 // TODO: check stat 276 // TODO: check stat
282 277
283 return false; 278 return false;
279#else
280 return true;
281#endif
284} 282}
285 283
286void ResourceDir::unlock( const QString &path ) 284void ResourceDir::unlock( const QString &path )
287{ 285{
286#ifdef ALLOW_LOCKING
288 QString p = path; 287 QString p = path;
289//US change the implementation how the lockfilename is getting created 288//US change the implementation how the lockfilename is getting created
290//US p.replace( QRegExp( "/" ), "_" ); 289//US p.replace( QRegExp( "/" ), "_" );
291//US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" ); 290//US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" );
292 KURL url(p); 291 KURL url(p);
293 QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" ); 292 QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" );
294 293
295 ::unlink( QFile::encodeName( lockName ) ); 294 ::unlink( QFile::encodeName( lockName ) );
296 QFile::remove( mLockUniqueName ); 295 QFile::remove( mLockUniqueName );
297 addressBook()->emitAddressBookUnlocked(); 296 addressBook()->emitAddressBookUnlocked();
297#else
298 return;
299#endif
298} 300}
299 301
300void ResourceDir::setPath( const QString &path ) 302void ResourceDir::setPath( const QString &path )
301{ 303{
302 mDirWatch.stopScan(); 304 mDirWatch.stopScan();
303 mDirWatch.removeDir( mPath ); 305 mDirWatch.removeDir( mPath );
diff --git a/kabc/plugins/file/resourcefile.cpp b/kabc/plugins/file/resourcefile.cpp
index fa6bc49..17263ae 100644
--- a/kabc/plugins/file/resourcefile.cpp
+++ b/kabc/plugins/file/resourcefile.cpp
@@ -50,12 +50,13 @@ $Id$
50#include "resourcefileconfig.h" 50#include "resourcefileconfig.h"
51#include "stdaddressbook.h" 51#include "stdaddressbook.h"
52 52
53#include "resourcefile.h" 53#include "resourcefile.h"
54#include "syncprefwidget.h" 54#include "syncprefwidget.h"
55 55
56//#define ALLOW_LOCKING
56 57
57using namespace KABC; 58using namespace KABC;
58 59
59extern "C" 60extern "C"
60#ifdef _WIN32_ 61#ifdef _WIN32_
61__declspec(dllexport) 62__declspec(dllexport)
@@ -144,17 +145,18 @@ void ResourceFile::writeConfig( KConfig *config )
144Ticket *ResourceFile::requestSaveTicket() 145Ticket *ResourceFile::requestSaveTicket()
145{ 146{
146 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl; 147 kdDebug(5700) << "ResourceFile::requestSaveTicket()" << endl;
147 148
148 if ( !addressBook() ) return 0; 149 if ( !addressBook() ) return 0;
149 150
151#ifdef ALLOW_LOCKING
150 if ( !lock( mFileName ) ) { 152 if ( !lock( mFileName ) ) {
151 kdDebug(5700) << "ResourceFile::requestSaveTicket(): Unable to lock file '" 153 qDebug("unablt to lock file ");
152 << mFileName << "'" << endl;
153 return 0; 154 return 0;
154 } 155 }
156#endif
155 return createTicket( this ); 157 return createTicket( this );
156} 158}
157 159
158 160
159bool ResourceFile::doOpen() 161bool ResourceFile::doOpen()
160{ 162{
@@ -243,19 +245,22 @@ bool ResourceFile::save( Ticket *ticket )
243 if ( !ok ) 245 if ( !ok )
244 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) ); 246 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) );
245 247
246 mDirWatch.startScan(); 248 mDirWatch.startScan();
247 249
248 delete ticket; 250 delete ticket;
251#ifdef ALLOW_LOCKING
249 unlock( mFileName ); 252 unlock( mFileName );
253#endif
250 254
251 return ok; 255 return ok;
252} 256}
253 257
254bool ResourceFile::lock( const QString &fileName ) 258bool ResourceFile::lock( const QString &fileName )
255{ 259{
260#ifdef ALLOW_LOCKING
256 261
257 262
258 QString fn = fileName; 263 QString fn = fileName;
259 264
260//US change the implementation how the lockfilename is getting created 265//US change the implementation how the lockfilename is getting created
261//US fn.replace( QRegExp("/"), "_" ); 266//US fn.replace( QRegExp("/"), "_" );
@@ -292,27 +297,34 @@ bool ResourceFile::lock( const QString &fileName )
292 return true; 297 return true;
293 } 298 }
294 299
295 // TODO: check stat 300 // TODO: check stat
296 301
297 return false; 302 return false;
303#else
304 return true;
305#endif
298} 306}
299 307
300void ResourceFile::unlock( const QString &fileName ) 308void ResourceFile::unlock( const QString &fileName )
301{ 309{
310#ifdef ALLOW_LOCKING
302 QString fn = fileName; 311 QString fn = fileName;
303//US change the implementation how the lockfilename is getting created 312//US change the implementation how the lockfilename is getting created
304//US fn.replace( QRegExp( "/" ), "_" ); 313//US fn.replace( QRegExp( "/" ), "_" );
305//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 314//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
306//US QString lockName = fn + ".lock"; 315//US QString lockName = fn + ".lock";
307 KURL url(fn); 316 KURL url(fn);
308 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 317 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
309 318
310 QFile::remove( lockName ); 319 QFile::remove( lockName );
311 QFile::remove( mLockUniqueName ); 320 QFile::remove( mLockUniqueName );
312 addressBook()->emitAddressBookUnlocked(); 321 addressBook()->emitAddressBookUnlocked();
322#else
323 return;
324#endif
313} 325}
314 326
315void ResourceFile::setFileName( const QString &fileName ) 327void ResourceFile::setFileName( const QString &fileName )
316{ 328{
317 mDirWatch.stopScan(); 329 mDirWatch.stopScan();
318 mDirWatch.removeFile( mFileName ); 330 mDirWatch.removeFile( mFileName );
diff --git a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
index 8a795e9..867bc07 100644
--- a/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
+++ b/kabc/plugins/sharpdtm/resourcesharpdtm.cpp
@@ -51,13 +51,13 @@ $Id$
51 51
52#include "syncprefwidget.h" 52#include "syncprefwidget.h"
53 53
54#include "stdaddressbook.h" 54#include "stdaddressbook.h"
55 55
56#include "sharpdtmconverter.h" 56#include "sharpdtmconverter.h"
57 57//#define ALLOW_LOCKING
58using namespace KABC; 58using namespace KABC;
59extern "C" 59extern "C"
60{ 60{
61 void *init_microkabc_sharpdtm() 61 void *init_microkabc_sharpdtm()
62 { 62 {
63 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig,SyncPrefWidgetContainer>(); 63 return new KRES::PluginFactory<ResourceSharpDTM,ResourceSharpDTMConfig,SyncPrefWidgetContainer>();
@@ -102,23 +102,24 @@ void ResourceSharpDTM::writeConfig( KConfig *config )
102{ 102{
103 Resource::writeConfig( config ); 103 Resource::writeConfig( config );
104} 104}
105 105
106Ticket *ResourceSharpDTM::requestSaveTicket() 106Ticket *ResourceSharpDTM::requestSaveTicket()
107{ 107{
108 kdDebug(5700) << "ResourceSharpDTM::requestSaveTicket()" << endl; 108
109 109
110 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1()); 110 qDebug("ResourceSharpDTM::requestSaveTicket: %s", fileName().latin1());
111 111
112 if ( !addressBook() ) return 0; 112 if ( !addressBook() ) return 0;
113 113
114#ifdef ALLOW_LOCKING
114 if ( !lock( fileName() ) ) { 115 if ( !lock( fileName() ) ) {
115 kdDebug(5700) << "ResourceSharpDTM::requestSaveTicket(): Unable to lock file '" 116 qDebug("ResourceSharpDTM::requestSaveTicket(): Unable to lock file ");
116 << fileName() << "'" << endl;
117 return 0; 117 return 0;
118 } 118 }
119#endif
119 return createTicket( this ); 120 return createTicket( this );
120} 121}
121 122
122 123
123bool ResourceSharpDTM::doOpen() 124bool ResourceSharpDTM::doOpen()
124{ 125{
@@ -237,12 +238,13 @@ bool ResourceSharpDTM::save( Ticket *ticket )
237 238
238 return true; 239 return true;
239} 240}
240 241
241bool ResourceSharpDTM::lock( const QString &lockfileName ) 242bool ResourceSharpDTM::lock( const QString &lockfileName )
242{ 243{
244#ifdef ALLOW_LOCKING
243 qDebug("ResourceSharpDTM::lock: %s", fileName().latin1()); 245 qDebug("ResourceSharpDTM::lock: %s", fileName().latin1());
244 246
245 kdDebug(5700) << "ResourceSharpDTM::lock()" << endl; 247 kdDebug(5700) << "ResourceSharpDTM::lock()" << endl;
246 248
247 QString fn = lockfileName; 249 QString fn = lockfileName;
248 250
@@ -282,25 +284,30 @@ bool ResourceSharpDTM::lock( const QString &lockfileName )
282 return true; 284 return true;
283 } 285 }
284 286
285 // TODO: check stat 287 // TODO: check stat
286 288
287 return false; 289 return false;
290#else
291 return true;
292#endif
288} 293}
289 294
290void ResourceSharpDTM::unlock( const QString &fileName ) 295void ResourceSharpDTM::unlock( const QString &fileName )
291{ 296{
297#ifdef ALLOW_LOCKING
292 qDebug("ResourceSharpDTM::unlock() %s", fileName.latin1()); 298 qDebug("ResourceSharpDTM::unlock() %s", fileName.latin1());
293 299
294 QString fn = fileName; 300 QString fn = fileName;
295 KURL url(fn); 301 KURL url(fn);
296 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 302 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
297 303
298 QFile::remove( lockName ); 304 QFile::remove( lockName );
299 QFile::remove( mLockUniqueName ); 305 QFile::remove( mLockUniqueName );
300 addressBook()->emitAddressBookUnlocked(); 306 addressBook()->emitAddressBookUnlocked();
307#endif
301} 308}
302 309
303void ResourceSharpDTM::setFileName( const QString &newFileName ) 310void ResourceSharpDTM::setFileName( const QString &newFileName )
304{ 311{
305 mDirWatch.stopScan(); 312 mDirWatch.stopScan();
306 mDirWatch.removeFile( fileName() ); 313 mDirWatch.removeFile( fileName() );