Diffstat (limited to 'kabc/plugins/dir/resourcedir.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kabc/plugins/dir/resourcedir.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kabc/plugins/dir/resourcedir.cpp b/kabc/plugins/dir/resourcedir.cpp index be19821..6ea2f4b 100644 --- a/kabc/plugins/dir/resourcedir.cpp +++ b/kabc/plugins/dir/resourcedir.cpp | |||
@@ -215,99 +215,101 @@ bool ResourceDir::save( Ticket *ticket ) | |||
215 | continue; | 215 | continue; |
216 | } | 216 | } |
217 | 217 | ||
218 | mFormat->save( *it, &file ); | 218 | mFormat->save( *it, &file ); |
219 | 219 | ||
220 | // mark as unchanged | 220 | // mark as unchanged |
221 | (*it).setChanged( false ); | 221 | (*it).setChanged( false ); |
222 | 222 | ||
223 | file.close(); | 223 | file.close(); |
224 | } | 224 | } |
225 | 225 | ||
226 | delete ticket; | 226 | delete ticket; |
227 | unlock( mPath ); | 227 | unlock( mPath ); |
228 | 228 | ||
229 | return ok; | 229 | return ok; |
230 | } | 230 | } |
231 | 231 | ||
232 | bool ResourceDir::lock( const QString &path ) | 232 | bool ResourceDir::lock( const QString &path ) |
233 | { | 233 | { |
234 | kdDebug(5700) << "ResourceDir::lock()" << endl; | 234 | kdDebug(5700) << "ResourceDir::lock()" << endl; |
235 | 235 | ||
236 | QString p = path; | 236 | QString p = path; |
237 | //US change the implementation how the lockfilename is getting created | 237 | //US change the implementation how the lockfilename is getting created |
238 | //US p.replace( QRegExp("/"), "_" ); | 238 | //US p.replace( QRegExp("/"), "_" ); |
239 | //US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" ); | 239 | //US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" ); |
240 | KURL url(p); | 240 | KURL url(p); |
241 | QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); | 241 | QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); |
242 | 242 | ||
243 | 243 | ||
244 | kdDebug(5700) << "-- lock name: " << lockName << endl; | 244 | kdDebug(5700) << "-- lock name: " << lockName << endl; |
245 | 245 | ||
246 | if ( QFile::exists( lockName ) ) return false; | 246 | if ( QFile::exists( lockName ) ) return false; |
247 | 247 | ||
248 | QString lockUniqueName; | 248 | QString lockUniqueName; |
249 | lockUniqueName = p + KApplication::randomString( 8 ); | 249 | lockUniqueName = p + KApplication::randomString( 8 ); |
250 | 250 | ||
251 | url = lockUniqueName; | 251 | url = lockUniqueName; |
252 | //US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); | 252 | //US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); |
253 | mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); | 253 | mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); |
254 | 254 | ||
255 | kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; | 255 | kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; |
256 | 256 | ||
257 | // Create unique file | 257 | // Create unique file |
258 | QFile file( mLockUniqueName ); | 258 | QFile file( mLockUniqueName ); |
259 | file.open( IO_WriteOnly ); | 259 | file.open( IO_WriteOnly ); |
260 | file.close(); | 260 | file.close(); |
261 | 261 | ||
262 | // Create lock file | 262 | // Create lock file |
263 | int result = ::link( QFile::encodeName( mLockUniqueName ), | 263 | int result = 0; |
264 | #ifndef _WIN32_ | ||
265 | result = ::link( QFile::encodeName( mLockUniqueName ), | ||
264 | QFile::encodeName( lockName ) ); | 266 | QFile::encodeName( lockName ) ); |
265 | 267 | #endif | |
266 | if ( result == 0 ) { | 268 | if ( result == 0 ) { |
267 | addressBook()->emitAddressBookLocked(); | 269 | addressBook()->emitAddressBookLocked(); |
268 | return true; | 270 | return true; |
269 | } | 271 | } |
270 | 272 | ||
271 | // TODO: check stat | 273 | // TODO: check stat |
272 | 274 | ||
273 | return false; | 275 | return false; |
274 | } | 276 | } |
275 | 277 | ||
276 | void ResourceDir::unlock( const QString &path ) | 278 | void ResourceDir::unlock( const QString &path ) |
277 | { | 279 | { |
278 | QString p = path; | 280 | QString p = path; |
279 | //US change the implementation how the lockfilename is getting created | 281 | //US change the implementation how the lockfilename is getting created |
280 | //US p.replace( QRegExp( "/" ), "_" ); | 282 | //US p.replace( QRegExp( "/" ), "_" ); |
281 | //US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" ); | 283 | //US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" ); |
282 | KURL url(p); | 284 | KURL url(p); |
283 | QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" ); | 285 | QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" ); |
284 | 286 | ||
285 | ::unlink( QFile::encodeName( lockName ) ); | 287 | ::unlink( QFile::encodeName( lockName ) ); |
286 | QFile::remove( mLockUniqueName ); | 288 | QFile::remove( mLockUniqueName ); |
287 | addressBook()->emitAddressBookUnlocked(); | 289 | addressBook()->emitAddressBookUnlocked(); |
288 | } | 290 | } |
289 | 291 | ||
290 | void ResourceDir::setPath( const QString &path ) | 292 | void ResourceDir::setPath( const QString &path ) |
291 | { | 293 | { |
292 | /*US ToDo: no synchronization so far. Has to be changed in the future | 294 | /*US ToDo: no synchronization so far. Has to be changed in the future |
293 | mDirWatch.stopScan(); | 295 | mDirWatch.stopScan(); |
294 | mDirWatch.removeDir( mPath ); | 296 | mDirWatch.removeDir( mPath ); |
295 | */ | 297 | */ |
296 | mPath = path; | 298 | mPath = path; |
297 | 299 | ||
298 | /*US ToDo: no synchronization so far. Has to be changed in the future | 300 | /*US ToDo: no synchronization so far. Has to be changed in the future |
299 | mDirWatch.addDir( mPath, true ); | 301 | mDirWatch.addDir( mPath, true ); |
300 | mDirWatch.startScan(); | 302 | mDirWatch.startScan(); |
301 | */ | 303 | */ |
302 | 304 | ||
303 | //US simulate KDirWatch event | 305 | //US simulate KDirWatch event |
304 | pathChanged(); | 306 | pathChanged(); |
305 | 307 | ||
306 | } | 308 | } |
307 | 309 | ||
308 | QString ResourceDir::path() const | 310 | QString ResourceDir::path() const |
309 | { | 311 | { |
310 | return mPath; | 312 | return mPath; |
311 | } | 313 | } |
312 | 314 | ||
313 | void ResourceDir::setFormat( const QString &format ) | 315 | void ResourceDir::setFormat( const QString &format ) |