mirror of
https://github.com/postgres/postgres.git
synced 2025-07-21 16:02:15 +03:00
There is no need to have to identical functions in ecpg thus removing one of them.
This commit is contained in:
@ -188,7 +188,7 @@ output_get_descr(char *desc_name, char *index)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf(yyout, "%s,", get_dtype(results->value));
|
fprintf(yyout, "%s,", get_dtype(results->value));
|
||||||
ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, make_str("0"), NULL, NULL);
|
ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, mm_strdup("0"), NULL, NULL);
|
||||||
}
|
}
|
||||||
drop_assignments();
|
drop_assignments();
|
||||||
fputs("ECPGd_EODT);\n", yyout);
|
fputs("ECPGd_EODT);\n", yyout);
|
||||||
@ -293,7 +293,7 @@ output_set_descr(char *desc_name, char *index)
|
|||||||
case ECPGd_length:
|
case ECPGd_length:
|
||||||
case ECPGd_type:
|
case ECPGd_type:
|
||||||
fprintf(yyout, "%s,", get_dtype(results->value));
|
fprintf(yyout, "%s,", get_dtype(results->value));
|
||||||
ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, make_str("0"), NULL, NULL);
|
ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, mm_strdup("0"), NULL, NULL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -41,7 +41,7 @@ ECPG: stmtPrepareStmt block
|
|||||||
if ($1.type == NULL || strlen($1.type) == 0)
|
if ($1.type == NULL || strlen($1.type) == 0)
|
||||||
output_prepare_statement($1.name, $1.stmt);
|
output_prepare_statement($1.name, $1.stmt);
|
||||||
else
|
else
|
||||||
output_statement(cat_str(5, make_str("prepare"), $1.name, $1.type, make_str("as"), $1.stmt), 0, ECPGst_normal);
|
output_statement(cat_str(5, mm_strdup("prepare"), $1.name, $1.type, mm_strdup("as"), $1.stmt), 0, ECPGst_normal);
|
||||||
}
|
}
|
||||||
ECPG: stmtTransactionStmt block
|
ECPG: stmtTransactionStmt block
|
||||||
{
|
{
|
||||||
@ -212,21 +212,21 @@ ECPG: var_valueNumericOnly addon
|
|||||||
if ($1[0] == '$')
|
if ($1[0] == '$')
|
||||||
{
|
{
|
||||||
free($1);
|
free($1);
|
||||||
$1 = make_str("$0");
|
$1 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
ECPG: fetch_argscursor_name addon
|
ECPG: fetch_argscursor_name addon
|
||||||
add_additional_variables($1, false);
|
add_additional_variables($1, false);
|
||||||
if ($1[0] == ':')
|
if ($1[0] == ':')
|
||||||
{
|
{
|
||||||
free($1);
|
free($1);
|
||||||
$1 = make_str("$0");
|
$1 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
ECPG: fetch_argsfrom_incursor_name addon
|
ECPG: fetch_argsfrom_incursor_name addon
|
||||||
add_additional_variables($2, false);
|
add_additional_variables($2, false);
|
||||||
if ($2[0] == ':')
|
if ($2[0] == ':')
|
||||||
{
|
{
|
||||||
free($2);
|
free($2);
|
||||||
$2 = make_str("$0");
|
$2 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
ECPG: fetch_argsNEXTopt_from_incursor_name addon
|
ECPG: fetch_argsNEXTopt_from_incursor_name addon
|
||||||
ECPG: fetch_argsPRIORopt_from_incursor_name addon
|
ECPG: fetch_argsPRIORopt_from_incursor_name addon
|
||||||
@ -237,19 +237,19 @@ ECPG: fetch_argsALLopt_from_incursor_name addon
|
|||||||
if ($3[0] == ':')
|
if ($3[0] == ':')
|
||||||
{
|
{
|
||||||
free($3);
|
free($3);
|
||||||
$3 = make_str("$0");
|
$3 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
ECPG: fetch_argsSignedIconstopt_from_incursor_name addon
|
ECPG: fetch_argsSignedIconstopt_from_incursor_name addon
|
||||||
add_additional_variables($3, false);
|
add_additional_variables($3, false);
|
||||||
if ($3[0] == ':')
|
if ($3[0] == ':')
|
||||||
{
|
{
|
||||||
free($3);
|
free($3);
|
||||||
$3 = make_str("$0");
|
$3 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
if ($1[0] == '$')
|
if ($1[0] == '$')
|
||||||
{
|
{
|
||||||
free($1);
|
free($1);
|
||||||
$1 = make_str("$0");
|
$1 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
ECPG: fetch_argsFORWARDALLopt_from_incursor_name addon
|
ECPG: fetch_argsFORWARDALLopt_from_incursor_name addon
|
||||||
ECPG: fetch_argsBACKWARDALLopt_from_incursor_name addon
|
ECPG: fetch_argsBACKWARDALLopt_from_incursor_name addon
|
||||||
@ -257,7 +257,7 @@ ECPG: fetch_argsBACKWARDALLopt_from_incursor_name addon
|
|||||||
if ($4[0] == ':')
|
if ($4[0] == ':')
|
||||||
{
|
{
|
||||||
free($4);
|
free($4);
|
||||||
$4 = make_str("$0");
|
$4 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
ECPG: fetch_argsABSOLUTE_PSignedIconstopt_from_incursor_name addon
|
ECPG: fetch_argsABSOLUTE_PSignedIconstopt_from_incursor_name addon
|
||||||
ECPG: fetch_argsRELATIVE_PSignedIconstopt_from_incursor_name addon
|
ECPG: fetch_argsRELATIVE_PSignedIconstopt_from_incursor_name addon
|
||||||
@ -267,12 +267,12 @@ ECPG: fetch_argsBACKWARDSignedIconstopt_from_incursor_name addon
|
|||||||
if ($4[0] == ':')
|
if ($4[0] == ':')
|
||||||
{
|
{
|
||||||
free($4);
|
free($4);
|
||||||
$4 = make_str("$0");
|
$4 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
if ($2[0] == '$')
|
if ($2[0] == '$')
|
||||||
{
|
{
|
||||||
free($2);
|
free($2);
|
||||||
$2 = make_str("$0");
|
$2 = mm_strdup("$0");
|
||||||
}
|
}
|
||||||
ECPG: cursor_namename rule
|
ECPG: cursor_namename rule
|
||||||
| char_civar
|
| char_civar
|
||||||
@ -287,7 +287,7 @@ ECPG: PrepareStmtPREPAREprepared_nameprep_type_clauseASPreparableStmt block
|
|||||||
{
|
{
|
||||||
$$.name = $2;
|
$$.name = $2;
|
||||||
$$.type = $3;
|
$$.type = $3;
|
||||||
$$.stmt = cat_str(3, make_str("\""), $5, make_str("\""));
|
$$.stmt = cat_str(3, mm_strdup("\""), $5, mm_strdup("\""));
|
||||||
}
|
}
|
||||||
| PREPARE prepared_name FROM execstring
|
| PREPARE prepared_name FROM execstring
|
||||||
{
|
{
|
||||||
@ -300,7 +300,7 @@ ECPG: ExecuteStmtEXECUTEprepared_nameexecute_param_clauseexecute_rest block
|
|||||||
ECPG: DeclareCursorStmtDECLAREcursor_namecursor_optionsCURSORopt_holdFORSelectStmt block
|
ECPG: DeclareCursorStmtDECLAREcursor_namecursor_optionsCURSORopt_holdFORSelectStmt block
|
||||||
{
|
{
|
||||||
struct cursor *ptr, *this;
|
struct cursor *ptr, *this;
|
||||||
char *cursor_marker = $2[0] == ':' ? make_str("$0") : mm_strdup($2);
|
char *cursor_marker = $2[0] == ':' ? mm_strdup("$0") : mm_strdup($2);
|
||||||
char *comment, *c1, *c2;
|
char *comment, *c1, *c2;
|
||||||
int (* strcmp_fn)(const char *, const char *) = ($2[0] == ':' ? strcmp : pg_strcasecmp);
|
int (* strcmp_fn)(const char *, const char *) = ($2[0] == ':' ? strcmp : pg_strcasecmp);
|
||||||
|
|
||||||
@ -322,7 +322,7 @@ ECPG: DeclareCursorStmtDECLAREcursor_namecursor_optionsCURSORopt_holdFORSelectSt
|
|||||||
this->function = (current_function ? mm_strdup(current_function) : NULL);
|
this->function = (current_function ? mm_strdup(current_function) : NULL);
|
||||||
this->connection = connection;
|
this->connection = connection;
|
||||||
this->opened = false;
|
this->opened = false;
|
||||||
this->command = cat_str(7, make_str("declare"), cursor_marker, $3, make_str("cursor"), $5, make_str("for"), $7);
|
this->command = cat_str(7, mm_strdup("declare"), cursor_marker, $3, mm_strdup("cursor"), $5, mm_strdup("for"), $7);
|
||||||
this->argsinsert = argsinsert;
|
this->argsinsert = argsinsert;
|
||||||
this->argsinsert_oos = NULL;
|
this->argsinsert_oos = NULL;
|
||||||
this->argsresult = argsresult;
|
this->argsresult = argsresult;
|
||||||
@ -337,31 +337,31 @@ ECPG: DeclareCursorStmtDECLAREcursor_namecursor_optionsCURSORopt_holdFORSelectSt
|
|||||||
c2[0] = '.';
|
c2[0] = '.';
|
||||||
c2[1] = '.';
|
c2[1] = '.';
|
||||||
}
|
}
|
||||||
comment = cat_str(3, make_str("/*"), c1, make_str("*/"));
|
comment = cat_str(3, mm_strdup("/*"), c1, mm_strdup("*/"));
|
||||||
|
|
||||||
if ((braces_open > 0) && INFORMIX_MODE) /* we're in a function */
|
if ((braces_open > 0) && INFORMIX_MODE) /* we're in a function */
|
||||||
$$ = cat_str(3, adjust_outofscope_cursor_vars(this),
|
$$ = cat_str(3, adjust_outofscope_cursor_vars(this),
|
||||||
make_str("ECPG_informix_reset_sqlca();"),
|
mm_strdup("ECPG_informix_reset_sqlca();"),
|
||||||
comment);
|
comment);
|
||||||
else
|
else
|
||||||
$$ = cat2_str(adjust_outofscope_cursor_vars(this), comment);
|
$$ = cat2_str(adjust_outofscope_cursor_vars(this), comment);
|
||||||
}
|
}
|
||||||
ECPG: ClosePortalStmtCLOSEcursor_name block
|
ECPG: ClosePortalStmtCLOSEcursor_name block
|
||||||
{
|
{
|
||||||
char *cursor_marker = $2[0] == ':' ? make_str("$0") : $2;
|
char *cursor_marker = $2[0] == ':' ? mm_strdup("$0") : $2;
|
||||||
$$ = cat2_str(make_str("close"), cursor_marker);
|
$$ = cat2_str(mm_strdup("close"), cursor_marker);
|
||||||
}
|
}
|
||||||
ECPG: opt_hold block
|
ECPG: opt_hold block
|
||||||
{
|
{
|
||||||
if (compat == ECPG_COMPAT_INFORMIX_SE && autocommit)
|
if (compat == ECPG_COMPAT_INFORMIX_SE && autocommit)
|
||||||
$$ = make_str("with hold");
|
$$ = mm_strdup("with hold");
|
||||||
else
|
else
|
||||||
$$ = EMPTY;
|
$$ = EMPTY;
|
||||||
}
|
}
|
||||||
ECPG: into_clauseINTOOptTempTableName block
|
ECPG: into_clauseINTOOptTempTableName block
|
||||||
{
|
{
|
||||||
FoundInto = 1;
|
FoundInto = 1;
|
||||||
$$= cat2_str(make_str("into"), $2);
|
$$= cat2_str(mm_strdup("into"), $2);
|
||||||
}
|
}
|
||||||
| ecpg_into { $$ = EMPTY; }
|
| ecpg_into { $$ = EMPTY; }
|
||||||
ECPG: table_refselect_with_parens addon
|
ECPG: table_refselect_with_parens addon
|
||||||
@ -369,16 +369,16 @@ ECPG: table_refselect_with_parens addon
|
|||||||
ECPG: TypenameSimpleTypenameopt_array_bounds block
|
ECPG: TypenameSimpleTypenameopt_array_bounds block
|
||||||
{ $$ = cat2_str($1, $2.str); }
|
{ $$ = cat2_str($1, $2.str); }
|
||||||
ECPG: TypenameSETOFSimpleTypenameopt_array_bounds block
|
ECPG: TypenameSETOFSimpleTypenameopt_array_bounds block
|
||||||
{ $$ = cat_str(3, make_str("setof"), $2, $3.str); }
|
{ $$ = cat_str(3, mm_strdup("setof"), $2, $3.str); }
|
||||||
ECPG: opt_array_boundsopt_array_bounds'['']' block
|
ECPG: opt_array_boundsopt_array_bounds'['']' block
|
||||||
{
|
{
|
||||||
$$.index1 = $1.index1;
|
$$.index1 = $1.index1;
|
||||||
$$.index2 = $1.index2;
|
$$.index2 = $1.index2;
|
||||||
if (strcmp($$.index1, "-1") == 0)
|
if (strcmp($$.index1, "-1") == 0)
|
||||||
$$.index1 = make_str("0");
|
$$.index1 = mm_strdup("0");
|
||||||
else if (strcmp($1.index2, "-1") == 0)
|
else if (strcmp($1.index2, "-1") == 0)
|
||||||
$$.index2 = make_str("0");
|
$$.index2 = mm_strdup("0");
|
||||||
$$.str = cat_str(2, $1.str, make_str("[]"));
|
$$.str = cat_str(2, $1.str, mm_strdup("[]"));
|
||||||
}
|
}
|
||||||
| opt_array_bounds '[' Iresult ']'
|
| opt_array_bounds '[' Iresult ']'
|
||||||
{
|
{
|
||||||
@ -388,12 +388,12 @@ ECPG: opt_array_boundsopt_array_bounds'['']' block
|
|||||||
$$.index1 = strdup($3);
|
$$.index1 = strdup($3);
|
||||||
else if (strcmp($1.index2, "-1") == 0)
|
else if (strcmp($1.index2, "-1") == 0)
|
||||||
$$.index2 = strdup($3);
|
$$.index2 = strdup($3);
|
||||||
$$.str = cat_str(4, $1.str, make_str("["), $3, make_str("]"));
|
$$.str = cat_str(4, $1.str, mm_strdup("["), $3, mm_strdup("]"));
|
||||||
}
|
}
|
||||||
ECPG: opt_array_bounds
|
ECPG: opt_array_bounds
|
||||||
{
|
{
|
||||||
$$.index1 = make_str("-1");
|
$$.index1 = mm_strdup("-1");
|
||||||
$$.index2 = make_str("-1");
|
$$.index2 = mm_strdup("-1");
|
||||||
$$.str= EMPTY;
|
$$.str= EMPTY;
|
||||||
}
|
}
|
||||||
ECPG: IconstICONST block
|
ECPG: IconstICONST block
|
||||||
@ -404,8 +404,8 @@ ECPG: AexprConstNULL_P rule
|
|||||||
ECPG: ColIdcol_name_keyword rule
|
ECPG: ColIdcol_name_keyword rule
|
||||||
| ECPGKeywords { $$ = $1; }
|
| ECPGKeywords { $$ = $1; }
|
||||||
| ECPGCKeywords { $$ = $1; }
|
| ECPGCKeywords { $$ = $1; }
|
||||||
| CHAR_P { $$ = make_str("char"); }
|
| CHAR_P { $$ = mm_strdup("char"); }
|
||||||
| VALUES { $$ = make_str("values"); }
|
| VALUES { $$ = mm_strdup("values"); }
|
||||||
ECPG: type_function_nametype_func_name_keyword rule
|
ECPG: type_function_nametype_func_name_keyword rule
|
||||||
| ECPGKeywords { $$ = $1; }
|
| ECPGKeywords { $$ = $1; }
|
||||||
| ECPGTypeName { $$ = $1; }
|
| ECPGTypeName { $$ = $1; }
|
||||||
@ -418,60 +418,60 @@ ECPG: VariableShowStmtSHOWALL block
|
|||||||
ECPG: FetchStmtMOVEfetch_args rule
|
ECPG: FetchStmtMOVEfetch_args rule
|
||||||
| FETCH fetch_args ecpg_fetch_into
|
| FETCH fetch_args ecpg_fetch_into
|
||||||
{
|
{
|
||||||
$$ = cat2_str(make_str("fetch"), $2);
|
$$ = cat2_str(mm_strdup("fetch"), $2);
|
||||||
}
|
}
|
||||||
| FETCH FORWARD cursor_name opt_ecpg_fetch_into
|
| FETCH FORWARD cursor_name opt_ecpg_fetch_into
|
||||||
{
|
{
|
||||||
char *cursor_marker = $3[0] == ':' ? make_str("$0") : $3;
|
char *cursor_marker = $3[0] == ':' ? mm_strdup("$0") : $3;
|
||||||
add_additional_variables($3, false);
|
add_additional_variables($3, false);
|
||||||
$$ = cat_str(2, make_str("fetch forward"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("fetch forward"), cursor_marker);
|
||||||
}
|
}
|
||||||
| FETCH FORWARD from_in cursor_name opt_ecpg_fetch_into
|
| FETCH FORWARD from_in cursor_name opt_ecpg_fetch_into
|
||||||
{
|
{
|
||||||
char *cursor_marker = $4[0] == ':' ? make_str("$0") : $4;
|
char *cursor_marker = $4[0] == ':' ? mm_strdup("$0") : $4;
|
||||||
add_additional_variables($4, false);
|
add_additional_variables($4, false);
|
||||||
$$ = cat_str(2, make_str("fetch forward from"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("fetch forward from"), cursor_marker);
|
||||||
}
|
}
|
||||||
| FETCH BACKWARD cursor_name opt_ecpg_fetch_into
|
| FETCH BACKWARD cursor_name opt_ecpg_fetch_into
|
||||||
{
|
{
|
||||||
char *cursor_marker = $3[0] == ':' ? make_str("$0") : $3;
|
char *cursor_marker = $3[0] == ':' ? mm_strdup("$0") : $3;
|
||||||
add_additional_variables($3, false);
|
add_additional_variables($3, false);
|
||||||
$$ = cat_str(2, make_str("fetch backward"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("fetch backward"), cursor_marker);
|
||||||
}
|
}
|
||||||
| FETCH BACKWARD from_in cursor_name opt_ecpg_fetch_into
|
| FETCH BACKWARD from_in cursor_name opt_ecpg_fetch_into
|
||||||
{
|
{
|
||||||
char *cursor_marker = $4[0] == ':' ? make_str("$0") : $4;
|
char *cursor_marker = $4[0] == ':' ? mm_strdup("$0") : $4;
|
||||||
add_additional_variables($4, false);
|
add_additional_variables($4, false);
|
||||||
$$ = cat_str(2, make_str("fetch backward from"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("fetch backward from"), cursor_marker);
|
||||||
}
|
}
|
||||||
| MOVE FORWARD cursor_name
|
| MOVE FORWARD cursor_name
|
||||||
{
|
{
|
||||||
char *cursor_marker = $3[0] == ':' ? make_str("$0") : $3;
|
char *cursor_marker = $3[0] == ':' ? mm_strdup("$0") : $3;
|
||||||
add_additional_variables($3, false);
|
add_additional_variables($3, false);
|
||||||
$$ = cat_str(2, make_str("move forward"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("move forward"), cursor_marker);
|
||||||
}
|
}
|
||||||
| MOVE FORWARD from_in cursor_name
|
| MOVE FORWARD from_in cursor_name
|
||||||
{
|
{
|
||||||
char *cursor_marker = $4[0] == ':' ? make_str("$0") : $4;
|
char *cursor_marker = $4[0] == ':' ? mm_strdup("$0") : $4;
|
||||||
add_additional_variables($4, false);
|
add_additional_variables($4, false);
|
||||||
$$ = cat_str(2, make_str("move forward from"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("move forward from"), cursor_marker);
|
||||||
}
|
}
|
||||||
| MOVE BACKWARD cursor_name
|
| MOVE BACKWARD cursor_name
|
||||||
{
|
{
|
||||||
char *cursor_marker = $3[0] == ':' ? make_str("$0") : $3;
|
char *cursor_marker = $3[0] == ':' ? mm_strdup("$0") : $3;
|
||||||
add_additional_variables($3, false);
|
add_additional_variables($3, false);
|
||||||
$$ = cat_str(2, make_str("move backward"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("move backward"), cursor_marker);
|
||||||
}
|
}
|
||||||
| MOVE BACKWARD from_in cursor_name
|
| MOVE BACKWARD from_in cursor_name
|
||||||
{
|
{
|
||||||
char *cursor_marker = $4[0] == ':' ? make_str("$0") : $4;
|
char *cursor_marker = $4[0] == ':' ? mm_strdup("$0") : $4;
|
||||||
add_additional_variables($4, false);
|
add_additional_variables($4, false);
|
||||||
$$ = cat_str(2, make_str("move backward from"), cursor_marker);
|
$$ = cat_str(2, mm_strdup("move backward from"), cursor_marker);
|
||||||
}
|
}
|
||||||
ECPG: limit_clauseLIMITselect_limit_value','select_offset_value block
|
ECPG: limit_clauseLIMITselect_limit_value','select_offset_value block
|
||||||
{
|
{
|
||||||
mmerror(PARSE_ERROR, ET_WARNING, "no longer supported LIMIT #,# syntax passed to server");
|
mmerror(PARSE_ERROR, ET_WARNING, "no longer supported LIMIT #,# syntax passed to server");
|
||||||
$$ = cat_str(4, make_str("limit"), $2, make_str(","), $4);
|
$$ = cat_str(4, mm_strdup("limit"), $2, mm_strdup(","), $4);
|
||||||
}
|
}
|
||||||
ECPG: SignedIconstIconst rule
|
ECPG: SignedIconstIconst rule
|
||||||
| civar { $$ = $1; }
|
| civar { $$ = $1; }
|
||||||
|
@ -148,15 +148,6 @@ cat_str(int count, ...)
|
|||||||
return(res_str);
|
return(res_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
|
||||||
make_str(const char *str)
|
|
||||||
{
|
|
||||||
char * res_str = (char *)mm_alloc(strlen(str) + 1);
|
|
||||||
|
|
||||||
strcpy(res_str, str);
|
|
||||||
return res_str;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
make2_str(char *str1, char *str2)
|
make2_str(char *str1, char *str2)
|
||||||
{
|
{
|
||||||
@ -219,7 +210,7 @@ create_questionmarks(char *name, bool array)
|
|||||||
for (; count > 0; count --)
|
for (; count > 0; count --)
|
||||||
{
|
{
|
||||||
sprintf(pacounter_buffer, "$%d", pacounter++);
|
sprintf(pacounter_buffer, "$%d", pacounter++);
|
||||||
result = cat_str(3, result, mm_strdup(pacounter_buffer), make_str(" , "));
|
result = cat_str(3, result, mm_strdup(pacounter_buffer), mm_strdup(" , "));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* removed the trailing " ," */
|
/* removed the trailing " ," */
|
||||||
@ -242,7 +233,7 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
|
|||||||
* instead of the variable. Do it only for local variables, not for globals.
|
* instead of the variable. Do it only for local variables, not for globals.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *result = make_str("");
|
char *result = mm_strdup("");
|
||||||
int insert;
|
int insert;
|
||||||
|
|
||||||
for (insert = 1; insert >= 0; insert--)
|
for (insert = 1; insert >= 0; insert--)
|
||||||
@ -277,12 +268,12 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
|
|||||||
}
|
}
|
||||||
else if ((ptr->variable->type->type != ECPGt_varchar && ptr->variable->type->type != ECPGt_char && ptr->variable->type->type != ECPGt_unsigned_char && ptr->variable->type->type != ECPGt_string) && atoi(ptr->variable->type->size) > 1)
|
else if ((ptr->variable->type->type != ECPGt_varchar && ptr->variable->type->type != ECPGt_char && ptr->variable->type->type != ECPGt_unsigned_char && ptr->variable->type->type != ECPGt_string) && atoi(ptr->variable->type->size) > 1)
|
||||||
{
|
{
|
||||||
newvar = new_variable(cat_str(4, make_str("("), mm_strdup(ecpg_type_name(ptr->variable->type->u.element->type)), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, make_str("1"), ptr->variable->type->u.element->counter), ptr->variable->type->size), 0);
|
newvar = new_variable(cat_str(4, mm_strdup("("), mm_strdup(ecpg_type_name(ptr->variable->type->u.element->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, mm_strdup("1"), ptr->variable->type->u.element->counter), ptr->variable->type->size), 0);
|
||||||
sprintf(temp, "%d, (", ecpg_internal_var++);
|
sprintf(temp, "%d, (", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
else if ((ptr->variable->type->type == ECPGt_varchar || ptr->variable->type->type == ECPGt_char || ptr->variable->type->type == ECPGt_unsigned_char || ptr->variable->type->type == ECPGt_string) && atoi(ptr->variable->type->size) > 1)
|
else if ((ptr->variable->type->type == ECPGt_varchar || ptr->variable->type->type == ECPGt_char || ptr->variable->type->type == ECPGt_unsigned_char || ptr->variable->type->type == ECPGt_string) && atoi(ptr->variable->type->size) > 1)
|
||||||
{
|
{
|
||||||
newvar = new_variable(cat_str(4, make_str("("), mm_strdup(ecpg_type_name(ptr->variable->type->type)), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->variable->type->type, ptr->variable->type->size, ptr->variable->type->counter), 0);
|
newvar = new_variable(cat_str(4, mm_strdup("("), mm_strdup(ecpg_type_name(ptr->variable->type->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->variable->type->type, ptr->variable->type->size, ptr->variable->type->counter), 0);
|
||||||
if (ptr->variable->type->type == ECPGt_varchar)
|
if (ptr->variable->type->type == ECPGt_varchar)
|
||||||
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
||||||
else
|
else
|
||||||
@ -291,7 +282,7 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
|
|||||||
else if (ptr->variable->type->type == ECPGt_struct || ptr->variable->type->type == ECPGt_union)
|
else if (ptr->variable->type->type == ECPGt_struct || ptr->variable->type->type == ECPGt_union)
|
||||||
{
|
{
|
||||||
sprintf(temp, "%d)))", ecpg_internal_var);
|
sprintf(temp, "%d)))", ecpg_internal_var);
|
||||||
newvar = new_variable(cat_str(4, make_str("(*("), mm_strdup(ptr->variable->type->type_name), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->variable->type->u.members, ptr->variable->type->type, ptr->variable->type->type_name, ptr->variable->type->struct_sizeof), 0);
|
newvar = new_variable(cat_str(4, mm_strdup("(*("), mm_strdup(ptr->variable->type->type_name), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->variable->type->u.members, ptr->variable->type->type, ptr->variable->type->type_name, ptr->variable->type->struct_sizeof), 0);
|
||||||
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
else if (ptr->variable->type->type == ECPGt_array)
|
else if (ptr->variable->type->type == ECPGt_array)
|
||||||
@ -299,24 +290,24 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
|
|||||||
if (ptr->variable->type->u.element->type == ECPGt_struct || ptr->variable->type->u.element->type == ECPGt_union)
|
if (ptr->variable->type->u.element->type == ECPGt_struct || ptr->variable->type->u.element->type == ECPGt_union)
|
||||||
{
|
{
|
||||||
sprintf(temp, "%d)))", ecpg_internal_var);
|
sprintf(temp, "%d)))", ecpg_internal_var);
|
||||||
newvar = new_variable(cat_str(4, make_str("(*("), mm_strdup(ptr->variable->type->u.element->type_name), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->variable->type->u.element->u.members, ptr->variable->type->u.element->type, ptr->variable->type->u.element->type_name, ptr->variable->type->u.element->struct_sizeof), 0);
|
newvar = new_variable(cat_str(4, mm_strdup("(*("), mm_strdup(ptr->variable->type->u.element->type_name), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->variable->type->u.element->u.members, ptr->variable->type->u.element->type, ptr->variable->type->u.element->type_name, ptr->variable->type->u.element->struct_sizeof), 0);
|
||||||
sprintf(temp, "%d, (", ecpg_internal_var++);
|
sprintf(temp, "%d, (", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newvar = new_variable(cat_str(4, make_str("("), mm_strdup(ecpg_type_name(ptr->variable->type->type)), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, ptr->variable->type->u.element->size, ptr->variable->type->u.element->counter), ptr->variable->type->size), 0);
|
newvar = new_variable(cat_str(4, mm_strdup("("), mm_strdup(ecpg_type_name(ptr->variable->type->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->variable->type->u.element->type, ptr->variable->type->u.element->size, ptr->variable->type->u.element->counter), ptr->variable->type->size), 0);
|
||||||
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newvar = new_variable(cat_str(4, make_str("*("), mm_strdup(ecpg_type_name(ptr->variable->type->type)), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->variable->type->type, ptr->variable->type->size, ptr->variable->type->counter), 0);
|
newvar = new_variable(cat_str(4, mm_strdup("*("), mm_strdup(ecpg_type_name(ptr->variable->type->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->variable->type->type, ptr->variable->type->size, ptr->variable->type->counter), 0);
|
||||||
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create call to "ECPGset_var(<counter>, <pointer>. <line number>)" */
|
/* create call to "ECPGset_var(<counter>, <pointer>. <line number>)" */
|
||||||
if (!skip_set_var)
|
if (!skip_set_var)
|
||||||
result = cat_str(5, result, make_str("ECPGset_var("), mm_strdup(temp), mm_strdup(original_var), make_str("), __LINE__);\n"));
|
result = cat_str(5, result, mm_strdup("ECPGset_var("), mm_strdup(temp), mm_strdup(original_var), mm_strdup("), __LINE__);\n"));
|
||||||
|
|
||||||
/* now the indicator if there is one and it's not a global variable */
|
/* now the indicator if there is one and it's not a global variable */
|
||||||
if ((ptr->indicator->type->type == ECPGt_NO_INDICATOR) || (ptr->indicator->brace_level == 0))
|
if ((ptr->indicator->type->type == ECPGt_NO_INDICATOR) || (ptr->indicator->brace_level == 0))
|
||||||
@ -332,7 +323,7 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
|
|||||||
if (ptr->indicator->type->type == ECPGt_struct || ptr->indicator->type->type == ECPGt_union)
|
if (ptr->indicator->type->type == ECPGt_struct || ptr->indicator->type->type == ECPGt_union)
|
||||||
{
|
{
|
||||||
sprintf(temp, "%d)))", ecpg_internal_var);
|
sprintf(temp, "%d)))", ecpg_internal_var);
|
||||||
newind = new_variable(cat_str(4, make_str("(*("), mm_strdup(ptr->indicator->type->type_name), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->indicator->type->u.members, ptr->indicator->type->type, ptr->indicator->type->type_name, ptr->indicator->type->struct_sizeof), 0);
|
newind = new_variable(cat_str(4, mm_strdup("(*("), mm_strdup(ptr->indicator->type->type_name), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->indicator->type->u.members, ptr->indicator->type->type, ptr->indicator->type->type_name, ptr->indicator->type->struct_sizeof), 0);
|
||||||
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
else if (ptr->indicator->type->type == ECPGt_array)
|
else if (ptr->indicator->type->type == ECPGt_array)
|
||||||
@ -340,28 +331,28 @@ adjust_outofscope_cursor_vars(struct cursor *cur)
|
|||||||
if (ptr->indicator->type->u.element->type == ECPGt_struct || ptr->indicator->type->u.element->type == ECPGt_union)
|
if (ptr->indicator->type->u.element->type == ECPGt_struct || ptr->indicator->type->u.element->type == ECPGt_union)
|
||||||
{
|
{
|
||||||
sprintf(temp, "%d)))", ecpg_internal_var);
|
sprintf(temp, "%d)))", ecpg_internal_var);
|
||||||
newind = new_variable(cat_str(4, make_str("(*("), mm_strdup(ptr->indicator->type->u.element->type_name), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->indicator->type->u.element->u.members, ptr->indicator->type->u.element->type, ptr->indicator->type->u.element->type_name, ptr->indicator->type->u.element->struct_sizeof), 0);
|
newind = new_variable(cat_str(4, mm_strdup("(*("), mm_strdup(ptr->indicator->type->u.element->type_name), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_struct_type(ptr->indicator->type->u.element->u.members, ptr->indicator->type->u.element->type, ptr->indicator->type->u.element->type_name, ptr->indicator->type->u.element->struct_sizeof), 0);
|
||||||
sprintf(temp, "%d, (", ecpg_internal_var++);
|
sprintf(temp, "%d, (", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newind = new_variable(cat_str(4, make_str("("), mm_strdup(ecpg_type_name(ptr->indicator->type->u.element->type)), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->indicator->type->u.element->type, ptr->indicator->type->u.element->size, ptr->indicator->type->u.element->counter), ptr->indicator->type->size), 0);
|
newind = new_variable(cat_str(4, mm_strdup("("), mm_strdup(ecpg_type_name(ptr->indicator->type->u.element->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_array_type(ECPGmake_simple_type(ptr->indicator->type->u.element->type, ptr->indicator->type->u.element->size, ptr->indicator->type->u.element->counter), ptr->indicator->type->size), 0);
|
||||||
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (atoi(ptr->indicator->type->size) > 1)
|
else if (atoi(ptr->indicator->type->size) > 1)
|
||||||
{
|
{
|
||||||
newind = new_variable(cat_str(4, make_str("("), mm_strdup(ecpg_type_name(ptr->indicator->type->type)), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->indicator->type->type, ptr->indicator->type->size, ptr->variable->type->counter), 0);
|
newind = new_variable(cat_str(4, mm_strdup("("), mm_strdup(ecpg_type_name(ptr->indicator->type->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->indicator->type->type, ptr->indicator->type->size, ptr->variable->type->counter), 0);
|
||||||
sprintf(temp, "%d, (", ecpg_internal_var++);
|
sprintf(temp, "%d, (", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newind = new_variable(cat_str(4, make_str("*("), mm_strdup(ecpg_type_name(ptr->indicator->type->type)), make_str(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->indicator->type->type, ptr->indicator->type->size, ptr->variable->type->counter), 0);
|
newind = new_variable(cat_str(4, mm_strdup("*("), mm_strdup(ecpg_type_name(ptr->indicator->type->type)), mm_strdup(" *)(ECPGget_var("), mm_strdup(temp)), ECPGmake_simple_type(ptr->indicator->type->type, ptr->indicator->type->size, ptr->variable->type->counter), 0);
|
||||||
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
sprintf(temp, "%d, &(", ecpg_internal_var++);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* create call to "ECPGset_var(<counter>, <pointer>. <line number>)" */
|
/* create call to "ECPGset_var(<counter>, <pointer>. <line number>)" */
|
||||||
result = cat_str(5, result, make_str("ECPGset_var("), mm_strdup(temp), mm_strdup(original_var), make_str("), __LINE__);\n"));
|
result = cat_str(5, result, mm_strdup("ECPGset_var("), mm_strdup(temp), mm_strdup(original_var), mm_strdup("), __LINE__);\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
add_variable_to_tail(&newlist, newvar, newind);
|
add_variable_to_tail(&newlist, newvar, newind);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -14,7 +14,7 @@
|
|||||||
/* defines */
|
/* defines */
|
||||||
|
|
||||||
#define STRUCT_DEPTH 128
|
#define STRUCT_DEPTH 128
|
||||||
#define EMPTY make_str("")
|
#define EMPTY mm_strdup("")
|
||||||
|
|
||||||
/* variables */
|
/* variables */
|
||||||
|
|
||||||
@ -62,7 +62,6 @@ extern struct ECPGstruct_member *struct_member_list[STRUCT_DEPTH];
|
|||||||
|
|
||||||
extern const char *get_dtype(enum ECPGdtype);
|
extern const char *get_dtype(enum ECPGdtype);
|
||||||
extern void lex_init(void);
|
extern void lex_init(void);
|
||||||
extern char *make_str(const char *);
|
|
||||||
extern void output_line_number(void);
|
extern void output_line_number(void);
|
||||||
extern void output_statement(char *, int, enum ECPG_statement_type);
|
extern void output_statement(char *, int, enum ECPG_statement_type);
|
||||||
extern void output_prepare_statement(char *, char *);
|
extern void output_prepare_statement(char *, char *);
|
||||||
|
@ -397,7 +397,7 @@ sub dump_fields {
|
|||||||
&add_to_buffer('rules', " \$\$=EMPTY; }");
|
&add_to_buffer('rules', " \$\$=EMPTY; }");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# Go through each field and try to 'aggregate' the tokens into a single 'make_str' where possible
|
# Go through each field and try to 'aggregate' the tokens into a single 'mm_strdup' where possible
|
||||||
$cnt = 0;
|
$cnt = 0;
|
||||||
for ($z = 0; $z < $len; $z++) {
|
for ($z = 0; $z < $len; $z++) {
|
||||||
if (substr($flds{$z}, 1, 1) eq "\$") {
|
if (substr($flds{$z}, 1, 1) eq "\$") {
|
||||||
@ -410,7 +410,7 @@ sub dump_fields {
|
|||||||
while (1) {
|
while (1) {
|
||||||
if ($z >= $len - 1 || substr($flds{$z + 1}, 1, 1) eq "\$") {
|
if ($z >= $len - 1 || substr($flds{$z + 1}, 1, 1) eq "\$") {
|
||||||
# We're at the end...
|
# We're at the end...
|
||||||
$flds_new{$cnt++} = "make_str(\"" . $str . "\")";
|
$flds_new{$cnt++} = "mm_strdup(\"" . $str . "\")";
|
||||||
last;
|
last;
|
||||||
}
|
}
|
||||||
$z++;
|
$z++;
|
||||||
|
@ -120,7 +120,7 @@ ECPGmake_array_type(struct ECPGtype * type, char *size)
|
|||||||
struct ECPGtype *
|
struct ECPGtype *
|
||||||
ECPGmake_struct_type(struct ECPGstruct_member * rm, enum ECPGttype type, char *type_name, char *struct_sizeof)
|
ECPGmake_struct_type(struct ECPGstruct_member * rm, enum ECPGttype type, char *type_name, char *struct_sizeof)
|
||||||
{
|
{
|
||||||
struct ECPGtype *ne = ECPGmake_simple_type(type, make_str("1"), 0);
|
struct ECPGtype *ne = ECPGmake_simple_type(type, mm_strdup("1"), 0);
|
||||||
|
|
||||||
ne->type_name = mm_strdup(type_name);
|
ne->type_name = mm_strdup(type_name);
|
||||||
ne->u.members = ECPGstruct_member_dup(rm);
|
ne->u.members = ECPGstruct_member_dup(rm);
|
||||||
@ -308,7 +308,7 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type, const int bra
|
|||||||
if (ind_type != NULL)
|
if (ind_type != NULL)
|
||||||
{
|
{
|
||||||
if (ind_type->type == ECPGt_NO_INDICATOR)
|
if (ind_type->type == ECPGt_NO_INDICATOR)
|
||||||
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, make_str("-1"), NULL, ind_prefix, 0);
|
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, mm_strdup("-1"), NULL, ind_prefix, 0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ECPGdump_a_simple(o, ind_name, ind_type->u.element->type,
|
ECPGdump_a_simple(o, ind_name, ind_type->u.element->type,
|
||||||
@ -321,7 +321,7 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type, const int bra
|
|||||||
if (indicator_set && ind_type->type != ECPGt_struct)
|
if (indicator_set && ind_type->type != ECPGt_struct)
|
||||||
mmerror(INDICATOR_NOT_STRUCT, ET_FATAL, "indicator for struct has to be a struct");
|
mmerror(INDICATOR_NOT_STRUCT, ET_FATAL, "indicator for struct has to be a struct");
|
||||||
|
|
||||||
ECPGdump_a_struct(o, name, ind_name, make_str("1"), type, ind_type, prefix, ind_prefix);
|
ECPGdump_a_struct(o, name, ind_name, mm_strdup("1"), type, ind_type, prefix, ind_prefix);
|
||||||
break;
|
break;
|
||||||
case ECPGt_union: /* cannot dump a complete union */
|
case ECPGt_union: /* cannot dump a complete union */
|
||||||
base_yyerror("type of union has to be specified");
|
base_yyerror("type of union has to be specified");
|
||||||
@ -330,25 +330,25 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type, const int bra
|
|||||||
if (indicator_set && (ind_type->type == ECPGt_struct || ind_type->type == ECPGt_array))
|
if (indicator_set && (ind_type->type == ECPGt_struct || ind_type->type == ECPGt_array))
|
||||||
mmerror(INDICATOR_NOT_SIMPLE, ET_FATAL, "indicator for simple data type has to be simple");
|
mmerror(INDICATOR_NOT_SIMPLE, ET_FATAL, "indicator for simple data type has to be simple");
|
||||||
|
|
||||||
ECPGdump_a_simple(o, name, type->type, make_str("1"), (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : make_str("1"), struct_sizeof, prefix, 0);
|
ECPGdump_a_simple(o, name, type->type, mm_strdup("1"), (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : mm_strdup("1"), struct_sizeof, prefix, 0);
|
||||||
if (ind_type != NULL)
|
if (ind_type != NULL)
|
||||||
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : make_str("-1"), ind_struct_sizeof, ind_prefix, 0);
|
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : mm_strdup("-1"), ind_struct_sizeof, ind_prefix, 0);
|
||||||
break;
|
break;
|
||||||
case ECPGt_descriptor:
|
case ECPGt_descriptor:
|
||||||
if (indicator_set && (ind_type->type == ECPGt_struct || ind_type->type == ECPGt_array))
|
if (indicator_set && (ind_type->type == ECPGt_struct || ind_type->type == ECPGt_array))
|
||||||
mmerror(INDICATOR_NOT_SIMPLE, ET_FATAL, "indicator for simple data type has to be simple");
|
mmerror(INDICATOR_NOT_SIMPLE, ET_FATAL, "indicator for simple data type has to be simple");
|
||||||
|
|
||||||
ECPGdump_a_simple(o, name, type->type, NULL, make_str("-1"), NULL, prefix, 0);
|
ECPGdump_a_simple(o, name, type->type, NULL, mm_strdup("-1"), NULL, prefix, 0);
|
||||||
if (ind_type != NULL)
|
if (ind_type != NULL)
|
||||||
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, make_str("-1"), NULL, ind_prefix, 0);
|
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, mm_strdup("-1"), NULL, ind_prefix, 0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (indicator_set && (ind_type->type == ECPGt_struct || ind_type->type == ECPGt_array))
|
if (indicator_set && (ind_type->type == ECPGt_struct || ind_type->type == ECPGt_array))
|
||||||
mmerror(INDICATOR_NOT_SIMPLE, ET_FATAL, "indicator for simple data type has to be simple");
|
mmerror(INDICATOR_NOT_SIMPLE, ET_FATAL, "indicator for simple data type has to be simple");
|
||||||
|
|
||||||
ECPGdump_a_simple(o, name, type->type, type->size, (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : make_str("-1"), struct_sizeof, prefix, type->counter);
|
ECPGdump_a_simple(o, name, type->type, type->size, (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : mm_strdup("-1"), struct_sizeof, prefix, type->counter);
|
||||||
if (ind_type != NULL)
|
if (ind_type != NULL)
|
||||||
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : make_str("-1"), ind_struct_sizeof, ind_prefix, 0);
|
ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, (arr_str_siz && strcmp(arr_str_siz, "0") != 0) ? arr_str_siz : mm_strdup("-1"), ind_struct_sizeof, ind_prefix, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -446,7 +446,7 @@ dump_variables(struct arguments * list, int mode)
|
|||||||
/* Then the current element and its indicator */
|
/* Then the current element and its indicator */
|
||||||
ECPGdump_a_type(yyout, list->variable->name, list->variable->type, list->variable->brace_level,
|
ECPGdump_a_type(yyout, list->variable->name, list->variable->type, list->variable->brace_level,
|
||||||
list->indicator->name, list->indicator->type, list->indicator->brace_level,
|
list->indicator->name, list->indicator->type, list->indicator->brace_level,
|
||||||
NULL, NULL, make_str("0"), NULL, NULL);
|
NULL, NULL, mm_strdup("0"), NULL, NULL);
|
||||||
|
|
||||||
/* Then release the list element. */
|
/* Then release the list element. */
|
||||||
if (mode != 0)
|
if (mode != 0)
|
||||||
@ -542,7 +542,7 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
|
|||||||
if (pointer_len)
|
if (pointer_len)
|
||||||
{
|
{
|
||||||
*length = *dimension;
|
*length = *dimension;
|
||||||
*dimension = make_str("0");
|
*dimension = mm_strdup("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atoi(*length) >= 0)
|
if (atoi(*length) >= 0)
|
||||||
@ -552,13 +552,13 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
|
|||||||
case ECPGt_varchar:
|
case ECPGt_varchar:
|
||||||
/* pointer has to get dimension 0 */
|
/* pointer has to get dimension 0 */
|
||||||
if (pointer_len)
|
if (pointer_len)
|
||||||
*dimension = make_str("0");
|
*dimension = mm_strdup("0");
|
||||||
|
|
||||||
/* one index is the string length */
|
/* one index is the string length */
|
||||||
if (atoi(*length) < 0)
|
if (atoi(*length) < 0)
|
||||||
{
|
{
|
||||||
*length = *dimension;
|
*length = *dimension;
|
||||||
*dimension = make_str("-1");
|
*dimension = mm_strdup("-1");
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -568,13 +568,13 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
|
|||||||
/* char ** */
|
/* char ** */
|
||||||
if (pointer_len == 2)
|
if (pointer_len == 2)
|
||||||
{
|
{
|
||||||
*length = *dimension = make_str("0");
|
*length = *dimension = mm_strdup("0");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pointer has to get length 0 */
|
/* pointer has to get length 0 */
|
||||||
if (pointer_len == 1)
|
if (pointer_len == 1)
|
||||||
*length = make_str("0");
|
*length = mm_strdup("0");
|
||||||
|
|
||||||
/* one index is the string length */
|
/* one index is the string length */
|
||||||
if (atoi(*length) < 0)
|
if (atoi(*length) < 0)
|
||||||
@ -589,13 +589,13 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
|
|||||||
* do not change this for typedefs since it will be
|
* do not change this for typedefs since it will be
|
||||||
* changed later on when the variable is defined
|
* changed later on when the variable is defined
|
||||||
*/
|
*/
|
||||||
*length = make_str("1");
|
*length = mm_strdup("1");
|
||||||
else if (strcmp(*dimension, "0") == 0)
|
else if (strcmp(*dimension, "0") == 0)
|
||||||
*length = make_str("-1");
|
*length = mm_strdup("-1");
|
||||||
else
|
else
|
||||||
*length = *dimension;
|
*length = *dimension;
|
||||||
|
|
||||||
*dimension = make_str("-1");
|
*dimension = mm_strdup("-1");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -603,7 +603,7 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
|
|||||||
if (pointer_len)
|
if (pointer_len)
|
||||||
{
|
{
|
||||||
*length = *dimension;
|
*length = *dimension;
|
||||||
*dimension = make_str("0");
|
*dimension = mm_strdup("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atoi(*length) >= 0)
|
if (atoi(*length) >= 0)
|
||||||
|
Reference in New Issue
Block a user