aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-02-03 22:06:10 +0100
committerAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-02-03 22:06:10 +0100
commitce714db1251f64c8faa872e0ff85258841b2087d (patch)
tree3c4b573ef0dcaa6d802eb982e3e6a6a6b4910e56
parentfc0ab4bf125b5082debbf7ad04ea5f3b7575c268 (diff)
downloadlog-ce714db1251f64c8faa872e0ff85258841b2087d.tar.gz
log-ce714db1251f64c8faa872e0ff85258841b2087d.zip
Move log.c in src directory
-rw-r--r--src/log.c (renamed from log.c)109
1 files changed, 102 insertions, 7 deletions
diff --git a/log.c b/src/log.c
index ed127b2..7b03550 100644
--- a/log.c
+++ b/src/log.c
@@ -56,29 +56,119 @@ log_parse_level_property(char *str_level)
return -1;
}
+static int
+strends(const char *str1, const char *str2)
+{
+ int str1_s = strlen(str1);
+ int str2_s = strlen(str2);
+ int i, offset;
+
+ if (str1_s < str2_s) {
+ /* str2 is longer than str1, so str1 doesn't contain str2 */
+ return 1;
+ }
+
+ offset = str1_s - str2_s;
+
+ for (i = str1_s - 1; i <= offset; i++) {
+ if (str1[i] != str2[i - offset]) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static int
+strstarts(const char *str1, const char *str2)
+{
+ int str1_s = strlen(str1);
+ int str2_s = strlen(str2);
+ int i;
+
+ if (str1_s < str2_s) {
+ /* str2 is longer than str1, so str1 doesn't contain str2 */
+ return 1;
+ }
+
+ for (i = 0; i < str2_s; i++) {
+ if (str1[i] != str2[i]) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+static int
+stridxof(const char *str, char c)
+{
+ int size_s = strlen(str);
+ int i;
+
+ for (i = 0; i < size_s; i++) {
+ if (str[i] == c) {
+ return i;
+ }
+ }
+
+ return size_s - 1;
+}
+
+static char *
+remove_ext(const char *filename)
+{
+ int i, size_s = stridxof(filename, '.') + 1;
+ char *name = (char *) malloc(sizeof(char) * size_s);
+
+ for (i = 0; i < size_s; i++) {
+ name[i] = filename[i];
+ }
+
+ name[size_s - 1] = '\0';
+
+ return name;
+}
+
/* Parses the configuration line to get log level and the context */
static int
log_get_level(const char *filename, char *conf_key, char *conf_value)
{
+ int default_level = DBG_LVL;
+ const char *context;
+
+ if (strends(conf_key, "level") != 0)
+ return DBG_LVL;
+
+ context = remove_ext(filename);
+ printf("%s\n", conf_key);
+
+ if (strcmp(conf_key, "logging.level.default")) {
+ default_level = log_parse_level_property(conf_value);
+ } else if (strstarts(conf_key, "file.") == 0 && strends(conf_key, context) == 0) {
+ printf("Contesto: %s %s\n", context, conf_key);
+ }
+/*
+
char *key = strndup(conf_key, strlen(conf_key));
char *context = strndup(strtok(key, "."), strlen(key));
- int level_context = strcmp(strtok(NULL, "."), "level");
char *file_context = strndup(filename, HALF_SIZE);
- int root_level = 0;
+
int level = 0;
file_context = strtok(file_context, ".");
- if (level_context == 0) {
+ if (strends(key, "level") == 0) {
if (strcmp(context, "root") == 0) {
- root_level = log_parse_level_property(conf_value);
+ default_level = log_parse_level_property(conf_value);
} else if (strcmp(context, file_context) == 0
&& (level = log_parse_level_property(conf_value)) >= 0) {
+ printf("----->>>> %d\n", level);
return level;
}
- }
+ }*/
- return root_level;
+ return default_level;
}
/* Initialize the log structure */
@@ -95,9 +185,14 @@ log_init(Log *log)
while (fgets(buff, BUFF_SIZE, file) != NULL
&& buff[0] != '#') {
sscanf(buff, "%[^=]=%s", conf_key, conf_value);
- log->level = log_get_level(log->filename, conf_key, conf_value);
+
+ if (strends(conf_key, "level") == 0) {
+ log->level = log_get_level(log->filename, conf_key, conf_value);
+ }
}
+ printf("----->>>> %d\n", strstarts("file.main.level", "file"));
+
fclose(file);
}