Compare commits

..

No commits in common. "7735cb2e7120e91a195fc6759e969ba144c56dc0" and "cfa7a065b291c0630a7192de0fd964d64d5f664f" have entirely different histories.

3 changed files with 7 additions and 56 deletions

View file

@ -2,11 +2,6 @@
## Upcoming Changes
## Version 1.6
Fix usage of `IF` with a `FOREACH` variable when the `IF` is nested in the
`FOREACH` and is referring to a variable expanded by `FOREACH`.
## Version 1.5
Add flag `--generate-static-enable-overwrite`. This flag enables overwriting of

View file

@ -25,18 +25,6 @@ HTML='''
</style>
</head>
<body>
<h2><a href="/inner">inner</a></h2><br>
<h2>Test EachIf Expr</h2>
{{{!FOREACH EachIfTest_Array}}}
{{{!IF EachIfTest_Array==true}}}
EachIfTest_Array entry is <b>true</b>. <br>
{{{!ELSE}}}
EachIfTest_Array entry is <b>false</b>. <br>
{{{!ENDIF}}}
{{{!ENDFOREACH}}}
<br>
<h2>Test IF/FOREACH Expr</h2>
Outer IF<br>
@ -162,11 +150,6 @@ Each_FILE='''example_config/each_file_zero.html'''
Each_FILE='''example_config/each_file_one.html'''
Each_FILE='''example_config/each_file_two.html'''
EachIfTest_Array=false
EachIfTest_Array=true
EachIfTest_Array=false
EachIfTest_Array=true
PATH=/inner
HTML_FILE='''example_config/inner.html'''
VAR_FILE='''example_config/var.html'''

View file

@ -180,8 +180,6 @@ int c_simple_http_internal_parse_if_expression(
const char *var,
const size_t var_offset,
const size_t var_size,
const uint64_t *for_state_idx,
SDArchiverHashMap *array_vars,
char **left_side_out,
char **right_side_out,
uint_fast8_t *is_equality_out,
@ -271,31 +269,11 @@ int c_simple_http_internal_parse_if_expression(
simple_archiver_list_free(&var_parts);
var_parts = simple_archiver_list_init();
// At this point, var_buf contains the left-hand-side string that hasn't been
// expanded yet.
// Check if ForEach variable.
char *value = NULL;
C_SIMPLE_HTTP_ConfigValue *config_value = NULL;
if (for_state_idx != NULL) {
if (var_index != -1) {
fprintf(stderr,
"ERROR Invalid indexing on expanded FOREACH variable! %s\n",
var);
return 1;
}
value = c_simple_http_internal_get_for_var(var_buf,
*for_state_idx,
array_vars);
}
if (!value) {
// No ForEach variable, get as regular variable.
config_value =
simple_archiver_hash_map_get(wrapped_hash_map->hash_map,
var_buf,
strlen(var_buf) + 1);
}
if (!value && (!config_value || !config_value->value)) {
C_SIMPLE_HTTP_ConfigValue *config_value =
simple_archiver_hash_map_get(wrapped_hash_map->hash_map,
var_buf,
strlen(var_buf) + 1);
if (!config_value || !config_value->value) {
fprintf(stderr, "ERROR Invalid VAR after \"IF/ELSEIF\"! %s\n", var);
return 1;
} else if (var_index >= 0) {
@ -313,8 +291,7 @@ int c_simple_http_internal_parse_if_expression(
uint64_t left_side_size = 0;
if (c_simple_http_internal_ends_with_FILE(var_buf) == 0) {
*left_side_out =
c_simple_http_FILE_to_c_str(value ? value : config_value->value,
&left_side_size);
c_simple_http_FILE_to_c_str(config_value->value, &left_side_size);
if (!*left_side_out || left_side_size == 0) {
fprintf(stderr, "ERROR _FILE variable could not be read! %s\n", var);
if (*left_side_out) {
@ -327,7 +304,7 @@ int c_simple_http_internal_parse_if_expression(
left_side_size = strlen(*left_side_out);
c_simple_http_internal_set_out_insert(files_set_out, config_value->value);
} else {
*left_side_out = strdup(value ? value : config_value->value);
*left_side_out = strdup(config_value->value);
c_simple_http_trim_end_whitespace(*left_side_out);
left_side_size = strlen(*left_side_out);
}
@ -622,8 +599,6 @@ int c_simple_http_internal_handle_inside_delimeters(
var,
1 + 3,
var_size,
(*state) & 0x4 ? &for_state_idx : NULL,
array_vars,
&left_side,
&right_side,
&is_equality,
@ -698,8 +673,6 @@ int c_simple_http_internal_handle_inside_delimeters(
var,
1 + 7,
var_size,
(*state) & 0x4 ? &for_state_idx : NULL,
array_vars,
&left_side,
&right_side,
&is_equality,