aboutsummaryrefslogtreecommitdiff
path: root/libexec/rc/rc.d/motd
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/rc/rc.d/motd')
-rwxr-xr-xlibexec/rc/rc.d/motd62
1 files changed, 62 insertions, 0 deletions
diff --git a/libexec/rc/rc.d/motd b/libexec/rc/rc.d/motd
new file mode 100755
index 000000000000..7858aef2c3fe
--- /dev/null
+++ b/libexec/rc/rc.d/motd
@@ -0,0 +1,62 @@
+#!/bin/sh
+#
+#
+
+# PROVIDE: motd
+# REQUIRE: mountcritremote FILESYSTEMS
+# BEFORE: LOGIN
+
+. /etc/rc.subr
+
+name="motd"
+desc="Update /var/run/motd"
+rcvar="update_motd"
+start_cmd="motd_start"
+stop_cmd=":"
+
+COMPAT_MOTD="/etc/motd"
+TARGET="/var/run/motd"
+TEMPLATE="/etc/motd.template"
+PERMS="644"
+
+motd_start()
+{
+ # Update kernel info in /var/run/motd
+ # Must be done *before* interactive logins are possible
+ # to prevent possible race conditions.
+ #
+ startmsg -n 'Updating motd:'
+ if [ ! -f "${TEMPLATE}" ]; then
+ # Create missing template from existing regular motd file, if
+ # one exists.
+ if [ -f "${COMPAT_MOTD}" ]; then
+ sed '1{/^FreeBSD.*/{d;};};' "${COMPAT_MOTD}" > "${TEMPLATE}"
+ chmod $PERMS "${TEMPLATE}"
+ rm -f "${COMPAT_MOTD}"
+ else
+ # Otherwise, create an empty template file.
+ install -c -o root -g wheel -m ${PERMS} /dev/null "${TEMPLATE}"
+ fi
+ fi
+ # Provide compatibility symlink:
+ if [ ! -h "${COMPAT_MOTD}" ]; then
+ ln -sF "${TARGET}" "${COMPAT_MOTD}"
+ fi
+
+ T=`mktemp -t motd`
+ uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\)$,\1 (\3) #\2,' \
+ -e 's,^\([^ ]*\) \([^ ]*\) \([^ ]*\) \([^ ]*\)$,\1 \2 (\4) \3,' > ${T}
+ cat "${TEMPLATE}" >> ${T}
+
+ install -C -o root -g wheel -m "${PERMS}" "$T" "${TARGET}"
+ rm -f "$T"
+
+ startmsg '.'
+}
+
+load_rc_config $name
+
+# doesn't make sense to run in a svcj: config setting
+motd_svcj="NO"
+
+run_rc_command "$1"