Skip to content
Snippets Groups Projects
Commit d6fbb105 authored by Michael Meskes's avatar Michael Meskes
Browse files

Fix ecpg to allow pointer to structs.

parent 03a321d2
No related branches found
No related tags found
No related merge requests found
...@@ -1166,5 +1166,9 @@ Thu Dec 6 14:02:56 CET 2001 ...@@ -1166,5 +1166,9 @@ Thu Dec 6 14:02:56 CET 2001
- Removed debug message from preproc.y. - Removed debug message from preproc.y.
- Fixed some bugs in exec sql var and exec sql type command. - Fixed some bugs in exec sql var and exec sql type command.
Sat Dec 8 21:35:45 CET 2001
- Fix ecpg to allow pointer to structs.
- Set ecpg version to 2.9.0. - Set ecpg version to 2.9.0.
- Set library version to 3.3.0. - Set library version to 3.3.0.
...@@ -361,7 +361,7 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz, ...@@ -361,7 +361,7 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
struct ECPGstruct_member *p, struct ECPGstruct_member *p,
*ind_p = NULL; *ind_p = NULL;
char obuf[BUFSIZ]; char obuf[BUFSIZ];
char pbuf[BUFSIZ], char pbuf[BUFSIZ*2],
ind_pbuf[BUFSIZ]; ind_pbuf[BUFSIZ];
const char *offset; const char *offset;
...@@ -373,7 +373,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz, ...@@ -373,7 +373,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
else else
offset = offsetarg; offset = offsetarg;
if (arrsiz != 0)
sprintf(pbuf, "%s%s.", prefix ? prefix : "", name); sprintf(pbuf, "%s%s.", prefix ? prefix : "", name);
else
sprintf(pbuf, "%s%s->", prefix ? prefix : "", name);
prefix = pbuf; prefix = pbuf;
if (ind_typ == &ecpg_no_indicator) if (ind_typ == &ecpg_no_indicator)
...@@ -382,7 +386,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz, ...@@ -382,7 +386,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
} }
else if (ind_typ != NULL) else if (ind_typ != NULL)
{ {
if (arrsiz != 0)
sprintf(ind_pbuf, "%s%s.", ind_prefix ? ind_prefix : "", ind_name); sprintf(ind_pbuf, "%s%s.", ind_prefix ? ind_prefix : "", ind_name);
else
sprintf(ind_pbuf, "%s%s->", ind_prefix ? ind_prefix : "", ind_name);
ind_prefix = ind_pbuf; ind_prefix = ind_pbuf;
ind_p = ind_typ->u.members; ind_p = ind_typ->u.members;
} }
......
...@@ -19,10 +19,10 @@ main () ...@@ -19,10 +19,10 @@ main ()
exec sql begin declare section; exec sql begin declare section;
struct personal_struct { str name; struct personal_struct { str name;
birthinfo birth; birthinfo birth;
} personal; } personal, *p;
struct personal_indicator { int ind_name; struct personal_indicator { int ind_name;
birthinfo ind_birth; birthinfo ind_birth;
} ind_personal; } ind_personal, *i;
float ind_married; float ind_married;
ind children; ind children;
ind ind_children; ind ind_children;
...@@ -63,9 +63,11 @@ exec sql end declare section; ...@@ -63,9 +63,11 @@ exec sql end declare section;
exec sql whenever not found do break; exec sql whenever not found do break;
p=&personal;
i=&ind_personal;
while (1) { while (1) {
strcpy(msg, "fetch"); strcpy(msg, "fetch");
exec sql fetch cur into :personal:ind_personal, :married:ind_married, :children.integer:ind_children.smallint; exec sql fetch cur into :p:i, :married:ind_married, :children.integer:ind_children.smallint;
printf("%8.8s", personal.name.arr); printf("%8.8s", personal.name.arr);
if (ind_personal.ind_birth.born >= 0) if (ind_personal.ind_birth.born >= 0)
printf(", born %ld", personal.birth.born); printf(", born %ld", personal.birth.born);
...@@ -125,6 +127,5 @@ exec sql end declare section; ...@@ -125,6 +127,5 @@ exec sql end declare section;
if (dbgs != NULL) if (dbgs != NULL)
fclose(dbgs); fclose(dbgs);
return (0); return (0);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment