From 71adf42ce6801074211caabc5c1618d1ca1c3bcb Mon Sep 17 00:00:00 2001 From: s-over-4 Date: Tue, 13 Jun 2023 11:59:39 -0400 Subject: util --- Makefile | 4 ++-- halk | Bin 26064 -> 31096 bytes src/main.c | 4 +--- src/util.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 64 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index df0a9bb..6628a8b 100644 --- a/Makefile +++ b/Makefile @@ -13,10 +13,10 @@ $(name): $(objects) install: make - [ $(XDG_DATA_HOME) ] && cp ./$(name) $(XDG_DATA_HOME)/bin/$(name) || cp ./$(name) /usr/local/bin/$(name) + cp ./$(name) $(HOME)/.local/bin/$(name) uninstall: - [ $(XDG_DATA_HOME) ] && rm -f $(XDG_DATA_HOME)/bin/$(name) || rm -f /usr/local/bin/$(name) + rm -f $(HOME)/.local/bin/$(name) clean: rm -f ./$(name) ./src/*.o diff --git a/halk b/halk index 10f533e..3be1165 100755 Binary files a/halk and b/halk differ diff --git a/src/main.c b/src/main.c index ceefadd..0c2755a 100644 --- a/src/main.c +++ b/src/main.c @@ -2,10 +2,8 @@ #include -#include "include/log.h" +#include "include/util.h" #include "include/lexer.h" -// #include "include/tree.h" -// #include "include/parser.h" int main(int argc, char* argv[]) { diff --git a/src/util.c b/src/util.c index 32cef99..31878ed 100644 --- a/src/util.c +++ b/src/util.c @@ -1,9 +1,31 @@ #include "include/util.h" +void die(const char* fmt, ...) { + va_list ap; + + fprintf(stderr, "== FATAL ERROR ==\n"); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fmt[0] && fmt[strlen(fmt) - 1] == ':') { + fputc(' ', stderr); + perror(NULL); + } else { + fputc('\n', stderr); + } + + fprintf(stderr, "\n"); + + exit(1); +} void log_inf(const char* fmt, ...) { va_list ap; + fprintf(stderr, "== INFO ==\n"); + va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); @@ -15,5 +37,43 @@ void log_inf(const char* fmt, ...) { fputc('\n', stderr); } - exit(1); + fprintf(stderr, "\n"); +} + +void log_war(const char* fmt, ...) { + va_list ap; + + fprintf(stderr, "== WARNING ==\n"); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fmt[0] && fmt[strlen(fmt) - 1] == ':') { + fputc(' ', stderr); + perror(NULL); + } else { + fputc('\n', stderr); + } + + fprintf(stderr, "\n"); +} + +void log_err(const char* fmt, ...) { + va_list ap; + + fprintf(stderr, "== ERROR =="); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fmt[0] && fmt[strlen(fmt) - 1] == ':') { + fputc(' ', stderr); + perror(NULL); + } else { + fputc('\n', stderr); + } + + fprintf(stderr, "\n"); } -- cgit v1.2.3