Fix ecpg to allow pointer to structs.

This commit is contained in:
Michael Meskes 2001-12-08 20:43:35 +00:00
parent 03a321d214
commit d6fbb10556
3 changed files with 20 additions and 7 deletions

View File

@ -1166,5 +1166,9 @@ Thu Dec 6 14:02:56 CET 2001
- Removed debug message from preproc.y.
- 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 library version to 3.3.0.

View File

@ -361,7 +361,7 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
struct ECPGstruct_member *p,
*ind_p = NULL;
char obuf[BUFSIZ];
char pbuf[BUFSIZ],
char pbuf[BUFSIZ*2],
ind_pbuf[BUFSIZ];
const char *offset;
@ -373,7 +373,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
else
offset = offsetarg;
sprintf(pbuf, "%s%s.", prefix ? prefix : "", name);
if (arrsiz != 0)
sprintf(pbuf, "%s%s.", prefix ? prefix : "", name);
else
sprintf(pbuf, "%s%s->", prefix ? prefix : "", name);
prefix = pbuf;
if (ind_typ == &ecpg_no_indicator)
@ -382,7 +386,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, long arrsiz,
}
else if (ind_typ != NULL)
{
sprintf(ind_pbuf, "%s%s.", ind_prefix ? ind_prefix : "", ind_name);
if (arrsiz != 0)
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_p = ind_typ->u.members;
}

View File

@ -19,10 +19,10 @@ main ()
exec sql begin declare section;
struct personal_struct { str name;
birthinfo birth;
} personal;
} personal, *p;
struct personal_indicator { int ind_name;
birthinfo ind_birth;
} ind_personal;
} ind_personal, *i;
float ind_married;
ind children;
ind ind_children;
@ -63,9 +63,11 @@ exec sql end declare section;
exec sql whenever not found do break;
p=&personal;
i=&ind_personal;
while (1) {
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);
if (ind_personal.ind_birth.born >= 0)
printf(", born %ld", personal.birth.born);
@ -125,6 +127,5 @@ exec sql end declare section;
if (dbgs != NULL)
fclose(dbgs);
return (0);
}