summaryrefslogtreecommitdiff
path: root/ports/ed
diff options
context:
space:
mode:
Diffstat (limited to 'ports/ed')
-rw-r--r--ports/ed67
1 files changed, 67 insertions, 0 deletions
diff --git a/ports/ed b/ports/ed
new file mode 100644
index 0000000..87dd05c
--- /dev/null
+++ b/ports/ed
@@ -0,0 +1,67 @@
+set -eu
+camellia_path_check
+
+fetch() {
+ # TODO shallow clone, once 7.1 gets tagged
+ # better yet, use a tarball
+ git clone https://github.com/ibara/oed
+ cd oed
+ git -c advice.detachedHead=false checkout fc1497fa466ff10c7437f07a00ba888242618ce5
+}
+
+configure() {
+ cd oed
+ cat <<\EOF > Makefile
+# This Makefile automatically generated by configure.
+
+CC = cc
+CFLAGS = -g -O2 -I. -D_GNU_SOURCE
+
+PREFIX = /usr/local
+MANDIR = /usr/local/man
+
+PROG = ed
+OBJS = buf.o glbl.o io.o main.o re.o sub.o undo.o \
+ regcomp.o regerror.o regexec.o regfree.o \
+ reallocarray.o strlcat.o strlcpy.o
+
+all: ${PROG}
+
+${PROG}: ${OBJS}
+ ${CC} ${LDFLAGS} -o ${PROG} ${OBJS}
+
+install:
+ install -d ${DESTDIR}${PREFIX}/bin
+ install -d ${DESTDIR}${MANDIR}/man1
+ install -c -s -m 755 ${PROG} ${DESTDIR}${PREFIX}/bin
+ install -c -m 644 ed.1 ${DESTDIR}${MANDIR}/man1/${PROG}.1
+
+test:
+ @echo "No tests"
+
+clean:
+ rm -f ${PROG} ${OBJS}
+
+distclean: clean
+ rm -f Makefile config.h
+EOF
+ cat <<\EOF > config.h
+/* This file automatically generated by configure. */
+
+extern void *reallocarray(void *, size_t, size_t);
+extern size_t strlcat(char *, const char *, size_t);
+extern size_t strlcpy(char *, const char *, size_t);
+EOF
+}
+
+prep() {
+ [ -d oed ] || (fetch)
+ [ -e oed/Makefile ] || (configure)
+ cd oed
+}
+
+case $1 in
+ install) (prep; make; make install "PREFIX=$PREFIX" "MANDIR=$PREFIX/man/") ;;
+ clean) (prep; make clean) ;;
+ *) echo "usage: $0 install|clean"; false ;;
+esac