void trim_key_whitespace_after(config_value* value)
{
- printf("key %s0\n", value->key);
int after = 0;
while(value->key[after] != ' ' && after < value->key_length) {
after++;
trim_value_whitespace_after(value);
}
-void get_line(const char* config_stream, config_line* line)
+void get_line(const char* config_stream, config_line* line, int* pos)
{
- while(config_stream[line->length] != '\n') {
+ free(line->line);
+ line->line = NULL;
+
+ line->length = 0;
+ while(config_stream[*pos + line->length] != '\n') {
line->length++;
}
line->length++;
line->line = malloc(sizeof(char) * line->length);
- memcpy(line->line, config_stream, line->length - 1);
+ memcpy(line->line, config_stream + *pos, line->length - 1);
line->line[line->length - 1] = '\0';
+ *pos += line->length;
}
void get_key(config_line* line, config_value* value)
value.value_length = 0;
value.value = NULL;
- get_line(config_stream, &line);
+ int stream_pos = 0;
+
+ get_line(config_stream, &line, &stream_pos);
get_key(&line, &value);
get_value(&line, &value);
trim_config_value(&value);
memcpy(config->scanner_url, value.value, value.value_length);
}
+ free(line.line);
+ line.line = NULL;
+ line.length = 0;
+ free(value.key);
+ value.key = NULL;
+ value.key_length = 0;
+ free(value.value);
+ value.value = NULL;
+ value.value_length = 0;
+
+ get_line(config_stream, &line, &stream_pos);
+ get_key(&line, &value);
+ get_value(&line, &value);
+ trim_config_value(&value);
+
+ if (strcmp(value.key, "username") == 0) {
+ config->username = malloc(sizeof(char) * value.value_length);
+ memcpy(config->username, value.value, value.value_length);
+ }
+
free(line.line);
line.line = NULL;
line.length = 0;