Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9309eac

Browse files
author
Michael Meskes
committed
*** empty log message ***
1 parent0eb5ab8 commit9309eac

File tree

5 files changed

+302
-372
lines changed

5 files changed

+302
-372
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,5 +837,11 @@ Wed Mar 1 10:49:03 CET 2000
837837

838838
- Synced preproc.y with gram.y.
839839
- Added output of arrays.
840+
841+
Thu Mar 2 11:25:09 CET 2000
842+
843+
- Fixed some parsing problems. A variable can now be a reserved
844+
SQL keyword.
845+
- Made sure double quotes in statements are correctly quoted.
840846
- Set library version to 3.1.0.
841847
- Set ecpg version to 2.7.0.

‎src/interfaces/ecpg/preproc/extern.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ extern const char *get_dtype(enum ECPGdtype);
3939
externvoidlex_init(void);
4040
externchar*make_str(constchar*);
4141
externvoidoutput_line_number(void);
42-
externvoidoutput_statement(char*,int,char*);
42+
externvoidoutput_statement(char*,int,char*,char*,structarguments*,structarguments*);
4343
externvoidoutput_simple_statement(char*);
4444
externchar*hashline_number(void);
4545
externintyyparse(void);

‎src/interfaces/ecpg/preproc/output.c

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,15 @@ output_line_number()
1313
void
1414
output_simple_statement(char*cmd)
1515
{
16-
fputs(cmd,yyout);
16+
inti,j=strlen(cmd);;
17+
18+
/* do this char by char as we have to filter '\"' */
19+
for (i=0;i<j;i++) {
20+
if (cmd[i]!='"')
21+
fputc(cmd[i],yyout);
22+
else
23+
fputs("\\\"",yyout);
24+
}
1725
output_line_number();
1826
free(cmd);
1927
}
@@ -86,19 +94,20 @@ hashline_number(void)
8694
}
8795

8896
void
89-
output_statement(char*stmt,intmode,char*descriptor)
97+
output_statement(char*stmt,intmode,char*descriptor,
98+
char*con,structarguments*insert,structarguments*result)
9099
{
91-
inti,j=strlen(stmt);
100+
inti,j=strlen(stmt);
92101

93102
if (descriptor==NULL)
94-
fprintf(yyout,"{ ECPGdo(__LINE__, %s, \"",connection ?connection :"NULL");
103+
fprintf(yyout,"{ ECPGdo(__LINE__, %s, \"",con ?con :"NULL");
95104
else
96105
fprintf(yyout,"{ ECPGdo_descriptor(__LINE__, %s, \"%s\", \"",
97-
connection ?connection :"NULL",descriptor);
106+
con ?con :"NULL",descriptor);
98107

99108
/* do this char by char as we have to filter '\"' */
100-
for (i=0;i<j;i++) {
101-
if (stmt[i]!='\"')
109+
for (i=0;i<j;i++) {
110+
if (stmt[i]!='"')
102111
fputc(stmt[i],yyout);
103112
else
104113
fputs("\\\"",yyout);
@@ -109,9 +118,9 @@ output_statement(char * stmt, int mode, char *descriptor)
109118
fputs("\", ",yyout);
110119

111120
/* dump variables to C file */
112-
dump_variables(argsinsert,1);
121+
dump_variables(insert,1);
113122
fputs("ECPGt_EOIT, ",yyout);
114-
dump_variables(argsresult,1);
123+
dump_variables(result,1);
115124
fputs("ECPGt_EORT);",yyout);
116125
}
117126
else
@@ -120,7 +129,8 @@ output_statement(char * stmt, int mode, char *descriptor)
120129
mode |=2;
121130
whenever_action(mode);
122131
free(stmt);
123-
free(descriptor);
132+
if (descriptor!=NULL)
133+
free(descriptor);
124134
if (connection!=NULL)
125135
free(connection);
126136
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp