void trim_key_whitespace_before(config_value* value)
{
int before = 0;
- while(value->key[before] == ' ') {
+ while(value->key[before] == ' ' && before < value->value_length) {
before++;
}
+ if (value->value_length <= before)
+ return;
+
int new_length = value->key_length - before;
char* new_value = malloc(sizeof(char) * new_length);
memcpy(new_value, value->key + before, new_length);
void trim_key_whitespace_after(config_value* value)
{
int after = 0;
- while(value->key[after] != ' ') {
+ while(value->key[after] != ' ' && after < value->value_length) {
after++;
}
+ if (value->value_length <= after)
+ return;
+
int new_length = after + 1;
char* new_value = malloc(sizeof(char) * new_length);
memcpy(new_value, value->key, new_length);
void trim_value_whitespace_before(config_value* value)
{
int before = 0;
- while(value->value[before] == ' ') {
+ while(value->value[before] == ' ' && before < value->value_length) {
before++;
}
+ if (value->value_length <= before)
+ return;
+
int new_length = value->value_length - before;
char* new_value = malloc(sizeof(char) * new_length);
memcpy(new_value, value->value + before, new_length);
void trim_value_whitespace_after(config_value* value)
{
int after = 0;
- while(value->value[after] != ' ') {
+ while(value->value[after] != ' ' && after < value->value_length) {
after++;
}
+ if (value->value_length <= after)
+ return;
+
int new_length = after + 1;
char* new_value = malloc(sizeof(char) * new_length);
memcpy(new_value, value->value, new_length);
}
END_TEST
+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);
+
+ ck_assert_str_eq(config->scanner_url, "http://scanner.example.com");
+
+ free(config->scanner_url);
+ config->scanner_url = NULL;
+ free(config);
+ config = NULL;
+}
+END_TEST
+
+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);
+
+ ck_assert_str_eq(config->scanner_url, "http://scanner.example.com");
+ ck_assert_str_eq(config->username, "Mustermann");
+
+ free(config->scanner_url);
+ config->scanner_url = NULL;
+ free(config->username);
+ config->username = NULL;
+ free(config);
+ config = NULL;
+}
+END_TEST
+
START_TEST(kds_s2000w_config_read_empty_config)
{
const char* input_stream = "";
TCase* net_config_read = tcase_create("read config");
tcase_add_test(net_config_read, kds_s2000w_config_read_empty_config);
tcase_add_test(net_config_read, kds_s2000w_config_read_parameter);
+ tcase_add_test(net_config_read, kds_s2000w_config_read_parameters_without_trim);
+ tcase_add_test(net_config_read, kds_s2000w_config_multiple_parameters);
suite_add_tcase(read_config, net_config_read);
return read_config;