From 80616cc66502cd3fb53f8ce201290197461cdcaa Mon Sep 17 00:00:00 2001 From: Lukas Krickl Date: Sat, 4 Nov 2023 21:48:46 +0100 Subject: [PATCH] Initial commit --- include/ulas.h | 36 ++++++++++++++++++++++++++++++++++-- makefile | 2 +- src/main.c | 6 +++--- src/test.c | 7 +++++++ src/ulas.c | 28 +++++++++++++++++++++++++++- 5 files changed, 72 insertions(+), 7 deletions(-) diff --git a/include/ulas.h b/include/ulas.h index 03bca6b..d7d3caa 100644 --- a/include/ulas.h +++ b/include/ulas.h @@ -1,7 +1,34 @@ #ifndef ULASH__ #define ULASH__ +#include +#include #include +#include + +#define MAX(x, y) (((x) > (y)) ? (x) : (y)) +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) + +#define ULAS_COMMENT ';' + +// Config variables +#define ULAS_CFG_FMT_GREEN "\x1B[32m" +#define ULAS_CFG_FMT_YELLOW "\x1B[33m" +#define ULAS_CFG_FMT_RED "\x1B[31m" +#define ULAS_CFG_FMT_MAGENTA "\x1B[35m" +#define ULAS_CFG_FMT_CYAN "\x1B[36m" +#define ULAS_CFG_FMT_BLUE "\x1B[34m" +#define ULAS_CFG_FMT_RESET "\x1B[0m" + +// format macros +#define ULAS_FMT(f, fmt) \ + if (isatty(fileno(f)) && ulascfg.color) { \ + fprintf((f), "%s", (fmt)); \ + } + +extern FILE *ulasin; +extern FILE *ulasout; +extern FILE *ulaserr; struct ulas_config { char **argv; @@ -10,6 +37,11 @@ struct ulas_config { bool verbose; }; -int ulas_main(struct ulas_config *cfg); +extern struct ulas_config ulascfg; + +struct ulas_config ulas_cfg_from_env(void); +void ulas_init(struct ulas_config cfg); + +int ulas_main(struct ulas_config cfg); -#endif +#endif diff --git a/makefile b/makefile index 336b96f..0c0e66a 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ SDIR=./src CC=gcc DBGCFLAGS=-g -fsanitize=address DBGLDFLAGS=-fsanitize=address -CFLAGS=-I$(IDIR) -Wall -pedantic $(DBGCFLAGS) -std=gnu99 +CFLAGS=-I$(IDIR) -Wall -pedantic $(DBGCFLAGS) -std=c99 LIBS= TEST_LIBS= LDFLAGS=$(DBGLDFLAGS) $(LIBS) diff --git a/src/main.c b/src/main.c index 79e49a3..9b2f4ee 100644 --- a/src/main.c +++ b/src/main.c @@ -3,6 +3,7 @@ #include #include "ulas.h" #include +#include #define ULAS_NAME "ulas" #define ULAS_VER "0.0.1" @@ -48,12 +49,11 @@ void ulas_getopt(int argc, char **argv, struct ulas_config *cfg) { int main(int argc, char **argv) { // map args to cfg here - struct ulas_config cfg; - memset(&cfg, 0, sizeof(cfg)); + struct ulas_config cfg = ulas_cfg_from_env(); ulas_getopt(argc, argv, &cfg); - int res = ulas_main(&cfg); + int res = ulas_main(cfg); return res; } diff --git a/src/test.c b/src/test.c index da0b381..d05918d 100644 --- a/src/test.c +++ b/src/test.c @@ -1,3 +1,4 @@ +#include "ulas.h" #include void null_test_success(void) { @@ -6,6 +7,12 @@ void null_test_success(void) { } int main(int arc, char **argv) { + ulas_init(ulas_cfg_from_env()); + + if (!ulascfg.verbose) { + fclose(stderr); + } + null_test_success(); return 0; diff --git a/src/ulas.c b/src/ulas.c index 159a094..1d88cd9 100644 --- a/src/ulas.c +++ b/src/ulas.c @@ -1,5 +1,31 @@ #include "ulas.h" -int ulas_main(struct ulas_config *cfg) { +FILE *ulasin = NULL; +FILE *ulasout = NULL; +FILE *ulaserr = NULL; +struct ulas_config ulascfg; + +void ulas_init(struct ulas_config cfg) { + if (ulasin == NULL) { + ulasin = stdin; + } + if (ulasout == NULL) { + ulasout = stdout; + } + if (ulaserr == NULL) { + ulaserr = stderr; + } + ulascfg = cfg; +} + +struct ulas_config ulas_cfg_from_env(void) { + struct ulas_config cfg; + memset(&cfg, 0, sizeof(cfg)); + + return cfg; +} + +int ulas_main(struct ulas_config cfg) { + ulas_init(cfg); return 0; } -- 2.30.2