⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcl_db_pkg.c

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 C
📖 第 1 页 / 共 5 页
字号:
			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-client_to secs");				result = TCL_ERROR;				break;			}			result = Tcl_GetLongFromObj(interp, objv[i++],			    &client_to);			break;#endif		default:			break;		}	}	if (server != NULL) {		ret = db_env_create(env, DB_CLIENT);		if (ret)			return (_ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "db_env_create"));		(*env)->set_errpfx((*env), ip->i_name);		(*env)->set_errcall((*env), _ErrorFunc);		if ((ret = (*env)->set_rpc_server((*env), NULL, server,		    client_to, server_to, 0)) != 0) {			result = TCL_ERROR;			goto error;		}	} else {		/*		 * Create the environment handle before parsing the args		 * since we'll be modifying the environment as we parse.		 */		ret = db_env_create(env, 0);		if (ret)			return (_ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "db_env_create"));		(*env)->set_errpfx((*env), ip->i_name);		(*env)->set_errcall((*env), _ErrorFunc);	}	/* Hang our info pointer on the env handle, so we can do callbacks. */	(*env)->app_private = ip;	/*	 * Use a Tcl-local alloc and free function so that we're sure to	 * test whether we use umalloc/ufree in the right places.	 */#ifdef TEST_ALLOC	(*env)->set_alloc(*env, tcl_db_malloc, tcl_db_realloc, tcl_db_free);#endif	/*	 * Get the command name index from the object based on the bdbcmds	 * defined above.	 */	i = 2;	while (i < objc) {		Tcl_ResetResult(interp);		if (Tcl_GetIndexFromObj(interp, objv[i], envopen, "option",		    TCL_EXACT, &optindex) != TCL_OK) {			result = IS_HELP(objv[i]);			goto error;		}		i++;		switch ((enum envopen)optindex) {#if CONFIG_TEST		case ENV_SERVER:		case ENV_SERVER_TO:		case ENV_CLIENT_TO:			/*			 * Already handled these, skip them and their arg.			 */			i++;			break;		case ENV_AUTO_COMMIT:			FLD_SET(set_flags, DB_AUTO_COMMIT);			break;		case ENV_CDB:			FLD_SET(open_flags, DB_INIT_CDB | DB_INIT_MPOOL);			FLD_CLR(open_flags, DB_JOINENV);			break;		case ENV_CDB_ALLDB:			FLD_SET(set_flags, DB_CDB_ALLDB);			break;		case ENV_LOCK:			FLD_SET(open_flags, DB_INIT_LOCK | DB_INIT_MPOOL);			FLD_CLR(open_flags, DB_JOINENV);			break;		case ENV_CONFLICT:			/*			 * Get conflict list.  List is:			 * {nmodes {matrix}}			 *			 * Where matrix must be nmodes*nmodes big.			 * Set up conflicts array to pass.			 */			result = Tcl_ListObjGetElements(interp, objv[i],			    &myobjc, &myobjv);			if (result == TCL_OK)				i++;			else				break;			if (myobjc != 2) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-lock_conflict {nmodes {matrix}}?");				result = TCL_ERROR;				break;			}			result = Tcl_GetIntFromObj(interp, myobjv[0], &nmodes);			if (result != TCL_OK)				break;			result = Tcl_ListObjGetElements(interp, myobjv[1],			    &myobjc, &myobjv1);			if (myobjc != (nmodes * nmodes)) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-lock_conflict {nmodes {matrix}}?");				result = TCL_ERROR;				break;			}			size = sizeof(u_int8_t) * nmodes*nmodes;			ret = __os_malloc(*env, size, &conflicts);			if (ret != 0) {				result = TCL_ERROR;				break;			}			for (j = 0; j < myobjc; j++) {				result = Tcl_GetIntFromObj(interp, myobjv1[j],				    &temp);				conflicts[j] = temp;				if (result != TCL_OK) {					__os_free(NULL, conflicts);					break;				}			}			_debug_check();			ret = (*env)->set_lk_conflicts(*env,			    (u_int8_t *)conflicts, nmodes);			__os_free(NULL, conflicts);			result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "set_lk_conflicts");			break;		case ENV_DETECT:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-lock_detect policy?");				result = TCL_ERROR;				break;			}			arg = Tcl_GetStringFromObj(objv[i++], NULL);			if (strcmp(arg, "default") == 0)				detect = DB_LOCK_DEFAULT;			else if (strcmp(arg, "expire") == 0)				detect = DB_LOCK_EXPIRE;			else if (strcmp(arg, "maxlocks") == 0)				detect = DB_LOCK_MAXLOCKS;			else if (strcmp(arg, "minlocks") == 0)				detect = DB_LOCK_MINLOCKS;			else if (strcmp(arg, "minwrites") == 0)				detect = DB_LOCK_MINWRITE;			else if (strcmp(arg, "oldest") == 0)				detect = DB_LOCK_OLDEST;			else if (strcmp(arg, "youngest") == 0)				detect = DB_LOCK_YOUNGEST;			else if (strcmp(arg, "random") == 0)				detect = DB_LOCK_RANDOM;			else {				Tcl_AddErrorInfo(interp,				    "lock_detect: illegal policy");				result = TCL_ERROR;				break;			}			_debug_check();			ret = (*env)->set_lk_detect(*env, detect);			result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "lock_detect");			break;		case ENV_LOCK_MAX:		case ENV_LOCK_MAX_LOCKS:		case ENV_LOCK_MAX_LOCKERS:		case ENV_LOCK_MAX_OBJECTS:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-lock_max max?");				result = TCL_ERROR;				break;			}			result = _GetUInt32(interp, objv[i++], &uintarg);			if (result == TCL_OK) {				_debug_check();				switch ((enum envopen)optindex) {				case ENV_LOCK_MAX:					ret = (*env)->set_lk_max(*env,					    uintarg);					break;				case ENV_LOCK_MAX_LOCKS:					ret = (*env)->set_lk_max_locks(*env,					    uintarg);					break;				case ENV_LOCK_MAX_LOCKERS:					ret = (*env)->set_lk_max_lockers(*env,					    uintarg);					break;				case ENV_LOCK_MAX_OBJECTS:					ret = (*env)->set_lk_max_objects(*env,					    uintarg);					break;				default:					break;				}				result = _ReturnSetup(interp, ret,				    DB_RETOK_STD(ret), "lock_max");			}			break;		case ENV_TXN_TIME:		case ENV_TXN_TIMEOUT:		case ENV_LOCK_TIMEOUT:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-txn_timestamp time?");				result = TCL_ERROR;				break;			}			result = Tcl_GetLongFromObj(interp, objv[i++],			    (long *)&timestamp);			if (result == TCL_OK) {				_debug_check();				if (optindex == ENV_TXN_TIME)					ret = (*env)->					    set_tx_timestamp(*env, &timestamp);				else					ret = (*env)->set_timeout(*env,					    (db_timeout_t)timestamp,					    optindex == ENV_TXN_TIMEOUT ?					    DB_SET_TXN_TIMEOUT :					    DB_SET_LOCK_TIMEOUT);				result = _ReturnSetup(interp, ret,				    DB_RETOK_STD(ret), "txn_timestamp");			}			break;		case ENV_LOG:			FLD_SET(open_flags, DB_INIT_LOG | DB_INIT_MPOOL);			FLD_CLR(open_flags, DB_JOINENV);			break;		case ENV_LOG_BUFFER:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-log_buffer size?");				result = TCL_ERROR;				break;			}			result = _GetUInt32(interp, objv[i++], &uintarg);			if (result == TCL_OK) {				_debug_check();				ret = (*env)->set_lg_bsize(*env, uintarg);				result = _ReturnSetup(interp, ret,				    DB_RETOK_STD(ret), "log_bsize");				logbufset = 1;				if (logmaxset) {					_debug_check();					ret = (*env)->set_lg_max(*env,					    logmaxset);					result = _ReturnSetup(interp, ret,					    DB_RETOK_STD(ret), "log_max");					logmaxset = 0;					logbufset = 0;				}			}			break;		case ENV_LOG_MAX:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-log_max max?");				result = TCL_ERROR;				break;			}			result = _GetUInt32(interp, objv[i++], &uintarg);			if (result == TCL_OK && logbufset) {				_debug_check();				ret = (*env)->set_lg_max(*env, uintarg);				result = _ReturnSetup(interp, ret,				    DB_RETOK_STD(ret), "log_max");				logbufset = 0;			} else				logmaxset = uintarg;			break;		case ENV_LOG_REGIONMAX:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-log_regionmax size?");				result = TCL_ERROR;				break;			}			result = _GetUInt32(interp, objv[i++], &uintarg);			if (result == TCL_OK) {				_debug_check();				ret = (*env)->set_lg_regionmax(*env, uintarg);				result =				    _ReturnSetup(interp, ret, DB_RETOK_STD(ret),					"log_regionmax");			}			break;		case ENV_MMAPSIZE:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-mmapsize size?");				result = TCL_ERROR;				break;			}			result = Tcl_GetIntFromObj(interp, objv[i++], &intarg);			if (result == TCL_OK) {				_debug_check();				ret = (*env)->set_mp_mmapsize(*env,				    (size_t)intarg);				result = _ReturnSetup(interp, ret,				    DB_RETOK_STD(ret), "mmapsize");			}			break;		case ENV_NOMMAP:			FLD_SET(set_flags, DB_NOMMAP);			break;		case ENV_OVERWRITE:			FLD_SET(set_flags, DB_OVERWRITE);			break;		case ENV_REGION_INIT:			_debug_check();			ret = (*env)->set_flags(*env, DB_REGION_INIT, 1);			result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "region_init");			break;		case ENV_REP_CLIENT:			rep_flags = DB_REP_CLIENT;			break;		case ENV_REP_LOGSONLY:			rep_flags = DB_REP_LOGSONLY;			break;		case ENV_REP_MASTER:			rep_flags = DB_REP_MASTER;			break;		case ENV_REP_TRANSPORT:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "-rep_transport {envid sendproc}");				result = TCL_ERROR;				break;			}			/*			 * Store the objects containing the machine ID			 * and the procedure name.  We don't need to crack			 * the send procedure out now, but we do convert the			 * machine ID to an int, since set_rep_transport needs			 * it.  Even so, it'll be easier later to deal with			 * the Tcl_Obj *, so we save that, not the int.			 *			 * Note that we Tcl_IncrRefCount both objects			 * independently;  Tcl is free to discard the list			 * that they're bundled into.			 */			result = Tcl_ListObjGetElements(interp, objv[i++],			    &myobjc, &myobjv);			if (myobjc != 2) {				Tcl_SetResult(interp,				    "List must be {envid sendproc}",				    TCL_STATIC);				result = TCL_ERROR;				break;			}			/*			 * Check that the machine ID is an int.  Note that			 * we do want to use GetIntFromObj;  the machine			 * ID is explicitly an int, not a u_int32_t.			 */			ip->i_rep_eid = myobjv[0];			Tcl_IncrRefCount(ip->i_rep_eid);			result = Tcl_GetIntFromObj(interp,			    ip->i_rep_eid, &intarg);			if (result != TCL_OK)				break;			ip->i_rep_send = myobjv[1];			Tcl_IncrRefCount(ip->i_rep_send);			_debug_check();			ret = (*env)->set_rep_transport(*env,			    intarg, tcl_rep_send);			result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "set_rep_transport");			break;		case ENV_VERBOSE:			result = Tcl_ListObjGetElements(interp, objv[i],			    &myobjc, &myobjv);			if (result == TCL_OK)				i++;			else				break;			if (myobjc != 2) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-verbose {which on|off}?");				result = TCL_ERROR;				break;			}			result = tcl_EnvVerbose(interp, *env,			    myobjv[0], myobjv[1]);			break;		case ENV_WRNOSYNC:			FLD_SET(set_flags, DB_TXN_WRITE_NOSYNC);			break;#endif		case ENV_TXN:			FLD_SET(open_flags, DB_INIT_LOCK |			    DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN);			FLD_CLR(open_flags, DB_JOINENV);			/* Make sure we have an arg to check against! */			if (i < objc) {				arg = Tcl_GetStringFromObj(objv[i], NULL);				if (strcmp(arg, "nosync") == 0) {					FLD_SET(set_flags, DB_TXN_NOSYNC);					i++;				}			}			break;		case ENV_CREATE:			FLD_SET(open_flags, DB_CREATE | DB_INIT_MPOOL);			FLD_CLR(open_flags, DB_JOINENV);			break;		case ENV_ENCRYPT_AES:			/* Make sure we have an arg to check against! */			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-encryptaes passwd?");				result = TCL_ERROR;				break;			}			passwd = Tcl_GetStringFromObj(objv[i++], NULL);			_debug_check();			ret = (*env)->set_encrypt(*env, passwd, DB_ENCRYPT_AES);			result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "set_encrypt");			break;		case ENV_ENCRYPT_ANY:			/* Make sure we have an arg to check against! */			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-encryptany passwd?");				result = TCL_ERROR;				break;			}			passwd = Tcl_GetStringFromObj(objv[i++], NULL);			_debug_check();			ret = (*env)->set_encrypt(*env, passwd, 0);			result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "set_encrypt");			break;		case ENV_HOME:			/* Make sure we have an arg to check against! */			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-home dir?");				result = TCL_ERROR;				break;			}			home = Tcl_GetStringFromObj(objv[i++], NULL);			break;		case ENV_MODE:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-mode mode?");				result = TCL_ERROR;				break;			}			/*			 * Don't need to check result here because			 * if TCL_ERROR, the error message is already			 * set up, and we'll bail out below.  If ok,			 * the mode is set and we go on.			 */			result = Tcl_GetIntFromObj(interp, objv[i++], &mode);			break;		case ENV_PRIVATE:			FLD_SET(open_flags, DB_PRIVATE | DB_INIT_MPOOL);			FLD_CLR(open_flags, DB_JOINENV);			break;		case ENV_RECOVER:			FLD_SET(open_flags, DB_RECOVER);			break;		case ENV_RECOVER_FATAL:			FLD_SET(open_flags, DB_RECOVER_FATAL);			break;		case ENV_SYSTEM_MEM:			FLD_SET(open_flags, DB_SYSTEM_MEM);			break;		case ENV_USE_ENVIRON_ROOT:			FLD_SET(open_flags, DB_USE_ENVIRON_ROOT);			break;		case ENV_USE_ENVIRON:			FLD_SET(open_flags, DB_USE_ENVIRON);			break;		case ENV_CACHESIZE:			result = Tcl_ListObjGetElements(interp, objv[i],			    &myobjc, &myobjv);			if (result == TCL_OK)				i++;			else				break;			if (myobjc != 3) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-cachesize {gbytes bytes ncaches}?");				result = TCL_ERROR;				break;			}			result = _GetUInt32(interp, myobjv[0], &gbytes);			if (result != TCL_OK)				break;			result = _GetUInt32(interp, myobjv[1], &bytes);			if (result != TCL_OK)				break;			result = _GetUInt32(interp, myobjv[2], &ncaches);			if (result != TCL_OK)				break;			_debug_check();			ret = (*env)->set_cachesize(*env, gbytes, bytes,			    ncaches);			result = _ReturnSetup(interp, ret, DB_RETOK_STD(ret),			    "set_cachesize");			break;		case ENV_SHM_KEY:			if (i >= objc) {				Tcl_WrongNumArgs(interp, 2, objv,				    "?-shm_key key?");				result = TCL_ERROR;				break;			}			result = Tcl_GetLongFromObj(interp, objv[i++], &shm);			if (result == TCL_OK) {				_debug_check();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -