From 26605b141cd8711133445eebc47fe97336b59fca Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 2 Mar 2024 21:28:16 +0100 Subject: [PATCH] read config file into memory --- src/kds_s2000w_config.c | 19 +++++++++++++++++-- src/kds_s2000w_config.h | 3 ++- tests/kds_s2000w_read_config_tests.c | 8 ++++---- tools/read_config.c | 9 ++++++++- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/kds_s2000w_config.c b/src/kds_s2000w_config.c index 373f916..0022629 100644 --- a/src/kds_s2000w_config.c +++ b/src/kds_s2000w_config.c @@ -148,7 +148,23 @@ void get_value(config_line* line, config_value* value) value->value[value->value_length] = '\0'; } -void loadConfig(program_config* config, const char* config_stream) +void read_config_file(const char* filename, char* config_stream) +{ + FILE* config_file = fopen(filename, "r"); + + int char_count = 0; + char* buf = malloc(sizeof(char)); + while(fread(buf, 1, 1, config_file) != 0) { + char_count++; + } + rewind(config_file); + + config_stream = malloc(sizeof(char) * char_count); + fread(config_stream, sizeof(char), char_count, config_file); + fclose(config_file); +} + +void load_config(program_config* config, const char* config_stream) { config->scanner_url = NULL; if (strlen(config_stream) == 0) { @@ -166,7 +182,6 @@ void loadConfig(program_config* config, const char* config_stream) int stream_pos = 0; - while(strlen(config_stream) > stream_pos) { free(line.line); line.line = NULL; diff --git a/src/kds_s2000w_config.h b/src/kds_s2000w_config.h index 5187979..25166ee 100644 --- a/src/kds_s2000w_config.h +++ b/src/kds_s2000w_config.h @@ -6,5 +6,6 @@ typedef struct { char* username; } program_config; -void loadConfig(program_config* config, const char* config_stream); +void read_config_file(const char* filename, char* config_stream); +void load_config(program_config* config, const char* config_stream); #endif \ No newline at end of file diff --git a/tests/kds_s2000w_read_config_tests.c b/tests/kds_s2000w_read_config_tests.c index 304377f..16928cd 100644 --- a/tests/kds_s2000w_read_config_tests.c +++ b/tests/kds_s2000w_read_config_tests.c @@ -6,7 +6,7 @@ START_TEST(kds_s2000w_config_read_parameter) const char* input_stream = " scanner_url = http://scanner.example.com \n"; program_config* config = malloc(sizeof(program_config)); - loadConfig(config, input_stream); + load_config(config, input_stream); ck_assert_str_eq(config->scanner_url, "http://scanner.example.com"); @@ -22,7 +22,7 @@ START_TEST(kds_s2000w_config_read_parameters_without_trim) const char* input_stream = "scanner_url=http://scanner.example.com\n"; program_config* config = malloc(sizeof(program_config)); - loadConfig(config, input_stream); + load_config(config, input_stream); ck_assert_str_eq(config->scanner_url, "http://scanner.example.com"); @@ -38,7 +38,7 @@ START_TEST(kds_s2000w_config_multiple_parameters) const char* input_stream = "scanner_url=http://scanner.example.com\nusername=Mustermann\n"; program_config* config = malloc(sizeof(program_config)); - loadConfig(config, input_stream); + load_config(config, input_stream); ck_assert_str_eq(config->scanner_url, "http://scanner.example.com"); ck_assert_str_eq(config->username, "Mustermann"); @@ -57,7 +57,7 @@ START_TEST(kds_s2000w_config_read_empty_config) const char* input_stream = ""; program_config* config = malloc(sizeof(program_config)); - loadConfig(config, input_stream); + load_config(config, input_stream); ck_assert_ptr_null(config->scanner_url); diff --git a/tools/read_config.c b/tools/read_config.c index 7946eb0..a9e103a 100644 --- a/tools/read_config.c +++ b/tools/read_config.c @@ -2,8 +2,15 @@ #include #include "../src/kds_s2000w_config.h" -int main() +int main(int argc, char** argv) { program_config* config = malloc(sizeof(program_config)); + + char* config_stream = NULL; + read_config_file(argv[1], config_stream); + + free(config_stream); + config_stream = NULL; + return 0; } \ No newline at end of file -- 2.39.5