summaryrefslogtreecommitdiff
path: root/Ports/joe
diff options
context:
space:
mode:
authorSnow <i@xkun.me>2022-05-15 11:41:03 +0800
committerAndreas Kling <kling@serenityos.org>2022-05-15 12:14:02 +0200
commita1f19b7a98bc833319e3c4443d62c0778981d12f (patch)
treea119d88e8ab36b9c6776d2cc80aa49e161149fa1 /Ports/joe
parentf8984146bd7e98cefa28ea48f10275096a9ff663 (diff)
downloadserenity-a1f19b7a98bc833319e3c4443d62c0778981d12f.zip
Ports: Add joe's own editor
Diffstat (limited to 'Ports/joe')
-rwxr-xr-xPorts/joe/package.sh10
-rw-r--r--Ports/joe/patches/ReadMe.md14
-rw-r--r--Ports/joe/patches/joe.patch46
3 files changed, 70 insertions, 0 deletions
diff --git a/Ports/joe/package.sh b/Ports/joe/package.sh
new file mode 100755
index 0000000000..8d4326e221
--- /dev/null
+++ b/Ports/joe/package.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env -S bash ../.port_include.sh
+port=joe
+version=4.6
+files="https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-${version}/joe-${version}.tar.gz/download joe-${version}.tar.gz 495a0a61f26404070fe8a719d80406dc7f337623788e445b92a9f6de512ab9de"
+useconfigure="true"
+auth_type=sha256
+configopts=(
+ "--disable-curses"
+ "--disable-termcap"
+)
diff --git a/Ports/joe/patches/ReadMe.md b/Ports/joe/patches/ReadMe.md
new file mode 100644
index 0000000000..1d2ec3688d
--- /dev/null
+++ b/Ports/joe/patches/ReadMe.md
@@ -0,0 +1,14 @@
+# Patches for joe's own editor
+
+## `joe.patch`
+
+Build a curseless joe's own editor, its only dependency is LibC.
+
+- Add serenity to `config.sub`.
+- Some hacks in joe source code to make it work.
+ - Undefine the macro `TERMINFO` in `termcap.c`, or it will lead crash.
+ - Define `__USE_MISC` manually in `checkwidths.c` for `ECHOCTL` and `ECHOKE`,
+ see `Kernel/API/POSIX/termios.h`.
+ - Remove the prefix `sys/`, because serenity does not have the header `fcntl.h`
+ in `/usr/include/sys`.
+
diff --git a/Ports/joe/patches/joe.patch b/Ports/joe/patches/joe.patch
new file mode 100644
index 0000000000..ef8c3d0b20
--- /dev/null
+++ b/Ports/joe/patches/joe.patch
@@ -0,0 +1,46 @@
+diff -u -r joe-4.6/config.sub joe-4.6-patched/config.sub
+--- joe-4.6/config.sub 2018-01-11 00:29:29.000000000 +0800
++++ joe-4.6-patched/config.sub 2022-05-15 11:01:52.017408784 +0800
+@@ -1374,7 +1374,7 @@
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -serenity*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+diff -u -r joe-4.6/joe/termcap.c joe-4.6-patched/joe/termcap.c
+--- joe-4.6/joe/termcap.c 2018-01-11 00:28:34.000000000 +0800
++++ joe-4.6-patched/joe/termcap.c 2022-05-15 11:02:58.185406191 +0800
+@@ -7,6 +7,8 @@
+ */
+ #include "types.h"
+
++#undef TERMINFO // undefine this manually, or it will lead crash
++
+ #ifdef TERMINFO
+
+ #ifdef __CYGWIN__
+diff -u -r joe-4.6/joe/util/checkwidths.c joe-4.6-patched/joe/util/checkwidths.c
+--- joe-4.6/joe/util/checkwidths.c 2018-01-11 00:28:34.000000000 +0800
++++ joe-4.6-patched/joe/util/checkwidths.c 2022-05-15 11:04:04.225403604 +0800
+@@ -5,6 +5,8 @@
+
+ */
+
++#define __USE_MISC // for ECHOCTL and ECHOKE
++
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+@@ -12,7 +14,7 @@
+ #include <arpa/inet.h>
+ #include <stddef.h>
+ #include <poll.h>
+-#include <sys/fcntl.h>
++#include <fcntl.h> // the prefix "sys/" is not needed on serenity
+ #include <termios.h>
+
+ #define TO_CHAR_OK(c) ((char)(c))
+