1.1 --- a/src/Ottoman.cpp Thu Sep 24 10:36:08 2009 -0700
1.2 +++ b/src/Ottoman.cpp Mon Sep 28 23:39:08 2009 -0700
1.3 @@ -42,7 +42,6 @@
1.4
1.5 Ottoman::Ottoman()
1.6 :_writeable(true),
1.7 - _file(NULL),
1.8 _filename(NULL),
1.9 _lastVersion(NULL),
1.10 _current( new OverlayDictionary(&Dictionary::kEmpty) )
1.11 @@ -97,9 +96,6 @@
1.12 delete _file;
1.13 _file = curFile;
1.14 }
1.15 -
1.16 - if (changed)
1.17 - versionsChanged();
1.18 return changed;
1.19 }
1.20
1.21 @@ -200,12 +196,11 @@
1.22 if (!lastVersion)
1.23 lastVersion = new VersionDictionary(dstFile);
1.24 VersionDictionary *saved = lastVersion->_appendAndOpen(_current->overlay(),
1.25 - dstFile,
1.26 - _current->baseReplaced());
1.27 + dstFile,
1.28 + _current->baseReplaced());
1.29 // (don't delete _lastVersion: saved->_previousVersion now points to it.)
1.30 _lastVersion = saved;
1.31 _current->revertTo(_lastVersion);
1.32 - versionsChanged();
1.33 }
1.34
1.35 bool Ottoman::save() {
1.36 @@ -221,10 +216,10 @@
1.37 }
1.38
1.39 File* Ottoman::_writeTo (const char *dstFileName, bool overwriteAllowed) {
1.40 - int mode = O_RDWR | O_CREAT | O_TRUNC | O_EXLOCK;
1.41 + int mode = O_RDWR | O_CREAT | O_TRUNC;
1.42 if (!overwriteAllowed)
1.43 mode |= O_EXCL;
1.44 - File *dstFile = new File(dstFileName, mode);
1.45 + File *dstFile = new File(dstFileName, mode, true);
1.46 try {
1.47 dstFile->write(DictionaryFileHeader());
1.48 _append(dstFile);
1.49 @@ -240,7 +235,6 @@
1.50 File *dstFile = _writeTo(dstFileName, overwriteAllowed);
1.51 free(_filename);
1.52 _filename = strdup(dstFileName);
1.53 - delete _file;
1.54 _file = dstFile;
1.55 }
1.56
1.57 @@ -248,8 +242,8 @@
1.58 if (!_file)
1.59 return false;
1.60 char tempFileName[1024];
1.61 - strlcpy(tempFileName, _filename, sizeof(tempFileName)-1);
1.62 - strlcat(tempFileName, "~", sizeof(tempFileName));
1.63 + ::strncpy(tempFileName, _filename, sizeof(tempFileName)-1);
1.64 + ::strncat(tempFileName, "~", sizeof(tempFileName));
1.65 File *tempFile;
1.66 {
1.67 // Check for conflict in existing file: