summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/preproc/output.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-12-11 14:54:25 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2016-12-11 14:54:25 -0500
commit89d1dfa49aaff7c0b90de2c91dbb314e1a57eb62 (patch)
tree8103fe349f6a7db9c367b04ce9180c28a243b005 /src/interfaces/ecpg/preproc/output.c
parentc8bfe055be9c688d7084546245c59f7f12a7c606 (diff)
Use "%option prefix" to set API names in ecpg's lexer.
Clean up some technical debt left behind by commit 72b1e3a21: instead of quickly hacking the name of base_yylex() with a #define, set it properly with "%option prefix". This causes the names of pgc.l's other exported symbols to change as well, so run around and modify the outside references to them as needed. Similarly, make pgc.l's external references to base_yylval use that variable's true name instead of a macro. The reason for doing this now is that the quick-hack solution will fail with future versions of flex, as reported by Дилян Палаузов. Hence, back-patch into 9.6 where the previous commit appeared, since it's likely people will build 9.6 with newer flex versions during its lifetime. Discussion: https://postgr.es/m/d845c1af-e18d-6651-178f-9f08cdf37e10@aegee.org
Diffstat (limited to 'src/interfaces/ecpg/preproc/output.c')
-rw-r--r--src/interfaces/ecpg/preproc/output.c66
1 files changed, 33 insertions, 33 deletions
diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c
index c1ba55d5170..59d5d30df4a 100644
--- a/src/interfaces/ecpg/preproc/output.c
+++ b/src/interfaces/ecpg/preproc/output.c
@@ -11,7 +11,7 @@ output_line_number(void)
{
char *line = hashline_number();
- fprintf(yyout, "%s", line);
+ fprintf(base_yyout, "%s", line);
free(line);
}
@@ -37,22 +37,22 @@ print_action(struct when * w)
switch (w->code)
{
case W_SQLPRINT:
- fprintf(yyout, "sqlprint();");
+ fprintf(base_yyout, "sqlprint();");
break;
case W_GOTO:
- fprintf(yyout, "goto %s;", w->command);
+ fprintf(base_yyout, "goto %s;", w->command);
break;
case W_DO:
- fprintf(yyout, "%s;", w->command);
+ fprintf(base_yyout, "%s;", w->command);
break;
case W_STOP:
- fprintf(yyout, "exit (1);");
+ fprintf(base_yyout, "exit (1);");
break;
case W_BREAK:
- fprintf(yyout, "break;");
+ fprintf(base_yyout, "break;");
break;
default:
- fprintf(yyout, "{/* %d not implemented yet */}", w->code);
+ fprintf(base_yyout, "{/* %d not implemented yet */}", w->code);
break;
}
}
@@ -63,24 +63,24 @@ whenever_action(int mode)
if ((mode & 1) == 1 && when_nf.code != W_NOTHING)
{
output_line_number();
- fprintf(yyout, "\nif (sqlca.sqlcode == ECPG_NOT_FOUND) ");
+ fprintf(base_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') ");
+ fprintf(base_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) ");
+ fprintf(base_yyout, "\nif (sqlca.sqlcode < 0) ");
print_action(&when_error);
}
if ((mode & 2) == 2)
- fputc('}', yyout);
+ fputc('}', base_yyout);
output_line_number();
}
@@ -91,7 +91,7 @@ hashline_number(void)
/* do not print line numbers if we are in debug mode */
if (input_filename
#ifdef YYDEBUG
- && !yydebug
+ && !base_yydebug
#endif
)
{
@@ -100,7 +100,7 @@ hashline_number(void)
char *src,
*dest;
- sprintf(line, "\n#line %d \"", yylineno);
+ sprintf(line, "\n#line %d \"", base_yylineno);
src = input_filename;
dest = line + strlen(line);
while (*src)
@@ -128,27 +128,27 @@ static char *ecpg_statement_type_name[] = {
void
output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st)
{
- fprintf(yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL", questionmarks);
+ fprintf(base_yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL", questionmarks);
if (st == ECPGst_execute || st == ECPGst_exec_immediate)
{
- fprintf(yyout, "%s, %s, ", ecpg_statement_type_name[st], stmt);
+ fprintf(base_yyout, "%s, %s, ", ecpg_statement_type_name[st], stmt);
}
else
{
if (st == ECPGst_prepnormal && auto_prepare)
- fputs("ECPGst_prepnormal, \"", yyout);
+ fputs("ECPGst_prepnormal, \"", base_yyout);
else
- fputs("ECPGst_normal, \"", yyout);
+ fputs("ECPGst_normal, \"", base_yyout);
output_escaped_str(stmt, false);
- fputs("\", ", yyout);
+ fputs("\", ", base_yyout);
}
/* dump variables to C file */
dump_variables(argsinsert, 1);
- fputs("ECPGt_EOIT, ", yyout);
+ fputs("ECPGt_EOIT, ", base_yyout);
dump_variables(argsresult, 1);
- fputs("ECPGt_EORT);", yyout);
+ fputs("ECPGt_EORT);", base_yyout);
reset_variables();
whenever_action(whenever_mode | 2);
@@ -160,11 +160,11 @@ output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st)
void
output_prepare_statement(char *name, char *stmt)
{
- fprintf(yyout, "{ ECPGprepare(__LINE__, %s, %d, ", connection ? connection : "NULL", questionmarks);
+ fprintf(base_yyout, "{ ECPGprepare(__LINE__, %s, %d, ", connection ? connection : "NULL", questionmarks);
output_escaped_str(name, true);
- fputs(", ", yyout);
+ fputs(", ", base_yyout);
output_escaped_str(stmt, true);
- fputs(");", yyout);
+ fputs(");", base_yyout);
whenever_action(2);
free(name);
if (connection != NULL)
@@ -178,12 +178,12 @@ output_deallocate_prepare_statement(char *name)
if (strcmp(name, "all") != 0)
{
- fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, ", compat, con);
+ fprintf(base_yyout, "{ ECPGdeallocate(__LINE__, %d, %s, ", compat, con);
output_escaped_str(name, true);
- fputs(");", yyout);
+ fputs(");", base_yyout);
}
else
- fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
+ fprintf(base_yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
whenever_action(2);
free(name);
@@ -203,16 +203,16 @@ output_escaped_str(char *str, bool quoted)
{
i = 1;
len--;
- fputs("\"", yyout);
+ fputs("\"", base_yyout);
}
/* output this char by char as we have to filter " and \n */
for (; i < len; i++)
{
if (str[i] == '"')
- fputs("\\\"", yyout);
+ fputs("\\\"", base_yyout);
else if (str[i] == '\n')
- fputs("\\\n", yyout);
+ fputs("\\\n", base_yyout);
else if (str[i] == '\\')
{
int j = i;
@@ -230,17 +230,17 @@ output_escaped_str(char *str, bool quoted)
if ((str[j] != '\n') && (str[j] != '\r' || str[j + 1] != '\n')) /* not followed by a
* newline */
- fputs("\\\\", yyout);
+ fputs("\\\\", base_yyout);
}
else if (str[i] == '\r' && str[i + 1] == '\n')
{
- fputs("\\\r\n", yyout);
+ fputs("\\\r\n", base_yyout);
i++;
}
else
- fputc(str[i], yyout);
+ fputc(str[i], base_yyout);
}
if (quoted && str[0] == '"' && str[len] == '"')
- fputs("\"", yyout);
+ fputs("\"", base_yyout);
}