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

📄 dlg_specific.c

📁 postgresql-odbc,跨平台应用
💻 C
📖 第 1 页 / 共 3 页
字号:
		SQLWritePrivateProfileString(sectionName, INI_READONLY, tmp,									 fileName);	}	sprintf(tmp, "%d", comval->use_declarefetch);	if (!SQLWritePrivateProfileString(sectionName, INI_USEDECLAREFETCH, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->unknown_sizes);	if (!SQLWritePrivateProfileString(sectionName, INI_UNKNOWNSIZES, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->text_as_longvarchar);	if (!SQLWritePrivateProfileString(sectionName, INI_TEXTASLONGVARCHAR, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->unknowns_as_longvarchar);	if (!SQLWritePrivateProfileString(sectionName, INI_UNKNOWNSASLONGVARCHAR, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->bools_as_char);	if (!SQLWritePrivateProfileString(sectionName, INI_BOOLSASCHAR, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->parse);	if (!SQLWritePrivateProfileString(sectionName, INI_PARSE, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->cancel_as_freestmt);	if (!SQLWritePrivateProfileString(sectionName, INI_CANCELASFREESTMT, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->max_varchar_size);	if (!SQLWritePrivateProfileString(sectionName, INI_MAXVARCHARSIZE, tmp, fileName))		errc--;	sprintf(tmp, "%d", comval->max_longvarchar_size);	if (!SQLWritePrivateProfileString(sectionName, INI_MAXLONGVARCHARSIZE, tmp, fileName))		errc--;	if (!SQLWritePrivateProfileString(sectionName, INI_EXTRASYSTABLEPREFIXES, comval->extra_systable_prefixes, fileName))		errc--;	/*	 * Never update the conn_setting from this module	 * SQLWritePrivateProfileString(sectionName, INI_CONNSETTINGS,	 * comval->conn_settings, fileName);	 */	return errc;}/*	This is for datasource based options only */voidwriteDSNinfo(const ConnInfo *ci){	const char *DSN = ci->dsn;	char		encoded_conn_settings[LARGE_REGISTRY_LEN],				temp[SMALL_REGISTRY_LEN];	encode(ci->conn_settings, encoded_conn_settings);	SQLWritePrivateProfileString(DSN,								 INI_KDESC,								 ci->desc,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_DATABASE,								 ci->database,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_SERVER,								 ci->server,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_PORT,								 ci->port,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_USER,								 ci->username,								 ODBC_INI);	SQLWritePrivateProfileString(DSN, INI_UID, ci->username, ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_PASSWORD,								 ci->password,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_READONLY,								 ci->onlyread,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_SHOWOIDCOLUMN,								 ci->show_oid_column,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_FAKEOIDINDEX,								 ci->fake_oid_index,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_ROWVERSIONING,								 ci->row_versioning,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_SHOWSYSTEMTABLES,								 ci->show_system_tables,								 ODBC_INI);	if (ci->rollback_on_error >= 0)		sprintf(temp, "%s-%d", ci->protocol, ci->rollback_on_error);	else		strncpy(temp, ci->protocol, sizeof(temp));	SQLWritePrivateProfileString(DSN,								 INI_PROTOCOL,								 temp,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_CONNSETTINGS,								 encoded_conn_settings,								 ODBC_INI);	sprintf(temp, "%d", ci->disallow_premature);	SQLWritePrivateProfileString(DSN,								 INI_DISALLOWPREMATURE,								 temp,								 ODBC_INI);	sprintf(temp, "%d", ci->allow_keyset);	SQLWritePrivateProfileString(DSN,								 INI_UPDATABLECURSORS,								 temp,								 ODBC_INI);	sprintf(temp, "%d", ci->lf_conversion);	SQLWritePrivateProfileString(DSN,								 INI_LFCONVERSION,								 temp,								 ODBC_INI);	sprintf(temp, "%d", ci->true_is_minus1);	SQLWritePrivateProfileString(DSN,								 INI_TRUEISMINUS1,								 temp,								 ODBC_INI);	sprintf(temp, "%d", ci->int8_as);	SQLWritePrivateProfileString(DSN,								 INI_INT8AS,								 temp,								 ODBC_INI);	sprintf(temp, "%x", getExtraOptions(ci));	SQLWritePrivateProfileString(DSN,							INI_EXTRAOPTIONS,							 temp,							 ODBC_INI);	sprintf(temp, "%d", ci->bytea_as_longvarbinary);	SQLWritePrivateProfileString(DSN,								 INI_BYTEAASLONGVARBINARY,								 temp,								 ODBC_INI);	sprintf(temp, "%d", ci->use_server_side_prepare);	SQLWritePrivateProfileString(DSN,								 INI_USESERVERSIDEPREPARE,								 temp,								 ODBC_INI);	sprintf(temp, "%d", ci->lower_case_identifier);	SQLWritePrivateProfileString(DSN,								 INI_LOWERCASEIDENTIFIER,								 temp,								 ODBC_INI);	SQLWritePrivateProfileString(DSN,								 INI_SSLMODE,								 ci->sslmode,								 ODBC_INI);#ifdef	_HANDLE_ENLIST_IN_DTC_	sprintf(temp, "%d", ci->xa_opt);	SQLWritePrivateProfileString(DSN, INI_XAOPT, temp, ODBC_INI);#endif /* _HANDLE_ENLIST_IN_DTC_ */}/* *	This function reads the ODBCINST.INI portion of *	the registry and gets any driver defaults. */voidgetCommonDefaults(const char *section, const char *filename, ConnInfo *ci){	char		temp[256];	GLOBAL_VALUES *comval;	BOOL	inst_position = (stricmp(filename, ODBCINST_INI) == 0);	if (ci)		comval = &(ci->drivers);	else		comval = &globals;	/* Fetch Count is stored in driver section */	SQLGetPrivateProfileString(section, INI_FETCH, "",							   temp, sizeof(temp), filename);	if (temp[0])	{		comval->fetch_max = atoi(temp);		/* sanity check if using cursors */		if (comval->fetch_max <= 0)			comval->fetch_max = FETCH_MAX;	}	else if (inst_position)		comval->fetch_max = FETCH_MAX;	/* Socket Buffersize is stored in driver section */	SQLGetPrivateProfileString(section, INI_SOCKET, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->socket_buffersize = atoi(temp);	else if (inst_position)		comval->socket_buffersize = SOCK_BUFFER_SIZE;	/* Debug is stored in the driver section */	SQLGetPrivateProfileString(section, INI_DEBUG, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->debug = atoi(temp);	else if (inst_position)		comval->debug = DEFAULT_DEBUG;	/* CommLog is stored in the driver section */	SQLGetPrivateProfileString(section, INI_COMMLOG, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->commlog = atoi(temp);	else if (inst_position)		comval->commlog = DEFAULT_COMMLOG;	if (!ci)		logs_on_off(0, 0, 0);	/* Optimizer is stored in the driver section only */	SQLGetPrivateProfileString(section, INI_OPTIMIZER, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->disable_optimizer = atoi(temp);	else if (inst_position)		comval->disable_optimizer = DEFAULT_OPTIMIZER;	/* KSQO is stored in the driver section only */	SQLGetPrivateProfileString(section, INI_KSQO, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->ksqo = atoi(temp);	else if (inst_position)		comval->ksqo = DEFAULT_KSQO;	/* Recognize Unique Index is stored in the driver section only */	SQLGetPrivateProfileString(section, INI_UNIQUEINDEX, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->unique_index = atoi(temp);	else if (inst_position)		comval->unique_index = DEFAULT_UNIQUEINDEX;	/* Unknown Sizes is stored in the driver section only */	SQLGetPrivateProfileString(section, INI_UNKNOWNSIZES, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->unknown_sizes = atoi(temp);	else if (inst_position)		comval->unknown_sizes = DEFAULT_UNKNOWNSIZES;	/* Lie about supported functions? */	SQLGetPrivateProfileString(section, INI_LIE, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->lie = atoi(temp);	else if (inst_position)		comval->lie = DEFAULT_LIE;	/* Parse statements */	SQLGetPrivateProfileString(section, INI_PARSE, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->parse = atoi(temp);	else if (inst_position)		comval->parse = DEFAULT_PARSE;	/* SQLCancel calls SQLFreeStmt in Driver Manager */	SQLGetPrivateProfileString(section, INI_CANCELASFREESTMT, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->cancel_as_freestmt = atoi(temp);	else if (inst_position)		comval->cancel_as_freestmt = DEFAULT_CANCELASFREESTMT;	/* UseDeclareFetch is stored in the driver section only */	SQLGetPrivateProfileString(section, INI_USEDECLAREFETCH, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->use_declarefetch = atoi(temp);	else if (inst_position)		comval->use_declarefetch = DEFAULT_USEDECLAREFETCH;	/* Max Varchar Size */	SQLGetPrivateProfileString(section, INI_MAXVARCHARSIZE, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->max_varchar_size = atoi(temp);	else if (inst_position)		comval->max_varchar_size = MAX_VARCHAR_SIZE;	/* Max TextField Size */	SQLGetPrivateProfileString(section, INI_MAXLONGVARCHARSIZE, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->max_longvarchar_size = atoi(temp);	else if (inst_position)		comval->max_longvarchar_size = TEXT_FIELD_SIZE;	/* Text As LongVarchar	*/	SQLGetPrivateProfileString(section, INI_TEXTASLONGVARCHAR, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->text_as_longvarchar = atoi(temp);	else if (inst_position)		comval->text_as_longvarchar = DEFAULT_TEXTASLONGVARCHAR;	/* Unknowns As LongVarchar	*/	SQLGetPrivateProfileString(section, INI_UNKNOWNSASLONGVARCHAR, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->unknowns_as_longvarchar = atoi(temp);	else if (inst_position)		comval->unknowns_as_longvarchar = DEFAULT_UNKNOWNSASLONGVARCHAR;	/* Bools As Char */	SQLGetPrivateProfileString(section, INI_BOOLSASCHAR, "",							   temp, sizeof(temp), filename);	if (temp[0])		comval->bools_as_char = atoi(temp);	else if (inst_position)		comval->bools_as_char = DEFAULT_BOOLSASCHAR;	/* Extra Systable prefixes */	/*	 * Use @@@ to distinguish between blank extra prefixes and no key	 * entry	 */	SQLGetPrivateProfileString(section, INI_EXTRASYSTABLEPREFIXES, "@@@",							   temp, sizeof(temp), filename);	if (strcmp(temp, "@@@"))		strcpy(comval->extra_systable_prefixes, temp);	else if (inst_position)		strcpy(comval->extra_systable_prefixes, DEFAULT_EXTRASYSTABLEPREFIXES);	mylog("globals.extra_systable_prefixes = '%s'\n", comval->extra_systable_prefixes);	/* Dont allow override of an override! */	if (inst_position)	{		/*		 * ConnSettings is stored in the driver section and per datasource		 * for override		 */		SQLGetPrivateProfileString(section, INI_CONNSETTINGS, "",		 comval->conn_settings, sizeof(comval->conn_settings), filename);		/* Default state for future DSN's Readonly attribute */		SQLGetPrivateProfileString(section, INI_READONLY, "",								   temp, sizeof(temp), filename);		if (temp[0])			comval->onlyread = atoi(temp);		else			comval->onlyread = DEFAULT_READONLY;		/*		 * Default state for future DSN's protocol attribute This isn't a		 * real driver option YET.	This is more intended for		 * customization from the install.		 */		SQLGetPrivateProfileString(section, INI_PROTOCOL, "@@@",								   temp, sizeof(temp), filename);		if (strcmp(temp, "@@@"))			strcpy(comval->protocol, temp);		else			strcpy(comval->protocol, DEFAULT_PROTOCOL);	}}static voidencode(const UCHAR *in, UCHAR *out){	size_t i, ilen = strlen(in),				o = 0;	UCHAR	inc;	for (i = 0; i < ilen; i++)	{		inc = in[i];		if (inc == '+')		{			sprintf(&out[o], "%%2B");			o += 3;		}		else if (isspace(inc))			out[o++] = '+';		else if (!isalnum(inc))		{			sprintf(&out[o], "%%%02x", inc);			o += 3;		}		else			out[o++] = inc;	}	out[o++] = '\0';}static unsigned intconv_from_hex(const UCHAR *s){	int			i,				y = 0,				val;	for (i = 1; i <= 2; i++)	{		if (s[i] >= 'a' && s[i] <= 'f')			val = s[i] - 'a' + 10;		else if (s[i] >= 'A' && s[i] <= 'F')			val = s[i] - 'A' + 10;		else			val = s[i] - '0';		y += val << (4 * (2 - i));	}	return y;}static voiddecode(const UCHAR *in, UCHAR *out){	size_t i, ilen = strlen(in),				o = 0;	UCHAR	inc;	for (i = 0; i < ilen; i++)	{		inc = in[i];		if (inc == '+')			out[o++] = ' ';		else if (inc == '%')		{			sprintf(&out[o++], "%c", conv_from_hex(&in[i]));			i += 2;		}		else			out[o++] = inc;	}	out[o++] = '\0';}

⌨️ 快捷键说明

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