Example #1
0
File: config.c Project: Meai1/tup
tupid_t get_sub_dir_dt(void)
{
	if(tup_sub_dir_dt < 0) {
		tup_sub_dir_dt = find_dir_tupid(get_sub_dir());
		if(tup_sub_dir_dt < 0) {
			fprintf(stderr, "Error: Unable to find tupid for working directory: '%s'\n", get_sub_dir());
		}
	}
	return tup_sub_dir_dt;
}
Example #2
0
Status Node::node_open(const std::string db_dir) {
    std::vector<std::string> dbs;
    if (OK != get_sub_dir(db_dir, &dbs)) {
        //printf("failed to open db:%s \n", db_dir.c_str());
        return FILE_ERROR;
    }
    if (dbs.size() == 0) {
        //printf("have no db file\n");
        return FILE_ERROR;
    }
    for (size_t i = 0; i < dbs.size(); ++i) {
        _dbs.push_back(new DBImpl());
        if (_dbs[i] != NULL && OK != _dbs[i]->load(dbs[i])) {
            //printf("open %s failed\n", dbs[i].c_str());
            return FILE_ERROR;
        }
    }
    // 升序排列
    std::sort(_dbs.begin(), _dbs.end(), comp_db);    
    Status s = _dbs_index.allocate(_dbs.size());
    if (OK != s) {
        //printf("sort failed\n");
        return s;
    }
    //_dbs_index.print();
    for (size_t i = 0; i < _dbs.size() - 1; ++i) {
        // 检查各个db没有交集
        if (_dbs[i]->get_last_key() >= _dbs[i + 1]->get_first_key()) {
            //printf("file %s is not in ascending order\n", dbs[i].c_str());
            return FILE_ERROR;
        }
        _dbs_index.set_item(i, _dbs[i]->get_first_key(), i);
    }
    _dbs_index.set_item(_dbs.size() - 1, _dbs.back()->get_first_key(), _dbs.size() - 1);
    return OK;
}