aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicholas <nbnoll@eml.cc>2021-11-20 10:53:19 -0800
committerNicholas <nbnoll@eml.cc>2021-11-20 10:53:19 -0800
commita9bfe650038afea8b751175cac16f6027345e45f (patch)
tree9a7f9feb76a64bb3efe573036d80b7bdbf8a59a5 /src
parent1c8d4e69205fd875f6bec3fa3bd929c2e7f52f62 (diff)
Chore: reorganize libutf and libfmt into base
I found the split to be arbitrary. Better to include the functionality in the standard library. I also split the headers to allow for more granular inclusion (but the library is still monolithic). The only ugliness is the circular dependency introduced with libutf's generated functions. We put explicit prereqs with the necessary object files instead.
Diffstat (limited to 'src')
-rw-r--r--src/base/arg.c70
-rw-r--r--src/base/fmt/buffer.c (renamed from src/libfmt/buffer.c)0
-rw-r--r--src/base/fmt/do.c (renamed from src/libfmt/do.c)0
-rw-r--r--src/base/fmt/esprint.c (renamed from src/libfmt/esprint.c)0
-rw-r--r--src/base/fmt/float.c (renamed from src/libfmt/float.c)0
-rw-r--r--src/base/fmt/fprint.c (renamed from src/libfmt/fprint.c)0
-rw-r--r--src/base/fmt/internal.h (renamed from src/libfmt/internal.h)2
-rw-r--r--src/base/fmt/locale.c (renamed from src/libfmt/locale.c)0
-rw-r--r--src/base/fmt/nsprint.c (renamed from src/libfmt/nsprint.c)0
-rw-r--r--src/base/fmt/open.c (renamed from src/libfmt/open.c)0
-rw-r--r--src/base/fmt/panic.c (renamed from src/libfmt/panic.c)0
-rw-r--r--src/base/fmt/print.c (renamed from src/libfmt/print.c)0
-rw-r--r--src/base/fmt/rules.mk21
-rw-r--r--src/base/fmt/sprint.c (renamed from src/libfmt/sprint.c)0
-rw-r--r--src/base/fmt/test.c (renamed from src/libfmt/test.c)0
-rw-r--r--src/base/fmt/vesprint.c (renamed from src/libfmt/vesprint.c)0
-rw-r--r--src/base/fmt/vfprint.c (renamed from src/libfmt/vfprint.c)0
-rw-r--r--src/base/fmt/vnsprint.c (renamed from src/libfmt/vnsprint.c)0
-rw-r--r--src/base/fmt/vprint.c (renamed from src/libfmt/vprint.c)0
-rw-r--r--src/base/fmt/vwrite.c (renamed from src/libfmt/vwrite.c)0
-rw-r--r--src/base/fmt/write.c (renamed from src/libfmt/write.c)0
-rw-r--r--src/base/io/close.c7
-rw-r--r--src/base/io/open.c6
-rw-r--r--src/base/io/rules.mk3
-rw-r--r--src/base/rules.mk9
-rw-r--r--src/base/utf/canfit.c (renamed from src/libutf/canfit.c)0
-rw-r--r--src/base/utf/decode.c (renamed from src/libutf/decode.c)0
-rw-r--r--src/base/utf/decodeprev.c (renamed from src/libutf/decodeprev.c)0
-rw-r--r--src/base/utf/encode.c (renamed from src/libutf/encode.c)0
-rw-r--r--src/base/utf/find.c (renamed from src/libutf/find.c)0
-rw-r--r--src/base/utf/findlast.c (renamed from src/libutf/findlast.c)0
-rw-r--r--src/base/utf/internal.h (renamed from src/libutf/internal.h)1
-rw-r--r--src/base/utf/len.c (renamed from src/libutf/len.c)0
-rw-r--r--src/base/utf/rules.mk71
-rw-r--r--src/base/utf/runelen.c (renamed from src/libutf/runelen.c)0
-rw-r--r--src/base/utf/vendor/common.c (renamed from src/libutf/vendor/common.c)2
-rw-r--r--src/base/utf/vendor/common.h (renamed from src/libutf/vendor/common.h)1
-rw-r--r--src/base/utf/vendor/mkgraphemedata.c (renamed from src/libutf/vendor/mkgraphemedata.c)0
-rw-r--r--src/base/utf/vendor/mkrunetype.c (renamed from src/libutf/vendor/mkrunetype.c)0
-rw-r--r--src/base/utf/vendor/mkrunewidth.c (renamed from src/libutf/vendor/mkrunewidth.c)0
-rw-r--r--src/cmd/core/basename.c1
-rw-r--r--src/cmd/core/cat.c1
-rw-r--r--src/cmd/dwm/dwm.h1
-rw-r--r--src/cmd/menu/menu.h1
-rw-r--r--src/cmd/rc/rc.h2
-rw-r--r--src/cmd/term/term.h1
-rw-r--r--src/libbio/rules.mk5
-rw-r--r--src/libc/rules.mk20
-rw-r--r--src/libc/stdio.c59
-rw-r--r--src/libc/string.c80
-rw-r--r--src/libfmt/rules.mk36
-rw-r--r--src/libutf/rules.mk76
-rw-r--r--src/rules.mk6
53 files changed, 111 insertions, 371 deletions
diff --git a/src/base/arg.c b/src/base/arg.c
index 269043e..64e4dd6 100644
--- a/src/base/arg.c
+++ b/src/base/arg.c
@@ -1,71 +1 @@
-#include <u.h>
-#include <base.h>
-
-// NOTE: this utf8 bit is copied from libunicode to remove the hard dependency just for ARG_BEGIN.
-
-#define UTFmax 4
-#define RuneSync 0x80u
-#define RuneSelf 0x80u
-#define RuneErr 0xFFFDu
-#define RuneMax 0x10FFFFu
-#define RuneMask 0x1FFFFFu
-
-#define Bit(i) (7-(i))
-/* N 0's preceded by i 1's e.g. T(Bit(2)) is 1100 0000 */
-#define Tbyte(i) (((1 << (Bit(i)+1))-1) ^ 0xFF)
-/* 0000 0000 0000 0111 1111 1111 */
-#define RuneX(i) ((1 << (Bit(i) + ((i)-1)*Bitx))-1)
-enum
-{
- Bitx = Bit(1),
- Tx = Tbyte(1),
- Rune1 = (1 << (Bit(0)+0*Bitx)) - 1,
-
- Maskx = (1 << Bitx) - 1, /* 0011 1111 */
- Testx = Maskx ^ 0xff, /* 1100 0000 */
-
- SurrogateMin = 0xD800,
- SurrogateMax = 0xDFFF,
- Bad = RuneErr,
-};
-
-
-int
-arg·bytetorune(uint32* r, byte* s)
-{
- int c[4], i;
- uint32 l;
-
- c[0] = *(ubyte*)(s);
- if(c[0] < Tx) {
- *r = c[0];
- return 1;
- }
-
- l = c[0];
- for(i = 1; i < UTFmax; i++) {
- c[i] = *(ubyte*)(s+i);
- c[i] ^= Tx;
- if (c[i] & Testx) goto bad;
-
- l = (l << Bitx) | c[i];
- if(c[0] < Tbyte(i + 2)) {
- l &= RuneX(i + 1);
- if (i == 1) {
- if (c[0] < Tbyte(2) || l <= Rune1)
- goto bad;
- } else if (l <= RuneX(i) || l > RuneMax)
- goto bad;
- if (i == 2 && SurrogateMin <= l && l <= SurrogateMax)
- goto bad;
-
- *r = l;
- return i + 1;
- }
- }
-bad:
- *r = RuneErr;
- return 1;
-}
-
char *argv0;
diff --git a/src/libfmt/buffer.c b/src/base/fmt/buffer.c
index 0099e72..0099e72 100644
--- a/src/libfmt/buffer.c
+++ b/src/base/fmt/buffer.c
diff --git a/src/libfmt/do.c b/src/base/fmt/do.c
index bd2e65c..bd2e65c 100644
--- a/src/libfmt/do.c
+++ b/src/base/fmt/do.c
diff --git a/src/libfmt/esprint.c b/src/base/fmt/esprint.c
index 6d97340..6d97340 100644
--- a/src/libfmt/esprint.c
+++ b/src/base/fmt/esprint.c
diff --git a/src/libfmt/float.c b/src/base/fmt/float.c
index 63ea80f..63ea80f 100644
--- a/src/libfmt/float.c
+++ b/src/base/fmt/float.c
diff --git a/src/libfmt/fprint.c b/src/base/fmt/fprint.c
index 5077359..5077359 100644
--- a/src/libfmt/fprint.c
+++ b/src/base/fmt/fprint.c
diff --git a/src/libfmt/internal.h b/src/base/fmt/internal.h
index 725cfff..7bf47af 100644
--- a/src/libfmt/internal.h
+++ b/src/base/fmt/internal.h
@@ -2,8 +2,6 @@
#include <u.h>
#include <base.h>
-#include <libutf.h>
-#include <libfmt.h>
typedef int (*Formatter)(fmt·State *io);
typedef struct Verb Verb;
diff --git a/src/libfmt/locale.c b/src/base/fmt/locale.c
index 437c61e..437c61e 100644
--- a/src/libfmt/locale.c
+++ b/src/base/fmt/locale.c
diff --git a/src/libfmt/nsprint.c b/src/base/fmt/nsprint.c
index 90489e0..90489e0 100644
--- a/src/libfmt/nsprint.c
+++ b/src/base/fmt/nsprint.c
diff --git a/src/libfmt/open.c b/src/base/fmt/open.c
index 8aadef5..8aadef5 100644
--- a/src/libfmt/open.c
+++ b/src/base/fmt/open.c
diff --git a/src/libfmt/panic.c b/src/base/fmt/panic.c
index 25ee277..25ee277 100644
--- a/src/libfmt/panic.c
+++ b/src/base/fmt/panic.c
diff --git a/src/libfmt/print.c b/src/base/fmt/print.c
index 20b8e00..20b8e00 100644
--- a/src/libfmt/print.c
+++ b/src/base/fmt/print.c
diff --git a/src/base/fmt/rules.mk b/src/base/fmt/rules.mk
new file mode 100644
index 0000000..fdfdac0
--- /dev/null
+++ b/src/base/fmt/rules.mk
@@ -0,0 +1,21 @@
+# Local sources
+SRCS_$(d)+=\
+ $(d)/fmt/buffer.c\
+ $(d)/fmt/do.c\
+ $(d)/fmt/esprint.c\
+ $(d)/fmt/fprint.c\
+ $(d)/fmt/locale.c\
+ $(d)/fmt/nsprint.c\
+ $(d)/fmt/open.c\
+ $(d)/fmt/print.c\
+ $(d)/fmt/sprint.c\
+ $(d)/fmt/vesprint.c\
+ $(d)/fmt/vfprint.c\
+ $(d)/fmt/vnsprint.c\
+ $(d)/fmt/vprint.c\
+ $(d)/fmt/vwrite.c\
+ $(d)/fmt/panic.c\
+ $(d)/fmt/write.c
+
+CHECK_$(d)+=\
+ $(d)/fmt/test.c
diff --git a/src/libfmt/sprint.c b/src/base/fmt/sprint.c
index f1be6dd..f1be6dd 100644
--- a/src/libfmt/sprint.c
+++ b/src/base/fmt/sprint.c
diff --git a/src/libfmt/test.c b/src/base/fmt/test.c
index d81a62e..d81a62e 100644
--- a/src/libfmt/test.c
+++ b/src/base/fmt/test.c
diff --git a/src/libfmt/vesprint.c b/src/base/fmt/vesprint.c
index 18f4dd2..18f4dd2 100644
--- a/src/libfmt/vesprint.c
+++ b/src/base/fmt/vesprint.c
diff --git a/src/libfmt/vfprint.c b/src/base/fmt/vfprint.c
index 4306ea7..4306ea7 100644
--- a/src/libfmt/vfprint.c
+++ b/src/base/fmt/vfprint.c
diff --git a/src/libfmt/vnsprint.c b/src/base/fmt/vnsprint.c
index 7ded908..7ded908 100644
--- a/src/libfmt/vnsprint.c
+++ b/src/base/fmt/vnsprint.c
diff --git a/src/libfmt/vprint.c b/src/base/fmt/vprint.c
index bb3076b..bb3076b 100644
--- a/src/libfmt/vprint.c
+++ b/src/base/fmt/vprint.c
diff --git a/src/libfmt/vwrite.c b/src/base/fmt/vwrite.c
index cacdef2..cacdef2 100644
--- a/src/libfmt/vwrite.c
+++ b/src/base/fmt/vwrite.c
diff --git a/src/libfmt/write.c b/src/base/fmt/write.c
index 9a77223..9a77223 100644
--- a/src/libfmt/write.c
+++ b/src/base/fmt/write.c
diff --git a/src/base/io/close.c b/src/base/io/close.c
new file mode 100644
index 0000000..5a773cd
--- /dev/null
+++ b/src/base/io/close.c
@@ -0,0 +1,7 @@
+#include "internal.h"
+
+int
+io·close(io·Stream *s)
+{
+ return fclose(s);
+}
diff --git a/src/base/io/open.c b/src/base/io/open.c
index 71e88d4..fe78255 100644
--- a/src/base/io/open.c
+++ b/src/base/io/open.c
@@ -5,9 +5,3 @@ io·open(byte *name, byte *mode)
{
return fopen(name, mode);
}
-
-int
-io·close(io·Stream *s)
-{
- return fclose(s);
-}
diff --git a/src/base/io/rules.mk b/src/base/io/rules.mk
index 2e03ca5..124cd09 100644
--- a/src/base/io/rules.mk
+++ b/src/base/io/rules.mk
@@ -3,6 +3,7 @@ SRCS_$(d)+=\
$(d)/io/flush.c\
$(d)/io/interface.c\
$(d)/io/open.c\
+ $(d)/io/close.c\
$(d)/io/putbyte.c\
$(d)/io/putstring.c\
$(d)/io/read.c\
@@ -11,4 +12,4 @@ SRCS_$(d)+=\
$(d)/io/stat.c\
$(d)/io/tell.c\
$(d)/io/unget.c\
- $(d)/io/write.c\
+ $(d)/io/write.c
diff --git a/src/base/rules.mk b/src/base/rules.mk
index 9f25d37..0a262c7 100644
--- a/src/base/rules.mk
+++ b/src/base/rules.mk
@@ -5,10 +5,15 @@ include share/push.mk
# local sources
SRCS_$(d):=\
$(d)/arg.c
+
+CHECK_$(d):=\
+ $(d)/test.c
+
include $(d)/bufio/rules.mk
include $(d)/coro/rules.mk
include $(d)/error/rules.mk
include $(d)/flate/rules.mk
+include $(d)/fmt/rules.mk
include $(d)/fs/rules.mk
include $(d)/gz/rules.mk
include $(d)/io/rules.mk
@@ -18,12 +23,10 @@ include $(d)/os/rules.mk
include $(d)/rng/rules.mk
include $(d)/sort/rules.mk
include $(d)/string/rules.mk
-CHECK_$(d):=\
- $(d)/test.c
+include $(d)/utf/rules.mk
# outputs
LIBS_$(d) := $(d)/base.a
-BINS_$(d) :=
include share/paths.mk
diff --git a/src/libutf/canfit.c b/src/base/utf/canfit.c
index 4579ab3..4579ab3 100644
--- a/src/libutf/canfit.c
+++ b/src/base/utf/canfit.c
diff --git a/src/libutf/decode.c b/src/base/utf/decode.c
index 01797f1..01797f1 100644
--- a/src/libutf/decode.c
+++ b/src/base/utf/decode.c
diff --git a/src/libutf/decodeprev.c b/src/base/utf/decodeprev.c
index 27dced6..27dced6 100644
--- a/src/libutf/decodeprev.c
+++ b/src/base/utf/decodeprev.c
diff --git a/src/libutf/encode.c b/src/base/utf/encode.c
index fa7c93e..fa7c93e 100644
--- a/src/libutf/encode.c
+++ b/src/base/utf/encode.c
diff --git a/src/libutf/find.c b/src/base/utf/find.c
index d75feb8..d75feb8 100644
--- a/src/libutf/find.c
+++ b/src/base/utf/find.c
diff --git a/src/libutf/findlast.c b/src/base/utf/findlast.c
index ab25ab2..ab25ab2 100644
--- a/src/libutf/findlast.c
+++ b/src/base/utf/findlast.c
diff --git a/src/libutf/internal.h b/src/base/utf/internal.h
index 9719977..49945dd 100644
--- a/src/libutf/internal.h
+++ b/src/base/utf/internal.h
@@ -2,7 +2,6 @@
#include <u.h>
#include <base.h>
-#include <libutf.h>
/*
* NOTE: we use the preprocessor to ensure we have unsigned constants.
diff --git a/src/libutf/len.c b/src/base/utf/len.c
index 8fbd679..8fbd679 100644
--- a/src/libutf/len.c
+++ b/src/base/utf/len.c
diff --git a/src/base/utf/rules.mk b/src/base/utf/rules.mk
new file mode 100644
index 0000000..446c113
--- /dev/null
+++ b/src/base/utf/rules.mk
@@ -0,0 +1,71 @@
+UNICODE=14.0.0
+
+SRCS_$(d)+=\
+ $(d)/utf/encode.c\
+ $(d)/utf/decode.c\
+ $(d)/utf/decodeprev.c\
+ $(d)/utf/find.c\
+ $(d)/utf/findlast.c\
+ $(d)/utf/canfit.c\
+ $(d)/utf/runelen.c\
+ $(d)/utf/len.c\
+ $(d)/utf/runetype-$(UNICODE).c\
+ $(d)/utf/runewidth-$(UNICODE).c
+
+# ========================================================================
+# table generation
+
+# NOTE: this is pretty hacky...
+NEED_OBJS=\
+ $(OBJ_DIR)/base/arg.o\
+ $(OBJ_DIR)/base/utf/decode.o\
+ $(OBJ_DIR)/base/error/panicf.o\
+ $(OBJ_DIR)/base/io/readln.o\
+ $(OBJ_DIR)/base/io/open.o\
+ $(OBJ_DIR)/base/io/close.o
+
+$(d)/utf/vendor/common.o: $(d)/utf/vendor/common.c
+ $(COMPILE)
+
+# rune categories
+$(d)/utf/vendor/UnicodeData-$(UNICODE).txt:
+ @echo "GET UnicodeData.txt";\
+ curl https://www.unicode.org/Public/$(UNICODE)/ucd/UnicodeData.txt > $@
+
+$(d)/utf/vendor/mkrunetype: $(d)/utf/vendor/mkrunetype.c $(d)/utf/vendor/common.o $(NEED_OBJS)
+ $(COMPLINK)
+
+GENS += $(d)/utf/vendor/mkrunetype
+
+$(d)/utf/runetype-$(UNICODE).c: $(d)/utf/vendor/UnicodeData-$(UNICODE).txt $(d)/utf/vendor/mkrunetype
+ @$(dir $@)vendor/mkrunetype $< > $@
+
+# rune widths
+$(d)/utf/vendor/EastAsianWidth-$(UNICODE).txt:
+ @echo "GET EastAsianWidth.txt";\
+ curl https://www.unicode.org/Public/$(UNICODE)/ucd/EastAsianWidth.txt > $@
+
+$(d)/utf/vendor/EmojiData-$(UNICODE).txt:
+ @echo "GET EmojiData.txt";\
+ curl https://www.unicode.org/Public/$(UNICODE)/ucd/emoji/emoji-data.txt > $@
+
+$(d)/utf/vendor/mkrunewidth: $(d)/utf/vendor/mkrunewidth.c $(d)/utf/vendor/common.o $(NEED_OBJS)
+ $(COMPLINK)
+
+GENS += $(d)/utf/vendor/mkrunewidth
+
+$(d)/utf/runewidth-$(UNICODE).c: $(d)/utf/vendor/mkrunewidth $(d)/utf/vendor/UnicodeData-$(UNICODE).txt $(d)/utf/vendor/EastAsianWidth-$(UNICODE).txt $(d)/utf/vendor/EmojiData-$(UNICODE).txt
+ @$(dir $@)vendor/mkrunewidth $(filter-out $<, $^) > $@
+
+# grapheme boundaries
+$(d)/utf/vendor/GraphemeBreakProperty-$(UNICODE).txt:
+ @echo "GET GraphemeBreakProperty.txt";\
+ curl https://www.unicode.org/Public/$(UNICODE)/ucd/auxiliary/GraphemeBreakProperty.txt > $@
+
+$(d)/utf/vendor/mkgraphemedata: $(d)/utf/vendor/mkgraphemedata.c $(d)/utf/vendor/common.o $(NEED_OBJS)
+ $(COMPLINK)
+
+$(d)/utf/graphemedata-$(UNICODE).c: $(d)/utf/vendor/mkgraphemedata $(d)/utf/vendor/GraphemeBreakProperty-$(UNICODE).txt
+ $^ > $@
+
+GENS += $(d)/utf/vendor/mkgraphemedata
diff --git a/src/libutf/runelen.c b/src/base/utf/runelen.c
index dac7f15..dac7f15 100644
--- a/src/libutf/runelen.c
+++ b/src/base/utf/runelen.c
diff --git a/src/libutf/vendor/common.c b/src/base/utf/vendor/common.c
index 5a03a50..fcf1177 100644
--- a/src/libutf/vendor/common.c
+++ b/src/base/utf/vendor/common.c
@@ -99,7 +99,7 @@ putsearch(void)
{
puts(
"#include <u.h>\n"
- "#include <libutf.h>\n"
+ "#include <base/utf.h>\n"
"\n"
"static\n"
"rune*\n"
diff --git a/src/libutf/vendor/common.h b/src/base/utf/vendor/common.h
index 62f6c5b..51a53bd 100644
--- a/src/libutf/vendor/common.h
+++ b/src/base/utf/vendor/common.h
@@ -2,7 +2,6 @@
#include <u.h>
#include <base.h>
-#include <libutf.h>
enum
{
diff --git a/src/libutf/vendor/mkgraphemedata.c b/src/base/utf/vendor/mkgraphemedata.c
index ce5a952..ce5a952 100644
--- a/src/libutf/vendor/mkgraphemedata.c
+++ b/src/base/utf/vendor/mkgraphemedata.c
diff --git a/src/libutf/vendor/mkrunetype.c b/src/base/utf/vendor/mkrunetype.c
index b33df32..b33df32 100644
--- a/src/libutf/vendor/mkrunetype.c
+++ b/src/base/utf/vendor/mkrunetype.c
diff --git a/src/libutf/vendor/mkrunewidth.c b/src/base/utf/vendor/mkrunewidth.c
index 14e6973..14e6973 100644
--- a/src/libutf/vendor/mkrunewidth.c
+++ b/src/base/utf/vendor/mkrunewidth.c
diff --git a/src/cmd/core/basename.c b/src/cmd/core/basename.c
index ba9d4c9..263592f 100644
--- a/src/cmd/core/basename.c
+++ b/src/cmd/core/basename.c
@@ -1,6 +1,5 @@
#include <u.h>
#include <base.h>
-#include <libfmt.h>
static void
usage(void)
diff --git a/src/cmd/core/cat.c b/src/cmd/core/cat.c
index 4f0929c..e9b770b 100644
--- a/src/cmd/core/cat.c
+++ b/src/cmd/core/cat.c
@@ -1,6 +1,5 @@
#include <u.h>
#include <base.h>
-#include <libfmt.h>
static void
usage(void)
diff --git a/src/cmd/dwm/dwm.h b/src/cmd/dwm/dwm.h
index afec1f2..269f373 100644
--- a/src/cmd/dwm/dwm.h
+++ b/src/cmd/dwm/dwm.h
@@ -2,7 +2,6 @@
#pragma once
#include <u.h>
#include <base.h>
-#include <libutf.h>
#include <errno.h>
#include <locale.h>
diff --git a/src/cmd/menu/menu.h b/src/cmd/menu/menu.h
index f4345bb..de01607 100644
--- a/src/cmd/menu/menu.h
+++ b/src/cmd/menu/menu.h
@@ -1,7 +1,6 @@
/* See LICENSE file for copyright and license details. */
#include <u.h>
#include <base.h>
-#include <libutf.h>
#include <time.h>
#include <locale.h>
diff --git a/src/cmd/rc/rc.h b/src/cmd/rc/rc.h
index f52e4e2..76a1b3d 100644
--- a/src/cmd/rc/rc.h
+++ b/src/cmd/rc/rc.h
@@ -2,7 +2,7 @@
#include <u.h>
#include <base.h>
-#include <libutf.h>
+#include <base/utf.h>
// -----------------------------------------------------------------------
// types
diff --git a/src/cmd/term/term.h b/src/cmd/term/term.h
index 6784974..c370239 100644
--- a/src/cmd/term/term.h
+++ b/src/cmd/term/term.h
@@ -3,7 +3,6 @@
#include <u.h>
#include <base.h>
-#include <libutf.h>
#include <signal.h>
#include <sys/ioctl.h>
diff --git a/src/libbio/rules.mk b/src/libbio/rules.mk
index f4e75f4..032670c 100644
--- a/src/libbio/rules.mk
+++ b/src/libbio/rules.mk
@@ -6,7 +6,6 @@ SRCS_$(d) := \
$(d)/newick.c \
$(d)/phylo.c
LIBS_$(d) := $(d)/libbio.a
-BINS_$(d) :=
# CHECK_$(d) := \
# $(d)/test.c \
# $(d)/simulate.c
@@ -17,8 +16,8 @@ include share/paths.mk
$(LIBS_$(d)): $(OBJS_$(d)) $(OBJS_$(d)/io)
$(ARCHIVE)
-$(TEST_$(d)): TLIBS = $(LIBS_$(d)) $(OBJ_DIR)/libn/libn.a
-$(TEST_$(d)): $(UNIT_$(d)) $(LIBS_$(d)) $(OBJ_DIR)/libn/libn.a
+$(TEST_$(d)): TLIBS = $(LIBS_$(d)) $(OBJ_DIR)/base/base.a
+$(TEST_$(d)): $(UNIT_$(d)) $(LIBS_$(d)) $(OBJ_DIR)/base/base.a
$(LINK)
include share/pop.mk
diff --git a/src/libc/rules.mk b/src/libc/rules.mk
deleted file mode 100644
index 34e0912..0000000
--- a/src/libc/rules.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-include share/push.mk
-
-# Iterate through subdirectory tree
-
-# Local sources
-SRCS_$(d) := $(wildcard $(d)/*.c)
-LIBS_$(d) := $(d)/libc_n.a
-BINS_$(d) :=
-
-include share/paths.mk
-
-# Local rules
-$(LIBS_$(d)): TCFLAGS = -ffreestanding -fno-builtin -nostdlib
-$(LIBS_$(d)): $(OBJS_$(d))
- $(ARCHIVE)
-
-$(BINS_$(d)): $(OBJ_DIR)/libn/test.o
- $(LINK)
-
-include share/pop.mk
diff --git a/src/libc/stdio.c b/src/libc/stdio.c
deleted file mode 100644
index 8bbbe9a..0000000
--- a/src/libc/stdio.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include <u.h>
-#include <libc.h>
-
-int
-printf(byte* fmt, ...)
-{
- va_list args;
- va_start(args, fmt);
-
- int nw, rem, peek, len;
- byte *str, c;
-
- while (*fmt) {
- rem = INT_MAX - nw;
-
- if (fmt[0] != '%' || fmt[1] == '%') {
- if (fmt[0] == '%') fmt++;
-
- for (peek = 1; fmt[peek] && fmt[peek] != '%'; peek++) {
- ;
- }
- if (rem < peek) return -1;
- // TODO: Print here.
- fmt += peek;
- nw += peek;
- continue;
- }
-
- str = fmt++;
-
- switch (*fmt++) {
- case 'c':
- c = va_arg(args, int);
- if (rem < 0) return -1;
- // TODO: Print here
- nw++;
- break;
-
- case 's':
- str = va_arg(args, byte*);
- len = strlen(str);
- if (rem < len) return -1;
- // TODO: Print here
- nw += len;
- break;
- default:
- fmt = str;
- len = strlen(fmt);
- if (rem < len) return -1;
- // TODO: Print here
- nw += len;
- fmt += len;
- break;
- }
- }
-
- va_end(args);
- return nw;
-}
diff --git a/src/libc/string.c b/src/libc/string.c
deleted file mode 100644
index 0e41efa..0000000
--- a/src/libc/string.c
+++ /dev/null
@@ -1,80 +0,0 @@
-#include <u.h>
-#include <libc.h>
-
-void*
-memcopy(void *dst, void *src, intptr n)
-{
- byte *e, *s, *d;
-
- d = dst;
- e = d + n;
- for (s = src ; d != e; ++s, ++d) {
- *d = *s;
- }
-
- return dst;
-}
-
-void*
-memmove(void *dst, void *src, intptr n)
-{
- byte *e, *s, *d;
- s = src;
- d = dst;
-
- if (d < s) {
- e = d + n;
- for (; d != e; ++s, ++d)
- *d = *s;
-
- } else {
- e = d;
- d += n;
- s += n;
- for (; d != e; --s, --d)
- d[-1] = s[-1];
- }
-
- return dst;
-}
-
-void*
-memset(void *buf, int val, intptr n)
-{
- byte *b, *e;
- b = buf;
- e = b + n;
- for (; b != e; b++) {
- *b = (byte)val;
- }
-
- return buf;
-}
-
-int
-memcmp(void *lhs, void *rhs, intptr n)
-{
- byte *bl, *br, *e;
-
- br = rhs;
- e = br + n;
- for (bl = lhs; br != e; ++bl, ++br) {
- if (*bl < *br)
- return -1;
- else if (*bl > *br)
- return 1;
- }
-
- return 0;
-}
-
-int
-strlen(byte* s)
-{
- byte* b;
- for (b = s; *b; b++) {
- ;
- }
-
- return b - s;
-}
diff --git a/src/libfmt/rules.mk b/src/libfmt/rules.mk
deleted file mode 100644
index 75a7bc7..0000000
--- a/src/libfmt/rules.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-include share/push.mk
-
-# Local sources
-SRCS_$(d):=\
- $(d)/buffer.c\
- $(d)/do.c\
- $(d)/esprint.c\
- $(d)/fprint.c\
- $(d)/locale.c\
- $(d)/nsprint.c\
- $(d)/open.c\
- $(d)/print.c\
- $(d)/sprint.c\
- $(d)/vesprint.c\
- $(d)/vfprint.c\
- $(d)/vnsprint.c\
- $(d)/vprint.c\
- $(d)/vwrite.c\
- $(d)/panic.c\
- $(d)/write.c
-
-LIBS_$(d):=\
- $(d)/libfmt.a
-
-CHECK_$(d):=\
- $(d)/test.c
-
-include share/paths.mk
-
-$(LIBS_$(d)): $(OBJS_$(d))
- $(ARCHIVE)
-
-$(TEST_$(d)): $(UNIT_$(d)) $(LIBS_$(d)) $(OBJ_DIR)/libutf/libutf.a $(OBJ_DIR)/base/base.a
- $(COMPLINK)
-
-include share/pop.mk
diff --git a/src/libutf/rules.mk b/src/libutf/rules.mk
deleted file mode 100644
index aeb86b2..0000000
--- a/src/libutf/rules.mk
+++ /dev/null
@@ -1,76 +0,0 @@
-include share/push.mk
-
-UNICODE=14.0.0
-
-SRCS_$(d):=\
- $(d)/encode.c\
- $(d)/decode.c\
- $(d)/decodeprev.c\
- $(d)/find.c\
- $(d)/findlast.c\
- $(d)/canfit.c\
- $(d)/runelen.c\
- $(d)/len.c\
- $(d)/runetype-$(UNICODE).c\
- $(d)/runewidth-$(UNICODE).c
-
-LIBS_$(d):=$(d)/libutf.a
-
-include share/paths.mk
-
-# ========================================================================
-# table generation
-
-$(d)/vendor/common.o: $(d)/vendor/common.c
- $(COMPILE)
-
-# rune categories
-$(d)/vendor/UnicodeData-$(UNICODE).txt:
- @echo "GET UnicodeData.txt";\
- curl https://www.unicode.org/Public/$(UNICODE)/ucd/UnicodeData.txt > $@
-
-$(d)/vendor/mkrunetype: $(d)/vendor/mkrunetype.c $(d)/vendor/common.o $(OBJ_DIR)/base/base.a
- $(COMPLINK)
-
-GENS += $(d)/vendor/mkrunetype
-
-$(d)/runetype-$(UNICODE).c: $(d)/vendor/UnicodeData-$(UNICODE).txt $(d)/vendor/mkrunetype
- @$(dir $@)vendor/mkrunetype $< > $@
-
-# rune widths
-$(d)/vendor/EastAsianWidth-$(UNICODE).txt:
- @echo "GET EastAsianWidth.txt";\
- curl https://www.unicode.org/Public/$(UNICODE)/ucd/EastAsianWidth.txt > $@
-
-$(d)/vendor/EmojiData-$(UNICODE).txt:
- @echo "GET EmojiData.txt";\
- curl https://www.unicode.org/Public/$(UNICODE)/ucd/emoji/emoji-data.txt > $@
-
-$(d)/vendor/mkrunewidth: $(d)/vendor/mkrunewidth.c $(d)/vendor/common.o $(OBJ_DIR)/base/base.a
- $(COMPLINK)
-
-GENS += $(d)/vendor/mkrunewidth
-
-$(d)/runewidth-$(UNICODE).c: $(d)/vendor/mkrunewidth $(d)/vendor/UnicodeData-$(UNICODE).txt $(d)/vendor/EastAsianWidth-$(UNICODE).txt $(d)/vendor/EmojiData-$(UNICODE).txt
- @$(dir $@)vendor/mkrunewidth $(filter-out $<, $^) > $@
-
-# grapheme boundaries
-$(d)/vendor/GraphemeBreakProperty-$(UNICODE).txt:
- @echo "GET GraphemeBreakProperty.txt";\
- curl https://www.unicode.org/Public/$(UNICODE)/ucd/auxiliary/GraphemeBreakProperty.txt > $@
-
-$(d)/vendor/mkgraphemedata: $(d)/vendor/mkgraphemedata.c $(d)/vendor/common.o $(OBJ_DIR)/base/base.a
- $(COMPLINK)
-
-$(d)/graphemedata-$(UNICODE).c: $(d)/vendor/mkgraphemedata $(d)/vendor/GraphemeBreakProperty-$(UNICODE).txt
- $^ > $@
-
-GENS += $(d)/vendor/mkgraphemedata
-
-# ========================================================================
-# normal operations
-
-$(LIBS_$(d)): $(OBJS_$(d))
- $(ARCHIVE)
-
-include share/pop.mk
diff --git a/src/rules.mk b/src/rules.mk
index 9bb61ae..368479c 100644
--- a/src/rules.mk
+++ b/src/rules.mk
@@ -8,12 +8,6 @@ include $(DIR)/rules.mk
DIR := $(d)/base
include $(DIR)/rules.mk
-DIR := $(d)/libutf
-include $(DIR)/rules.mk
-
-DIR := $(d)/libfmt
-include $(DIR)/rules.mk
-
DIR := $(d)/libmath
include $(DIR)/rules.mk