src/Ottoman.cpp
changeset 8 21a6c17f4e3e
parent 4 715d6147ba3a
child 9 629f61203db1
     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: