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

📄 output.c

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 C
字号:
#include "postgres_fe.h"#include "extern.h"voidoutput_line_number(void){	if (input_filename)		fprintf(yyout, "\n#line %d \"%s\"\n", yylineno, input_filename);}voidoutput_simple_statement(char *cmd){	int			i,				j = strlen(cmd);;	/* output this char by char as we have to filter '\"' */	for (i = 0; i < j; i++)	{		if (cmd[i] != '"')			fputc(cmd[i], yyout);		else			fputs("\\\"", yyout);	}	output_line_number();	free(cmd);}/* * store the whenever action here */struct when when_error,			when_nf,			when_warn;static voidprint_action(struct when * w){	switch (w->code)	{		case W_SQLPRINT:			fprintf(yyout, "sqlprint();");			break;		case W_GOTO:			fprintf(yyout, "goto %s;", w->command);			break;		case W_DO:			fprintf(yyout, "%s;", w->command);			break;		case W_STOP:			fprintf(yyout, "exit (1);");			break;		case W_BREAK:			fprintf(yyout, "break;");			break;		default:			fprintf(yyout, "{/* %d not implemented yet */}", w->code);			break;	}}voidwhenever_action(int mode){	if ((mode & 1) == 1 && when_nf.code != W_NOTHING)	{		output_line_number();		fprintf(yyout, "\nif (sqlca.sqlcode == ECPG_NOT_FOUND) ");		print_action(&when_nf);	}	if (when_warn.code != W_NOTHING)	{		output_line_number();		fprintf(yyout, "\nif (sqlca.sqlwarn[0] == 'W') ");		print_action(&when_warn);	}	if (when_error.code != W_NOTHING)	{		output_line_number();		fprintf(yyout, "\nif (sqlca.sqlcode < 0) ");		print_action(&when_error);	}	if ((mode & 2) == 2)		fputc('}', yyout);	output_line_number();}char *hashline_number(void){	if (input_filename)	{		char	   *line = mm_alloc(strlen("\n#line %d \"%s\"\n") + 21 + strlen(input_filename));		sprintf(line, "\n#line %d \"%s\"\n", yylineno, input_filename);		return line;	}	return EMPTY;}voidoutput_statement(char *stmt, int mode, char *con){	int			i,				j = strlen(stmt);	fprintf(yyout, "{ ECPGdo(__LINE__, %d, %d, %s, \"", compat, force_indicator, con ? con : "NULL");	/* output this char by char as we have to filter '\"' */	for (i = 0; i < j; i++)	{		if (stmt[i] != '"')			fputc(stmt[i], yyout);		else			fputs("\\\"", yyout);	}	fputs("\", ", yyout);	/* dump variables to C file */	dump_variables(argsinsert, 1);	fputs("ECPGt_EOIT, ", yyout);	dump_variables(argsresult, 1);	fputs("ECPGt_EORT);", yyout);	reset_variables();	mode |= 2;	whenever_action(mode);	free(stmt);	if (connection != NULL)		free(connection);}

⌨️ 快捷键说明

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