亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? db_base.cpp

?? 一個精簡的CA程序
?? CPP
字號:
/* vi: set sw=4 ts=4: *//* * Copyright (C) 2001 Christian Hohnstaedt. * *  All rights reserved. * * *  Redistribution and use in source and binary forms, with or without  *  modification, are permitted provided that the following conditions are met: * *  - Redistributions of source code must retain the above copyright notice, *    this list of conditions and the following disclaimer. *  - Redistributions in binary form must reproduce the above copyright notice, *    this list of conditions and the following disclaimer in the documentation *    and/or other materials provided with the distribution. *  - Neither the name of the author nor the names of its contributors may be  *    used to endorse or promote products derived from this software without *    specific prior written permission. * * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * * This program links to software with different licenses from: * *	http://www.openssl.org which includes cryptographic software * 	written by Eric Young (eay@cryptsoft.com)" * *	http://www.sleepycat.com * *	http://www.trolltech.com *  * * * http://www.hohnstaedt.de/xca * email: christian@hohnstaedt.de * * $Id: db_base.cpp,v 1.64 2003/10/13 09:01:24 chris2511 Exp $ * */                           #include "db_base.h"#include "exception.h"#include "view/XcaListView.h"#include <qmessagebox.h>#include <qlistview.h>#include <qdir.h>db_base::db_base(DbEnv *dbe, QString DBfile, QString DB, DbTxn *global_tid,	XcaListView *lvi) {	listview = lvi;	dbenv = dbe;	data = new Db(dbe, 0);	try {#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >=1			data->open(NULL, DBfile.latin1(), DB.latin1(), DB_BTREE, DB_CREATE, 0600); #else		data->open(DBfile.latin1(), DB.latin1(), DB_BTREE, DB_CREATE, 0600); #endif	}	catch (DbException &err) {		throw errorEx(err.what());	}}db_base::~db_base(){	data->close(0);	container.setAutoDelete(true);	container.clear();}void *db_base::getData(void *key, int length, int *dsize){	*dsize = 0;	if ((key == NULL) || (length == 0) ) {		return NULL;	}	try {		void *p;		Dbt k(key, length);		Dbt d(NULL, 0);		if (data->get(NULL, &k, &d, 0)) return NULL;		p = d.get_data();		*dsize = d.get_size();		void *q = malloc(*dsize);		memcpy(q,p,*dsize);		return q;	}	catch (DbException &err) {		throw errorEx(err.what());	}	return NULL;}void *db_base::getData(QString key, int *dsize){	return getData((void *)key.latin1(), key.length()+ 1, dsize);}QString db_base::getString(QString key){	QString x = "";	int dsize;	char *p = (char *)getData(key, &dsize);	if (p == NULL) {		return x;	}	if ( p[dsize-1] != '\0' ) {		return x;	}	x = p;	free(p);	if ( (int)x.length() != (dsize-1) ) {		// FIXME: Errorhandling...	}	return x;}QString db_base::getString(char *key){	QString x = key;	return getString(x);}int db_base::getInt(QString key){	QString x = getString(key);	return atoi(x.latin1());}void db_base::putData(void *key, int keylen, void *dat, int datalen, DbTxn *tid){		Dbt k(key, keylen);	Dbt d(dat, datalen);	try {		data->put(tid, &k, &d, 0 );	}	catch (DbException &err) {		throw errorEx(err.what());	}}void db_base::putString(QString key, void *dat, int datalen, DbTxn *tid){	putData((void *)key.latin1(), key.length()+1, dat, datalen, tid);}void db_base::putString(QString key, QString dat, DbTxn *tid){	putString(key, (void *)dat.latin1(), dat.length() +1, tid);}void db_base::putString(char *key, QString dat, DbTxn *tid){	QString x = key;	putString(x, dat, tid);}void db_base::putInt(QString key, int dat, DbTxn *tid){	char buf[100];	sprintf(buf,"%i",dat);	QString x = buf;	putString(key, x, tid);}void db_base::loadContainer(){	DbTxn *tid = NULL;	Dbc *cursor = NULL;	unsigned char *p;	try {		dbenv->txn_begin(NULL, &tid, 0);		data->cursor(tid, &cursor, 0);		Dbt *k = new Dbt();		Dbt *d = new Dbt();		QString desc;		pki_base *pki;		container.clear();		while (!cursor->get(k, d, DB_NEXT)) {			desc = (char *)k->get_data();			p = (unsigned char *)d->get_data();			int size = d->get_size();			try {					pki = newPKI();				pki->setIntName(desc);				pki->fromData(p, size);				container.append(pki);			}			catch (errorEx &err) {				QMessageBox::warning(NULL,tr(XCA_TITLE),				       	tr("Error loading: '") + desc + "'\n" +					err.getCString());			}		}		delete (k);		delete (d);		cursor->close();		preprocess();		tid->commit(0);	}	catch (DbException &err) {		tid->abort();		throw errorEx(err.what());	}}	void db_base::insertPKI(pki_base *pki){	DbTxn *tid = NULL;	dbenv->txn_begin(NULL, &tid, 0);	try {		_writePKI(pki, false, tid);		inToCont(pki);		tid->commit(0);	}	catch (DbException &err) {		tid->abort();		throw errorEx(err.what());	}	if (listview) {				QListViewItem *lvi = new QListViewItem((QListView *)listview, pki->getIntName());	        listview->insertItem(lvi);	        pki->setLvi(lvi);	        pki->updateView();	}}	void db_base::_writePKI(pki_base *pki, bool overwrite, DbTxn *tid) {	int flags = 0;	if (!overwrite) flags = DB_NOOVERWRITE;	QString desc = pki->getIntName();	if (desc.isEmpty()) {		desc="unnamed";	}	QString orig = desc;	int size=0;	char field[10];	unsigned char *p = pki->toData(&size);	int cnt=0;	int x = DB_KEYEXIST;	// exception occuring here will be catched by the caller	while (x == DB_KEYEXIST) {		Dbt k((void *)desc.latin1(), desc.length() + 1);		Dbt d((void *)p, size);		if ((x = data->put(tid, &k, &d, flags ))!=0) {			sprintf(field,"%02i", ++cnt);			QString z = field;		   	desc = orig + "_" + z ;		}	}	pki->setIntName(desc);	pki->updateView();}void db_base::_removePKI(pki_base *pki, DbTxn *tid) {	QString desc = pki->getIntName();	removeItem(desc, tid);}	void db_base::removeItem(QString key, DbTxn *tid) {	Dbt k((void *)key.latin1(), key.length() + 1);	data->del(tid, &k, 0);}void db_base::deletePKI(pki_base *pki){	DbTxn *tid = NULL;	try {		dbenv->txn_begin(NULL, &tid, 0);		_removePKI(pki, tid);		remFromCont(pki);		tid->commit(0);		delete(pki);	}	catch (DbException &err) {		tid->abort();		throw errorEx(err.what());	}}void db_base::renamePKI(pki_base *pki, QString desc){	QString oldname = pki->getIntName();	DbTxn *tid = NULL;	try {		dbenv->txn_begin(NULL, &tid, 0);		_removePKI(pki, tid);		pki->setIntName(desc);		_writePKI(pki, false, tid);		tid->commit(0);	}	catch (DbException &err) {		tid->abort();		throw errorEx(err.what(), "rename PKI");	}}void db_base::remFromCont(pki_base *pki){	container.remove(pki);}void db_base::inToCont(pki_base *pki){	container.append(pki);}void db_base::updatePKI(pki_base *pki) {	DbTxn *tid = NULL;	dbenv->txn_begin(NULL, &tid, 0);	try {		_writePKI(pki, true, tid);		tid->commit(0);	}	catch (DbException &err) {		tid->abort();		throw errorEx(err.what(), "update PKI");	}}pki_base *db_base::getByName(QString desc){	if (desc == "" ) return NULL;	pki_base *pki;        QListIterator<pki_base> it(container);        for ( ; it.current(); ++it ) {                pki = it.current();		if (pki->getIntName() == desc) return pki;	}	return NULL;}pki_base *db_base::getByReference(pki_base *refpki){	pki_base *pki;	if (refpki == 0) return NULL;        QListIterator<pki_base> it(container);        for ( ; it.current(); ++it ) {                pki = it.current();		if (refpki->compare(pki)) return pki;	}	return NULL;}pki_base *db_base::getByPtr(void *item){	pki_base *pki;	if (item == NULL) return NULL;        QListIterator<pki_base> it(container);        for ( ; it.current(); ++it ) {                pki = it.current();		if (item == pki->getLvi()) return pki;	}	return NULL;}QStringList db_base::getDesc(){	pki_base *pki;	QStringList x;	x.clear();	for ( pki = container.first(); pki != 0; pki = container.next() ){		x.append(pki->getIntName());		}	return x;}QList<pki_base> db_base::getContainer(){	QList<pki_base> c;	c.clear();	c = container;	return c;}	pki_base *db_base::insert(pki_base *item){	insertPKI(item);	return item;}void db_base::writeAll(DbTxn *tid){	bool tidwasnull = false;	if (tid == NULL) { 		tidwasnull = true;		dbenv->txn_begin(NULL, &tid, 0);	}	try {		for (pki_base *pki=container.first(); pki!=0; pki=container.next() ) 			_writePKI(pki, true, tid);	}	catch (DbException &err) {		tid->abort();		throw errorEx(err.what());	}	if (tidwasnull)		tid->commit(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91超碰这里只有精品国产| 成人av中文字幕| 亚洲成人免费视频| 美国三级日本三级久久99| 狠狠色综合日日| 国产精品夜夜爽| 91美女在线观看| 欧美日韩一区三区| 欧美成人一区二区| 国产精品久久99| 青娱乐精品在线视频| 激情av综合网| 91小视频免费观看| 91精品国产综合久久香蕉的特点| 91精品国产入口| 欧美国产乱子伦 | 亚洲一级二级在线| 久久99久久99小草精品免视看| 国产精品自拍毛片| 91九色02白丝porn| 精品国内片67194| 亚洲精品中文在线| 激情综合五月天| 91成人免费电影| 精品久久久久久久久久久久久久久 | 狠狠v欧美v日韩v亚洲ⅴ| 97精品久久久午夜一区二区三区| 欧美日韩五月天| 亚洲国产激情av| 亚州成人在线电影| 成人久久18免费网站麻豆| 6080午夜不卡| 亚洲色图欧美偷拍| 成人手机电影网| 欧美疯狂做受xxxx富婆| 亚洲三级在线播放| 国产二区国产一区在线观看 | 欧美视频在线一区| 中文字幕不卡在线| 国产美女视频91| 日韩限制级电影在线观看| 国产精品第四页| 国产成人精品免费在线| 日韩欧美国产一二三区| 亚洲欧洲无码一区二区三区| 激情综合网激情| 欧美日韩大陆在线| 亚洲欧美日韩在线| 国产成人免费xxxxxxxx| 日韩精品中午字幕| 日本vs亚洲vs韩国一区三区二区| 欧美影院一区二区三区| 亚洲免费资源在线播放| 波多野结衣91| 国产精品私人自拍| 久久99精品久久久久| 日韩限制级电影在线观看| 午夜精品久久久久久不卡8050| 99国产麻豆精品| 亚洲色图欧洲色图婷婷| 懂色av一区二区三区蜜臀| 日韩欧美国产综合在线一区二区三区| 国产精品888| 性感美女久久精品| 亚洲欧洲精品一区二区精品久久久| 欧美日韩黄色一区二区| 成人av集中营| 国产精品一区一区| 久久国产欧美日韩精品| 18涩涩午夜精品.www| 久久综合五月天婷婷伊人| 色一情一乱一乱一91av| 激情图片小说一区| 天堂精品中文字幕在线| 亚洲精品国久久99热| 中文字幕一区日韩精品欧美| 日韩精品中午字幕| 粉嫩在线一区二区三区视频| 一个色在线综合| 国产日韩高清在线| 亚洲日本在线观看| 日韩欧美一级在线播放| 97久久人人超碰| 美女一区二区视频| 亚洲国产成人91porn| 精品毛片乱码1区2区3区| caoporm超碰国产精品| 日日夜夜精品免费视频| 中文字幕一区二区三区在线不卡 | 欧美一区二区三区白人| 国产成人精品1024| 一区二区三区不卡视频在线观看| 日韩美一区二区三区| 色婷婷亚洲精品| 粉嫩高潮美女一区二区三区| 九九视频精品免费| 性欧美大战久久久久久久久| 一区在线播放视频| 2020国产精品自拍| 91精品国产一区二区三区| 9l国产精品久久久久麻豆| 国产美女精品在线| 久久99精品国产麻豆不卡| 亚洲国产日产av| 亚洲日本va在线观看| 国产精品水嫩水嫩| 久久久亚洲国产美女国产盗摄| 91精品国产手机| 9191久久久久久久久久久| 欧美午夜精品久久久久久超碰| av午夜一区麻豆| 色老综合老女人久久久| 一本大道久久a久久精二百| 成人在线视频首页| 99久久99久久久精品齐齐| 日韩一区二区免费视频| 亚洲美女视频一区| 国产成人亚洲综合a∨婷婷图片| 精品视频999| 亚洲摸摸操操av| 99久久国产综合色|国产精品| 亚洲精品在线观看网站| 亚洲综合丝袜美腿| 成人av电影在线观看| 日韩午夜在线观看视频| 亚洲精品视频免费观看| 国产成人午夜电影网| 欧美猛男超大videosgay| 国产精品理论片在线观看| 免费人成精品欧美精品| 在线观看国产精品网站| 久久综合给合久久狠狠狠97色69| 国产91清纯白嫩初高中在线观看| 99re热这里只有精品视频| 欧美日韩亚州综合| 国产女主播在线一区二区| 亚洲成av人片www| 97精品国产97久久久久久久久久久久 | 国内欧美视频一区二区 | 欧美日韩夫妻久久| 中文一区二区在线观看| 青青草原综合久久大伊人精品优势| 成av人片一区二区| 久久久午夜精品理论片中文字幕| 亚洲大型综合色站| 91免费版pro下载短视频| 精品国产第一区二区三区观看体验| 一区二区三区日韩欧美精品| 国产精品正在播放| www国产成人免费观看视频 深夜成人网 | 蜜臀精品一区二区三区在线观看| 成人avav影音| 亚洲国产精品成人综合色在线婷婷 | 久久99精品国产.久久久久久| 欧美亚男人的天堂| 一区二区三区高清| 色噜噜久久综合| 中文字幕中文字幕中文字幕亚洲无线| 精品中文字幕一区二区小辣椒| 欧美日韩一区久久| 日韩电影在线一区二区| 欧美日韩午夜影院| 亚洲va天堂va国产va久| 91国产精品成人| 五月天久久比比资源色| 欧美日本不卡视频| 久久精品国产亚洲a| 久久综合色8888| 国产成人免费视频网站| 中文字幕一区二区三区蜜月| 99这里只有精品| 一区二区三区精密机械公司| 欧美日韩中文一区| 奇米777欧美一区二区| 26uuu亚洲| 色综合色综合色综合| 偷拍一区二区三区四区| 精品国产一区二区精华| 成人免费va视频| 亚洲成人动漫av| 国产亚洲综合在线| 在线免费观看日本一区| 美美哒免费高清在线观看视频一区二区| 日韩精品中午字幕| 色综合天天视频在线观看| 亚洲国产乱码最新视频| 久久综合视频网| 欧美综合一区二区三区| 免费成人你懂的| 中文字幕一区二区三区视频 | 亚洲福利国产精品| 久久精品一区二区三区不卡| 欧日韩精品视频| 色噜噜狠狠成人网p站| 蜜桃精品在线观看| 久久影院午夜片一区| 国产在线观看一区二区| 婷婷成人综合网| 亚洲欧美日韩在线| 亚洲国产精品成人综合色在线婷婷 |