From 319c7568828a01fa5ba8ded0b560d852124ffb84 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Mon, 25 Apr 2022 19:45:31 -0400 Subject: add support for setting flags in source --- list.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'list.c') diff --git a/list.c b/list.c index 24d265c..2fa06ab 100644 --- a/list.c +++ b/list.c @@ -1,4 +1,5 @@ #define _XOPEN_SOURCE 700 +#include #include #include @@ -34,3 +35,45 @@ struct majefile *insert_file(struct majefile *list, const char *path, const stru } return tmp; } + +struct majeflag *insert_flag(struct majeflag *list, char *flag) +{ + char *eq = strchr(flag, '='); + *eq = '\0'; + eq++; + + int type = 0; + if (!strcmp(flag, "MAJE_CFLAG")) { + type = MAJE_CFLAG; + } else if (!strcmp(flag, "MAJE_LDFLAG")) { + type = MAJE_LDFLAG; + } else if (!strcmp(flag, "MAJE_LDLIB")) { + type = MAJE_LDLIB; + } else { + fprintf(stderr, "maje: unkonwn directive '%s'\n", flag); + return list; + } + + struct majeflag *tmp = malloc(sizeof(*tmp) + strlen(flag) + 1); + if (tmp == NULL) { + return NULL; + } + + tmp->next = NULL; + tmp->prev = NULL; + + tmp->type = type; + strcpy(tmp->flag, eq); + + if (list == NULL) { + return tmp; + } + + tmp->next = list->next; + tmp->prev = list; + list->next = tmp; + if (tmp->next != NULL) { + tmp->next->prev = tmp; + } + return tmp; +} -- cgit v1.2.1