diff --git a/patches/rc-1.7.4.local.patch b/patches/rc-1.7.4.local.patch
new file mode 100644
index 0000000..ff0a5f6
--- /dev/null
+++ b/patches/rc-1.7.4.local.patch
@@ -0,0 +1,108 @@
+diff -Nru rc-1.7.4.orig/Makefile.in rc-1.7.4/Makefile.in
+--- rc-1.7.4.orig/Makefile.in	2015-05-13 23:26:18.000000000 +0200
++++ rc-1.7.4/Makefile.in	2018-05-21 14:01:54.782421179 +0200
+@@ -920,14 +920,14 @@
+ 
+ 
+ sigmsgs.c sigmsgs.h: mksignal
+-	./mksignal
++	echo sigmsgs.c
+ 
+ # Newer automake's buildtime dependency tracking can't seem to figure
+ # this one out.
+ status.o: statval.h
+ 
+ statval.h: mkstatval
+-	./mkstatval > statval.h
++	echo statval.h
+ 
+ # Of course, parse.c and parse.h depend on parse.y.  However, unless
+ # you're hacking on rc's grammar, it's not useful to have this
+diff -Nru rc-1.7.4.orig/sigmsgs.c rc-1.7.4/sigmsgs.c
+--- rc-1.7.4.orig/sigmsgs.c	1970-01-01 01:00:00.000000000 +0100
++++ rc-1.7.4/sigmsgs.c	2018-05-21 13:56:36.000000000 +0200
+@@ -0,0 +1,69 @@
++#include "sigmsgs.h"
++
++Sigmsgs signals[] = {
++	{"",	""},
++	{"sighup",	"hangup"},
++	{"sigint",	""},
++	{"sigquit",	"quit"},
++	{"sigill",	"illegal instruction"},
++	{"sigtrap",	"trace trap"},
++	{"sigabrt",	"abort"},
++	{"sigbus",	"bus error"},
++	{"sigfpe",	"floating point error"},
++	{"sigkill",	"killed"},
++	{"sigusr1",	"user defined signal 1"},
++	{"sigsegv",	"segmentation violation"},
++	{"sigusr2",	"user defined signal 2"},
++	{"sigpipe",	""},
++	{"sigalrm",	"alarm clock"},
++	{"sigterm",	"terminated"},
++	{"sigstkflt",	"stack fault"},
++	{"sigchld",	"child stop or exit"},
++	{"sigcont",	"continue"},
++	{"sigstop",	"stopped by program"},
++	{"sigtstp",	"stopped"},
++	{"sigttin",	"background tty read"},
++	{"sigttou",	"background tty write"},
++	{"sigurg",	"urgent condition on i/o channel"},
++	{"sigxcpu",	"exceeded cpu time limit"},
++	{"sigxfsz",	"exceeded file size limit"},
++	{"sigvtalrm",	"virtual timer alarm"},
++	{"sigprof",	"profiling timer alarm"},
++	{"sigwinch",	"window size change"},
++	{"sigio",	"socket i/o possible"},
++	{"sigpwr",	"power-fail restart"},
++	{"sigsys",	"invalid argument to system call"},
++	{"sigunknown32",	"unknown signal 32"},
++	{"sigunknown33",	"unknown signal 33"},
++	{"sigunknown34",	"unknown signal 34"},
++	{"sigunknown35",	"unknown signal 35"},
++	{"sigunknown36",	"unknown signal 36"},
++	{"sigunknown37",	"unknown signal 37"},
++	{"sigunknown38",	"unknown signal 38"},
++	{"sigunknown39",	"unknown signal 39"},
++	{"sigunknown40",	"unknown signal 40"},
++	{"sigunknown41",	"unknown signal 41"},
++	{"sigunknown42",	"unknown signal 42"},
++	{"sigunknown43",	"unknown signal 43"},
++	{"sigunknown44",	"unknown signal 44"},
++	{"sigunknown45",	"unknown signal 45"},
++	{"sigunknown46",	"unknown signal 46"},
++	{"sigunknown47",	"unknown signal 47"},
++	{"sigunknown48",	"unknown signal 48"},
++	{"sigunknown49",	"unknown signal 49"},
++	{"sigunknown50",	"unknown signal 50"},
++	{"sigunknown51",	"unknown signal 51"},
++	{"sigunknown52",	"unknown signal 52"},
++	{"sigunknown53",	"unknown signal 53"},
++	{"sigunknown54",	"unknown signal 54"},
++	{"sigunknown55",	"unknown signal 55"},
++	{"sigunknown56",	"unknown signal 56"},
++	{"sigunknown57",	"unknown signal 57"},
++	{"sigunknown58",	"unknown signal 58"},
++	{"sigunknown59",	"unknown signal 59"},
++	{"sigunknown60",	"unknown signal 60"},
++	{"sigunknown61",	"unknown signal 61"},
++	{"sigunknown62",	"unknown signal 62"},
++	{"sigunknown63",	"unknown signal 63"},
++	{"sigunknown64",	"unknown signal 64"},
++};
+diff -Nru rc-1.7.4.orig/sigmsgs.h rc-1.7.4/sigmsgs.h
+--- rc-1.7.4.orig/sigmsgs.h	1970-01-01 01:00:00.000000000 +0100
++++ rc-1.7.4/sigmsgs.h	2018-05-21 13:56:36.000000000 +0200
+@@ -0,0 +1,5 @@
++typedef struct {
++	char *name, *msg;
++} Sigmsgs;
++extern Sigmsgs signals[];
++#define NUMOFSIGNALS 65
+diff -Nru rc-1.7.4.orig/statval.h rc-1.7.4/statval.h
+--- rc-1.7.4.orig/statval.h	1970-01-01 01:00:00.000000000 +0100
++++ rc-1.7.4/statval.h	2018-05-21 13:56:42.000000000 +0200
+@@ -0,0 +1,2 @@
++#define STATUS0 0
++#define STATUS1 256
diff --git a/vars/build.vars b/vars/build.vars
index 579a807..338a079 100644
--- a/vars/build.vars
+++ b/vars/build.vars
@@ -814,7 +814,7 @@ DEV_PACKAGES_PYTHON="${PREFIX}/bin/python";
 # Packages list native_packages_cmdline
 NATIVE_PACKAGES_CMDLINE_PACKAGES="
 bash bc busybox coreutils dash datamash dos2unix ed figlet findutils gawk grep mksh
-ksh_openbsd sbase sed tar tcsh the_silver_searcher toilet ubase which zsh";
+ksh_openbsd rc sbase sed tar tcsh the_silver_searcher toilet ubase which zsh";
 : ${PKG_BASH_SHA256SUM:=d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb};
 : ${PKG_BASH_VERSION:=4.4};
 : ${PKG_BASH_URL:=https://ftp.gnu.org/gnu/bash/bash-${PKG_BASH_VERSION}.tar.gz};
@@ -877,6 +877,11 @@ ksh_openbsd sbase sed tar tcsh the_silver_searcher toilet ubase which zsh";
 : ${PKG_KSH_OPENBSD_ENV_VARS_EXTRA:="LDADD=-L${PREFIX_NATIVE}/lib"};
 : ${PKG_KSH_OPENBSD_SUBDIR:=ksh-openbsd-${PKG_KSH_OPENBSD_VERSION}};
 : ${PKG_KSH_OPENBSD_BUILD_DIR:=ksh-openbsd-${PKG_KSH_OPENBSD_VERSION}};
+: ${PKG_RC_SHA256SUM:=5ed26334dd0c1a616248b15ad7c90ca678ae3066fa02c5ddd0e6936f9af9bfd8};
+: ${PKG_RC_VERSION:=1.7.4};
+: ${PKG_RC_URL:=http://static.tobold.org/rc/rc-${PKG_RC_VERSION}.tar.gz};
+: ${PKG_RC_CONFIGURE_ARGS_EXTRA:=--with-edit=readline};
+: ${PKG_RC_IN_TREE=1};
 : ${PKG_SBASE_URLS_GIT:="sbase=http://git.suckless.org/sbase@master"};
 : ${PKG_SBASE_DESTDIR:=destdir/suckless};
 : ${PKG_SBASE_IN_TREE:=1};
diff --git a/vars/rc.vars b/vars/rc.vars
new file mode 100644
index 0000000..1eca08f
--- /dev/null
+++ b/vars/rc.vars
@@ -0,0 +1,10 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+: ${PKG_RC_CONFIG_CACHE_EXTRA:="
+rc_cv_sysv_sigcld=no
+ac_cv_func_setpgrp_void=yes
+rc_cv_sys_dev_fd=yes"};
+
+# vim:filetype=sh