-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.c
84 lines (70 loc) · 1.95 KB
/
config.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdlib.h>
#include <stdint.h>
#include <stdio.h>
#include "constants.h"
#include "config.h"
Config_t load_config(void)
{
Config_t config;
FILE *configuration_file;
char *line = NULL;
size_t len = 0;
ssize_t read;
char first_color[10], second_color[10];
configuration_file = fopen("config.txt", "r");
if (configuration_file == NULL)
exit(EXIT_FAILURE);
getline(&line, &len, configuration_file);
sscanf(line, "max_score %d", &(config.high_score));
getline(&line, &len, configuration_file);
sscanf(line, "left_eye_color %s", first_color);
getline(&line, &len, configuration_file);
sscanf(line, "right_eye_color %s", second_color);
fclose(configuration_file);
if (line)
free(line);
sscanf(
first_color,
"%d;%d;%d",
&(config.left_eye_color.r),
&(config.left_eye_color.g),
&(config.left_eye_color.b)
);
sscanf(
second_color,
"%d;%d;%d",
&(config.right_eye_color.r),
&(config.right_eye_color.g),
&(config.right_eye_color.b)
);
return config;
}
void save_config(Config_t config)
{
FILE *configuration_file;
char *line = NULL;
size_t len = 0;
ssize_t read;
char first_color[10], second_color[10];
configuration_file = fopen("config.txt", "w");
if (configuration_file == NULL)
exit(EXIT_FAILURE);
sprintf(
first_color,
"%d;%d;%d",
config.left_eye_color.r,
config.left_eye_color.g,
config.left_eye_color.b
);
sprintf(
second_color,
"%d;%d;%d",
config.right_eye_color.r,
config.right_eye_color.g,
config.right_eye_color.b
);
fprintf(configuration_file, "max_score %d\n", config.high_score);
fprintf(configuration_file, "left_eye_color %s\n", first_color);
fprintf(configuration_file, "right_eye_color %s\n", second_color);
fclose(configuration_file);
}