commit 31397fae8956b33f967cf621e135f47865a29e73
parent 875c20f1a60e75a86db46acdc5bec10ded07846a
Author: rosia <willowro@outlook.com>
Date: Tue, 10 Mar 2026 19:56:16 +0000
adds basic ln command
Diffstat:
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,13 +1,13 @@
.POSIX:
.SUFFIXES:
HARE=hare
-HAREFLAGS=-lc
+# HAREFLAGS=-lc
DESTDIR=
PREFIX=/usr/local
BINDIR=$(PREFIX)/bin
-all: bin/ls bin/rainbow bin/cat bin/uniq bin/split bin/wc bin/yes bin/mc bin/ed bin/rcsh
+all: bin/ls bin/rainbow bin/cat bin/uniq bin/split bin/wc bin/yes bin/mc bin/ed bin/ln
clean:
rm -rf bin/*
@@ -22,9 +22,9 @@ EDSRC != find cmd/ed/ -name *.ha
bin/ed: $(EDSRC)
$(HARE) build $(HAREFLAGS) -o $@ cmd/ed/
-RCSHSRC != find cmd/rcsh/ -name *.ha
-bin/rcsh: $(RCSHSRC)
- $(HARE) build $(HAREFLAGS) -o $@ cmd/rcsh/
+# RCSHSRC != find cmd/rcsh/ -name *.ha
+# bin/rcsh: $(RCSHSRC)
+# $(HARE) build $(HAREFLAGS) -o $@ cmd/rcsh/
bin/ls: cmd/ls.ha
$(HARE) build $(HAREFLAGS) -o $@ cmd/ls.ha
@@ -50,3 +50,6 @@ bin/yes: cmd/yes.ha
bin/mc: cmd/mc.ha
$(HARE) build $(HAREFLAGS) -o $@ cmd/mc.ha
+bin/ln: cmd/ln.ha
+ $(HARE) build $(HAREFLAGS) -o $@ cmd/ln.ha
+
diff --git a/cmd/ln.ha b/cmd/ln.ha
@@ -0,0 +1,15 @@
+use os;
+use getopt;
+
+export fn main() void = {
+ const cmd = getopt::parse(os::args,
+ "Create a hard link",
+ "source file",
+ "link file");
+ defer getopt::finish(&cmd);
+
+ let source = cmd.args[0];
+ let link = cmd.args[1];
+
+ os::link(source, link)!;
+};