diff options
Diffstat (limited to 'list.c')
-rw-r--r-- | list.c | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -1,4 +1,5 @@ #define _XOPEN_SOURCE 700 +#include <stdio.h> #include <string.h> #include <stdlib.h> @@ -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; +} |