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

📄 env_open.c

📁 这是linux下运行的mysql软件包,可用于linux 下安装 php + mysql + apach 的网络配置
💻 C
📖 第 1 页 / 共 3 页
字号:
		return (ret);	}	if (namep == NULL)		__os_free(dbenv, str);	else		*namep = str;	return (0);}/* * __db_home -- *	Find the database home. * * PUBLIC:	int __db_home __P((DB_ENV *, const char *, u_int32_t)); */int__db_home(dbenv, db_home, flags)	DB_ENV *dbenv;	const char *db_home;	u_int32_t flags;{	const char *p;	/*	 * Use db_home by default, this allows utilities to reasonably	 * override the environment either explicitly or by using a -h	 * option.  Otherwise, use the environment if it's permitted	 * and initialized.	 */	if ((p = db_home) == NULL &&	    (LF_ISSET(DB_USE_ENVIRON) ||	    (LF_ISSET(DB_USE_ENVIRON_ROOT) && __os_isroot())) &&	    (p = getenv("DB_HOME")) != NULL && p[0] == '\0') {		__db_err(dbenv, "illegal DB_HOME environment variable");		return (EINVAL);	}	return (p == NULL ? 0 : __os_strdup(dbenv, p, &dbenv->db_home));}#define	__DB_OVFL(v, max)						\	if (v > max) {							\		__v = v;						\		__max = max;						\		goto toobig;						\	}/* * __db_parse -- *	Parse a single NAME VALUE pair. */static int__db_parse(dbenv, s)	DB_ENV *dbenv;	char *s;{	u_long __max, __v, v1, v2, v3;	u_int32_t flags;	char *name, *p, *value, v4;	/*	 * !!!	 * The value of 40 is hard-coded into format arguments to sscanf	 * below, it can't be changed here without changing it there, too.	 */	char arg[40];	/*	 * Name/value pairs are parsed as two white-space separated strings.	 * Leading and trailing white-space is trimmed from the value, but	 * it may contain embedded white-space.  Note: we use the isspace(3)	 * macro because it's more portable, but that means that you can use	 * characters like form-feed to separate the strings.	 */	name = s;	for (p = name; *p != '\0' && !isspace((int)*p); ++p)		;	if (*p == '\0' || p == name)		goto illegal;	*p = '\0';	for (++p; isspace((int)*p); ++p)		;	if (*p == '\0')		goto illegal;	value = p;	for (++p; *p != '\0'; ++p)		;	for (--p; isspace((int)*p); --p)		;	++p;	if (p == value) {illegal:	__db_err(dbenv, "mis-formatted name-value pair: %s", s);		return (EINVAL);	}	*p = '\0';	if (!strcasecmp(name, "set_cachesize")) {		if (sscanf(value, "%lu %lu %lu %c", &v1, &v2, &v3, &v4) != 3)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		__DB_OVFL(v2, UINT32_T_MAX);		__DB_OVFL(v3, 10000);		return (dbenv->set_cachesize(		    dbenv, (u_int32_t)v1, (u_int32_t)v2, (int)v3));	}	if (!strcasecmp(name, "set_data_dir") ||	    !strcasecmp(name, "db_data_dir"))		/* Compatibility. */		return (dbenv->set_data_dir(dbenv, value));	if (!strcasecmp(name, "set_flags")) {		if (sscanf(value, "%40s %c", arg, &v4) != 1)			goto badarg;		if (!strcasecmp(value, "db_cdb_alldb"))			return (dbenv->set_flags(dbenv, DB_CDB_ALLDB, 1));		if (!strcasecmp(value, "db_direct_db"))			return (dbenv->set_flags(dbenv, DB_DIRECT_DB, 1));		if (!strcasecmp(value, "db_direct_log"))			return (dbenv->set_flags(dbenv, DB_DIRECT_LOG, 1));		if (!strcasecmp(value, "db_nolocking"))			return (dbenv->set_flags(dbenv, DB_NOLOCKING, 1));		if (!strcasecmp(value, "db_nommap"))			return (dbenv->set_flags(dbenv, DB_NOMMAP, 1));		if (!strcasecmp(value, "db_overwrite"))			return (dbenv->set_flags(dbenv, DB_OVERWRITE, 1));		if (!strcasecmp(value, "db_nopanic"))			return (dbenv->set_flags(dbenv, DB_NOPANIC, 1));		if (!strcasecmp(value, "db_region_init"))			return (dbenv->set_flags(dbenv, DB_REGION_INIT, 1));		if (!strcasecmp(value, "db_txn_nosync"))			return (dbenv->set_flags(dbenv, DB_TXN_NOSYNC, 1));		if (!strcasecmp(value, "db_txn_write_nosync"))			return (			    dbenv->set_flags(dbenv, DB_TXN_WRITE_NOSYNC, 1));		if (!strcasecmp(value, "db_yieldcpu"))			return (dbenv->set_flags(dbenv, DB_YIELDCPU, 1));		goto badarg;	}	if (!strcasecmp(name, "set_lg_bsize")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_lg_bsize(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_lg_max")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_lg_max(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_lg_regionmax")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_lg_regionmax(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_lg_dir") ||	    !strcasecmp(name, "db_log_dir"))		/* Compatibility. */		return (dbenv->set_lg_dir(dbenv, value));	if (!strcasecmp(name, "set_lk_detect")) {		if (sscanf(value, "%40s %c", arg, &v4) != 1)			goto badarg;		if (!strcasecmp(value, "db_lock_default"))			flags = DB_LOCK_DEFAULT;		else if (!strcasecmp(value, "db_lock_expire"))			flags = DB_LOCK_EXPIRE;		else if (!strcasecmp(value, "db_lock_maxlocks"))			flags = DB_LOCK_MAXLOCKS;		else if (!strcasecmp(value, "db_lock_minlocks"))			flags = DB_LOCK_MINLOCKS;		else if (!strcasecmp(value, "db_lock_minwrite"))			flags = DB_LOCK_MINWRITE;		else if (!strcasecmp(value, "db_lock_oldest"))			flags = DB_LOCK_OLDEST;		else if (!strcasecmp(value, "db_lock_random"))			flags = DB_LOCK_RANDOM;		else if (!strcasecmp(value, "db_lock_youngest"))			flags = DB_LOCK_YOUNGEST;		else			goto badarg;		return (dbenv->set_lk_detect(dbenv, flags));	}	if (!strcasecmp(name, "set_lk_max")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_lk_max(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_lk_max_locks")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_lk_max_locks(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_lk_max_lockers")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_lk_max_lockers(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_lk_max_objects")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_lk_max_objects(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_lock_timeout")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_timeout(		    dbenv, (u_int32_t)v1, DB_SET_LOCK_TIMEOUT));	}	if (!strcasecmp(name, "set_mp_mmapsize")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_mp_mmapsize(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_region_init")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1 || v1 != 1)			goto badarg;		return (dbenv->set_flags(		    dbenv, DB_REGION_INIT, v1 == 0 ? 0 : 1));	}	if (!strcasecmp(name, "set_shm_key")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		return (dbenv->set_shm_key(dbenv, (long)v1));	}	if (!strcasecmp(name, "set_tas_spins")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_tas_spins(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_tmp_dir") ||	    !strcasecmp(name, "db_tmp_dir"))		/* Compatibility.*/		return (dbenv->set_tmp_dir(dbenv, value));	if (!strcasecmp(name, "set_tx_max")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_tx_max(dbenv, (u_int32_t)v1));	}	if (!strcasecmp(name, "set_txn_timeout")) {		if (sscanf(value, "%lu %c", &v1, &v4) != 1)			goto badarg;		__DB_OVFL(v1, UINT32_T_MAX);		return (dbenv->set_timeout(		    dbenv, (u_int32_t)v1, DB_SET_TXN_TIMEOUT));	}	if (!strcasecmp(name, "set_verbose")) {		if (sscanf(value, "%40s %c", arg, &v4) != 1)			goto badarg;		if (!strcasecmp(value, "db_verb_chkpoint"))			flags = DB_VERB_CHKPOINT;		else if (!strcasecmp(value, "db_verb_deadlock"))			flags = DB_VERB_DEADLOCK;		else if (!strcasecmp(value, "db_verb_recovery"))			flags = DB_VERB_RECOVERY;		else if (!strcasecmp(value, "db_verb_waitsfor"))			flags = DB_VERB_WAITSFOR;		else			goto badarg;		return (dbenv->set_verbose(dbenv, flags, 1));	}	__db_err(dbenv, "unrecognized name-value pair: %s", s);	return (EINVAL);badarg:	__db_err(dbenv, "incorrect arguments for name-value pair: %s", s);	return (EINVAL);toobig:	__db_err(dbenv,	    "%s: %lu larger than maximum value %lu", s, __v, __max);	return (EINVAL);}/* * __db_tmp_open -- *	Create a temporary file. */static int__db_tmp_open(dbenv, tmp_oflags, path, fhp)	DB_ENV *dbenv;	u_int32_t tmp_oflags;	char *path;	DB_FH *fhp;{	u_int32_t id;	int mode, isdir, ret;	const char *p;	char *trv;	/*	 * Check the target directory; if you have six X's and it doesn't	 * exist, this runs for a *very* long time.	 */	if ((ret = __os_exists(path, &isdir)) != 0) {		__db_err(dbenv, "%s: %s", path, db_strerror(ret));		return (ret);	}	if (!isdir) {		__db_err(dbenv, "%s: %s", path, db_strerror(EINVAL));		return (EINVAL);	}	/* Build the path. */	for (trv = path; *trv != '\0'; ++trv)		;	*trv = PATH_SEPARATOR[0];	for (p = DB_TRAIL; (*++trv = *p) != '\0'; ++p)		;	/* Replace the X's with the process ID. */	for (__os_id(&id); *--trv == 'X'; id /= 10)		switch (id % 10) {		case 0: *trv = '0'; break;		case 1: *trv = '1'; break;		case 2: *trv = '2'; break;		case 3: *trv = '3'; break;		case 4: *trv = '4'; break;		case 5: *trv = '5'; break;		case 6: *trv = '6'; break;		case 7: *trv = '7'; break;		case 8: *trv = '8'; break;		case 9: *trv = '9'; break;		}	++trv;	/* Set up open flags and mode. */	mode = __db_omode("rw----");	/* Loop, trying to open a file. */	for (;;) {		if ((ret = __os_open(dbenv, path,		    tmp_oflags | DB_OSO_CREATE | DB_OSO_EXCL | DB_OSO_TEMP,		    mode, fhp)) == 0)			return (0);		/*		 * !!!:		 * If we don't get an EEXIST error, then there's something		 * seriously wrong.  Unfortunately, if the implementation		 * doesn't return EEXIST for O_CREAT and O_EXCL regardless		 * of other possible errors, we've lost.		 */		if (ret != EEXIST) {			__db_err(dbenv,			    "tmp_open: %s: %s", path, db_strerror(ret));			return (ret);		}		/*		 * Tricky little algorithm for backward compatibility.		 * Assumes sequential ordering of lower-case characters.		 */		for (;;) {			if (*trv == '\0')				return (EINVAL);			if (*trv == 'z')				*trv++ = 'a';			else {				if (isdigit((int)*trv))					*trv = 'a';				else					++*trv;				break;			}		}	}	/* NOTREACHED */}

⌨️ 快捷键说明

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