Compare commits
No commits in common. "676b98751d81ce0e7e77b64ddc2b90164a12bcbd" and "8e799ef34a26da25322a2c5ba8cfc49185bdf8d3" have entirely different histories.
676b98751d
...
8e799ef34a
2 changed files with 10 additions and 166 deletions
|
@ -76,26 +76,6 @@ int c_simple_http_internal_fill_buf_fn(void *data, void *ud) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns 0 if "c_string" ends with "_FILE".
|
|
||||||
int c_simple_http_internal_ends_with_FILE(const char *c_string) {
|
|
||||||
if (!c_string) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *comparison_string = "_FILE";
|
|
||||||
|
|
||||||
const size_t c_string_size = strlen(c_string);
|
|
||||||
|
|
||||||
if (strcmp(
|
|
||||||
comparison_string,
|
|
||||||
c_string + (c_string_size - strlen(comparison_string)))
|
|
||||||
== 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *c_simple_http_path_to_generated(
|
char *c_simple_http_path_to_generated(
|
||||||
const char *path,
|
const char *path,
|
||||||
const C_SIMPLE_HTTP_HTTPTemplates *templates) {
|
const C_SIMPLE_HTTP_HTTPTemplates *templates) {
|
||||||
|
@ -212,49 +192,9 @@ char *c_simple_http_path_to_generated(
|
||||||
wrapped_hash_map->hash_map,
|
wrapped_hash_map->hash_map,
|
||||||
var,
|
var,
|
||||||
var_size + 1);
|
var_size + 1);
|
||||||
|
// TODO Impl. loading from file instead of directly from value.
|
||||||
|
// Perhaps do this if "var" ends with "_FILE".
|
||||||
if (value_c_str) {
|
if (value_c_str) {
|
||||||
if (c_simple_http_internal_ends_with_FILE(var) == 0) {
|
|
||||||
// Load from file specified by "value_c_str".
|
|
||||||
__attribute__((cleanup(simple_archiver_helper_cleanup_FILE)))
|
|
||||||
FILE *f = fopen(value_c_str, "r");
|
|
||||||
if (!f) {
|
|
||||||
fprintf(stderr, "ERROR Failed to open file \"%s\"!\n",
|
|
||||||
value_c_str);
|
|
||||||
return NULL;
|
|
||||||
} else if (fseek(f, 0, SEEK_END) != 0) {
|
|
||||||
fprintf(stderr, "ERROR Failed to seek to end of file \"%s\"!\n",
|
|
||||||
value_c_str);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
long file_size = ftell(f);
|
|
||||||
if (file_size <= 0) {
|
|
||||||
fprintf(stderr, "ERROR Size of file \"%s\" is invalid!\n",
|
|
||||||
value_c_str);
|
|
||||||
return NULL;
|
|
||||||
} else if (fseek(f, 0, SEEK_SET) != 0) {
|
|
||||||
fprintf(stderr, "ERROR Failed to seek to start of file "
|
|
||||||
"\"%s\"!\n",
|
|
||||||
value_c_str);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
template_node =
|
|
||||||
malloc(sizeof(C_SIMPLE_HTTP_INTERNAL_Template_Node));
|
|
||||||
template_node->html_size = (size_t)file_size;
|
|
||||||
template_node->html = malloc(template_node->html_size);
|
|
||||||
template_node->orig_end_idx = idx + 1;
|
|
||||||
template_node->forced_next = NULL;
|
|
||||||
|
|
||||||
if (fread(template_node->html,
|
|
||||||
template_node->html_size,
|
|
||||||
1,
|
|
||||||
f)
|
|
||||||
!= 1) {
|
|
||||||
fprintf(stderr, "ERROR Failed to read from file \"%s\"!\n",
|
|
||||||
value_c_str);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Variable data is "value_c_str".
|
|
||||||
template_node =
|
template_node =
|
||||||
malloc(sizeof(C_SIMPLE_HTTP_INTERNAL_Template_Node));
|
malloc(sizeof(C_SIMPLE_HTTP_INTERNAL_Template_Node));
|
||||||
size_t size = strlen(value_c_str);
|
size_t size = strlen(value_c_str);
|
||||||
|
@ -263,7 +203,6 @@ char *c_simple_http_path_to_generated(
|
||||||
template_node->html_size = size;
|
template_node->html_size = size;
|
||||||
template_node->orig_end_idx = idx + 1;
|
template_node->orig_end_idx = idx + 1;
|
||||||
template_node->forced_next = NULL;
|
template_node->forced_next = NULL;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
template_node =
|
template_node =
|
||||||
malloc(sizeof(C_SIMPLE_HTTP_INTERNAL_Template_Node));
|
malloc(sizeof(C_SIMPLE_HTTP_INTERNAL_Template_Node));
|
||||||
|
|
95
src/test.c
95
src/test.c
|
@ -79,18 +79,9 @@ static int checks_passed = 0;
|
||||||
} \
|
} \
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
void test_internal_cleanup_delete_temporary_file(const char **filename) {
|
|
||||||
if (filename && *filename) {
|
|
||||||
if (remove(*filename) != 0) {
|
|
||||||
fprintf(stderr, "ERROR Failed to remove file \"%s\"!\n", *filename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
// Test config.
|
// Test config.
|
||||||
{
|
{
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_config_filename = "/tmp/c_simple_http_test.config";
|
const char *test_config_filename = "/tmp/c_simple_http_test.config";
|
||||||
__attribute__((cleanup(simple_archiver_helper_cleanup_FILE)))
|
__attribute__((cleanup(simple_archiver_helper_cleanup_FILE)))
|
||||||
FILE *test_file = fopen(test_config_filename, "w");
|
FILE *test_file = fopen(test_config_filename, "w");
|
||||||
|
@ -220,7 +211,6 @@ int main(void) {
|
||||||
|
|
||||||
// Test http_template.
|
// Test http_template.
|
||||||
{
|
{
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_http_template_filename =
|
const char *test_http_template_filename =
|
||||||
"/tmp/c_simple_http_template_test.config";
|
"/tmp/c_simple_http_template_test.config";
|
||||||
__attribute__((cleanup(simple_archiver_helper_cleanup_FILE)))
|
__attribute__((cleanup(simple_archiver_helper_cleanup_FILE)))
|
||||||
|
@ -254,7 +244,6 @@ int main(void) {
|
||||||
ASSERT_TRUE(strcmp(buf, "<h1>Test</h1>") == 0);
|
ASSERT_TRUE(strcmp(buf, "<h1>Test</h1>") == 0);
|
||||||
simple_archiver_helper_cleanup_c_string(&buf);
|
simple_archiver_helper_cleanup_c_string(&buf);
|
||||||
|
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_http_template_filename2 =
|
const char *test_http_template_filename2 =
|
||||||
"/tmp/c_simple_http_template_test2.config";
|
"/tmp/c_simple_http_template_test2.config";
|
||||||
test_file = fopen(test_http_template_filename2, "w");
|
test_file = fopen(test_http_template_filename2, "w");
|
||||||
|
@ -293,10 +282,8 @@ int main(void) {
|
||||||
== 0);
|
== 0);
|
||||||
simple_archiver_helper_cleanup_c_string(&buf);
|
simple_archiver_helper_cleanup_c_string(&buf);
|
||||||
|
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_http_template_filename3 =
|
const char *test_http_template_filename3 =
|
||||||
"/tmp/c_simple_http_template_test3.config";
|
"/tmp/c_simple_http_template_test3.config";
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_http_template_html_filename =
|
const char *test_http_template_html_filename =
|
||||||
"/tmp/c_simple_http_template_test.html";
|
"/tmp/c_simple_http_template_test.html";
|
||||||
test_file = fopen(test_http_template_filename3, "w");
|
test_file = fopen(test_http_template_filename3, "w");
|
||||||
|
@ -354,88 +341,6 @@ int main(void) {
|
||||||
"<h1> testVar text. </h1><br><h2> testVar2 text. </h2>")
|
"<h1> testVar text. </h1><br><h2> testVar2 text. </h2>")
|
||||||
== 0);
|
== 0);
|
||||||
simple_archiver_helper_cleanup_c_string(&buf);
|
simple_archiver_helper_cleanup_c_string(&buf);
|
||||||
|
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_http_template_filename4 =
|
|
||||||
"/tmp/c_simple_http_template_test4.config";
|
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_http_template_html_filename2 =
|
|
||||||
"/tmp/c_simple_http_template_test2.html";
|
|
||||||
__attribute__((cleanup(test_internal_cleanup_delete_temporary_file)))
|
|
||||||
const char *test_http_template_html_var_filename =
|
|
||||||
"/tmp/c_simple_http_template_test_var.html";
|
|
||||||
test_file = fopen(test_http_template_filename4, "w");
|
|
||||||
ASSERT_TRUE(test_file);
|
|
||||||
|
|
||||||
ASSERT_TRUE(
|
|
||||||
fwrite(
|
|
||||||
"PATH=/\nHTML_FILE=/tmp/c_simple_http_template_test2.html\n",
|
|
||||||
1,
|
|
||||||
56,
|
|
||||||
test_file)
|
|
||||||
== 56);
|
|
||||||
ASSERT_TRUE(
|
|
||||||
fwrite(
|
|
||||||
"testVar_FILE=/tmp/c_simple_http_template_test_var.html\n",
|
|
||||||
1,
|
|
||||||
55,
|
|
||||||
test_file)
|
|
||||||
== 55);
|
|
||||||
simple_archiver_helper_cleanup_FILE(&test_file);
|
|
||||||
|
|
||||||
test_file = fopen(test_http_template_html_filename2, "w");
|
|
||||||
ASSERT_TRUE(test_file);
|
|
||||||
|
|
||||||
ASSERT_TRUE(
|
|
||||||
fwrite(
|
|
||||||
"<h1>{{{testVar_FILE}}}</h1>",
|
|
||||||
1,
|
|
||||||
27,
|
|
||||||
test_file)
|
|
||||||
== 27);
|
|
||||||
simple_archiver_helper_cleanup_FILE(&test_file);
|
|
||||||
|
|
||||||
test_file = fopen(test_http_template_html_var_filename, "w");
|
|
||||||
ASSERT_TRUE(test_file);
|
|
||||||
|
|
||||||
ASSERT_TRUE(
|
|
||||||
fwrite(
|
|
||||||
" some test text in test var file. ",
|
|
||||||
1,
|
|
||||||
34,
|
|
||||||
test_file)
|
|
||||||
== 34);
|
|
||||||
simple_archiver_helper_cleanup_FILE(&test_file);
|
|
||||||
|
|
||||||
simple_archiver_list_free(&required_names);
|
|
||||||
required_names = simple_archiver_list_init();
|
|
||||||
simple_archiver_list_add(
|
|
||||||
required_names,
|
|
||||||
"HTML_FILE",
|
|
||||||
simple_archiver_helper_datastructure_cleanup_nop);
|
|
||||||
simple_archiver_list_add(
|
|
||||||
required_names,
|
|
||||||
"testVar_FILE",
|
|
||||||
simple_archiver_helper_datastructure_cleanup_nop);
|
|
||||||
|
|
||||||
c_simple_http_clean_up_parsed_config(&config);
|
|
||||||
|
|
||||||
config = c_simple_http_parse_config(
|
|
||||||
test_http_template_filename4,
|
|
||||||
"PATH",
|
|
||||||
required_names
|
|
||||||
);
|
|
||||||
ASSERT_TRUE(config.paths != NULL);
|
|
||||||
|
|
||||||
buf = c_simple_http_path_to_generated("/", &config);
|
|
||||||
ASSERT_TRUE(buf != NULL);
|
|
||||||
printf("%s\n", buf);
|
|
||||||
ASSERT_TRUE(
|
|
||||||
strcmp(
|
|
||||||
buf,
|
|
||||||
"<h1> some test text in test var file. </h1>")
|
|
||||||
== 0);
|
|
||||||
simple_archiver_helper_cleanup_c_string(&buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN()
|
RETURN()
|
||||||
|
|
Loading…
Reference in a new issue