#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;
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
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)
#include <string.h>
#include "ulas.h"
#include <unistd.h>
+#include <getopt.h>
#define ULAS_NAME "ulas"
#define ULAS_VER "0.0.1"
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;
}
+#include "ulas.h"
#include <stdio.h>
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;
#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;
}