Initial commit
authorLukas Krickl <lukas@krickl.dev>
Sat, 4 Nov 2023 20:48:46 +0000 (21:48 +0100)
committerLukas Krickl <lukas@krickl.dev>
Sat, 4 Nov 2023 20:48:46 +0000 (21:48 +0100)
include/ulas.h
makefile
src/main.c
src/test.c
src/ulas.c

index 03bca6ba1536204f8de0a410803dc7e08bb718c9..d7d3caab7b7bf2ab99dcf5ad8af8a337678e9889 100644 (file)
@@ -1,7 +1,34 @@
 #ifndef ULASH__
 #define ULASH__
 
+#include <stdlib.h>
+#include <stdio.h>
 #include <stdbool.h>
+#include <string.h>
+
+#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
index 336b96fd8957a2fa488b51893f8ea12d68477591..0c0e66ab629c618f4425f695ef9786325afbd61a 100644 (file)
--- 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)
index 79e49a392e9efdbec3c4a5aa2e7d82188c98378a..9b2f4ee2e7ef32a3d8312617aad1d2d378c44af9 100644 (file)
@@ -3,6 +3,7 @@
 #include <string.h>
 #include "ulas.h"
 #include <unistd.h>
+#include <getopt.h>
 
 #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;
 }
index da0b38119e65aef3eb08b8b27455b34405f6efc0..d05918d1a140ba874552984a5438a175e30826d7 100644 (file)
@@ -1,3 +1,4 @@
+#include "ulas.h"
 #include <stdio.h>
 
 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;
index 159a09470eb198b307c893aaf5a69a0591c072e1..1d88cd92bdc24247ab5ef143563c64083e85d42a 100644 (file)
@@ -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;
 }