コード例 #1
0
ファイル: Adding.cpp プロジェクト: utkillr/VerController
bool addNewFile(string fileName, string address, string owner) {
	if (isSaved(fileName)) throw accessError(SAVED);
	if (!isExisting(address)) throw accessError(NO_FILE);

	string fileDirectory = getFilePath(fileName);
	ifstream fileToCopy(address);

	char c;
	if (mkdir(fileDirectory.c_str())) throw accessError(ERR_CR_DIR);						//error creating directory
	ofstream fileToCreate(fileDirectory + '\\' + fileName);
	while (true) {
		c = fileToCopy.get();
		if (!fileToCopy.eof())
			fileToCreate.put(c);
		else break;
	}

	fileToCopy.close();
	fileToCreate.close();

	createPermFile(fileName, owner);
	createDiffFile(fileName);

	return true;
}
コード例 #2
0
ファイル: PageFileManager.cpp プロジェクト: rummelj/dbi
    void* PageFileManager::readPage(uint64_t pageId) {


        if (!isExisting(pageId)) {
            createPage(pageId);
        }

        const off_t offset = pageId * _pageSize;
        char* buffer = new char[_pageSize];

        if (lseek(_fd, offset, SEEK_SET) < 0) {
            perror("lseek");

            //@todo throw
            //throw 42;
            assert(false);
        }

        size_t readBytes = read(_fd, buffer, _pageSize);

        if (readBytes != _pageSize) {
            perror("read");

            fprintf(stderr, "readBytes: %lu pageSize: %lu\n", readBytes, _pageSize);

            //@todo throw
            //throw 42;
            assert(false);
        }

        return buffer;
    }
コード例 #3
0
ファイル: PageFileManager.cpp プロジェクト: rummelj/dbi
    void PageFileManager::writePage(uint64_t pageId, void* data) {

        if (!isExisting(pageId)) {
            createPage(pageId);
        }

        const off_t offset = pageId * _pageSize;

        if (lseek(_fd, offset, SEEK_SET) < 0) {
            perror("lseek");

            //@todo throw
            //throw 42;
            assert(false);
        }

        LOG(INFO) << "Writing page " << pageId << " data at " << data << " to file at pos " << offset << std::endl;
        
        size_t wroteBytes = write(_fd, data, _pageSize);

        if (wroteBytes != _pageSize) {
            perror("write");

            //@todo throw
            //throw 42;
            assert(false);
        }

        closePage( pageId, data );
    }
コード例 #4
0
ファイル: Adding.cpp プロジェクト: utkillr/VerController
bool addExistingFile(string fileName, string address, string owner) {
	string fileDirectory = getFilePath(fileName);

	if (!isSaved(fileName)) throw accessError(NOT_SAVED);
	if (!isExisting(address)) throw accessError(NO_FILE);
	if (!isAccessable(fileName, owner)) throw accessError(NOT_USER);

	diffTree tree(fileName);

	diffNode* start = tree.getTreePathByID(tree.currentVersion);
	diffNode* finish = tree.getTreePath();

	modernizeFile(fileName, tree.getVersionsPath(start, finish));

	vector<diffString> exf;
	vector<diffString> newf;
	ifstream existingFile(fileDirectory + '\\' + fileName);
	ifstream newFile(address);
	while (!existingFile.eof()) {
		diffString buf;
		buf.text = new char[MAX];
		existingFile.getline(buf.text, MAX);
		buf.length = strlen(buf.text);
		exf.push_back(buf);
	}
	while (!newFile.eof()) {
		diffString buf;
		buf.text = new char[MAX];
		newFile.getline(buf.text, MAX);
		buf.length = strlen(buf.text);
		newf.push_back(buf);
	}
	vector<diffString> difference = diff(exf, newf);
	showChangesVector(difference);
	diffNode* child = new diffNode;
	child->diffLine = difference;
	tree.addNode(finish, child);

	ofstream diffFile(fileDirectory + '\\' + fileName + "-diff.dat");
	diffFile.close();

	tree.printDiffTreeFile(fileName);

	deleteFile(fileName);
	addFile(fileName, address);

	return true;
}
コード例 #5
0
ファイル: Save.cpp プロジェクト: GhaisB/Bomberman
void		Save::run()
{
  std::ofstream objetfichier;
  std::string	name;
  ObjectType	t;
  int		iter = 1;
  int		i = 1;
  
  name = "../maps/";
  name = name + this->_name + ".map";
  if (isExisting(this->_name) == false)
    {
      if (this->_list.size() != 0)
	{
	  objetfichier.open(name.data(), std::ios::app);
	  for (std::map<int, Object *>::iterator it = this->_list.begin(); it != this->_list.end(); ++it)
	    {
	      t = (*it).second->getType();
	      if (t == BONUS)
		t = BONUSRANDOM;
	      else if (t == BONUSCLAYMORE)
		t = BONUSRANDOM;
	      std::string s = intToString(t);
	      objetfichier.write(reinterpret_cast<const char *>(s.data()), s.size());
	      if (iter == this->_size)
		{
		  i++;
		  iter = 0;
		  objetfichier.write(reinterpret_cast<const char *>("\n"), 1);
		}
	      else
		objetfichier.write(reinterpret_cast<const char *>(" "), 1);
	      iter++;
	    }
	  objetfichier.close();
	  errorWindow("Your map is now saved", "information");
	}
      else
	errorWindow("Your map is not generated", "Save error");
    }
}