def upgrade_data2
if File.exist?("#{@bot.botclass}/plugin_registry.db")
Dir.mkdir("#{@bot.botclass}/registry") unless File.exist?("#{@bot.botclass}/registry")
env = BDB::Env.open("#{@bot.botclass}", BDB::INIT_TRANSACTION | BDB::CREATE | BDB::RECOVER)
dbs = Hash.new
log _("upgrading previous (rbot 0.9.9 or earlier) plugin registry to new split format")
old = BDB::CIBtree.open("#{@bot.botclass}/plugin_registry.db", nil,
"r+", 0600, "env" => env)
old.each {|k,v|
prefix,key = k.split("/", 2)
prefix.downcase!
if prefix.gsub!(/\+/, "/")
dirs = File.dirname("#{@bot.botclass}/registry/#{prefix}.db").split("/")
dirs.length.times { |i|
dir = dirs[0,i+1].join("/")+"/"
unless File.exist?(dir)
log _("creating subregistry directory #{dir}")
Dir.mkdir(dir)
end
}
end
unless dbs.has_key?(prefix)
log _("creating db #{@bot.botclass}/registry/#{prefix}.db")
dbs[prefix] = BDB::CIBtree.open("#{@bot.botclass}/registry/#{prefix}.db",
nil, BDB::CREATE | BDB::EXCL,
0600, "env" => env)
end
dbs[prefix][key] = v
}
old.close
File.rename("#{@bot.botclass}/plugin_registry.db", "#{@bot.botclass}/plugin_registry.db.old")
dbs.each {|k,v|
log _("closing db #{k}")
v.close
}
env.close
end
end