* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2015-01-09 17:17 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2015-01-09 17:17 UTC (permalink / raw
To: gentoo-commits
commit: a3444e9abf16ecb6145e95a891433b3a79800170
Author: Rabi Shanker Guha <guha.rabishankar <AT> gmail <DOT> com>
AuthorDate: Fri Jan 9 15:02:28 2015 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Fri Jan 9 15:02:28 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/netifrc.git;a=commit;h=a3444e9a
Compatibility layer for multiple init systems
---
sh/functions.sh | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 126 insertions(+)
diff --git a/sh/functions.sh b/sh/functions.sh
new file mode 100644
index 0000000..368bb73
--- /dev/null
+++ b/sh/functions.sh
@@ -0,0 +1,126 @@
+# Compatibility layer for netifrc to work with multiple init
+# systems.
+
+# First check whether e* commands are present in the environment
+# XXX [[-n RC_GOT_FUNCTIONS]] ??
+if [ -n "$(command -v ebegin >/dev/null 2>&1)" ]; then
+ :
+
+# Then check for the presence of functions.sh
+elif [ -f /lib/gentoo/functions.sh ]; then
+ . /lib/gentoo/functions.sh
+
+else
+ echo "/lib/gentoo/functions.sh not found. Exiting"
+ exit -1
+fi
+
+# runscript functions
+if [ -z "$(command -v service_set_value >/dev/null 2>&1)" ]; then
+
+ # OpenRC functions used in depend
+ after() {
+ :
+ }
+ before() {
+ :
+ }
+ program() {
+ :
+ }
+ need() {
+ :
+ }
+
+ shell_var() {
+ local output=$1 sanitized_arg=
+ shift 1
+ for arg; do
+ sanitized_arg="${arg//[^a-zA-Z0-9_]/_}"
+ output="$output $arg"
+ done
+ echo "$output"
+ }
+
+ net_fs_list="afs ceph cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre ncpfs nfs nfs4 ocfs2 shfs smbfs"
+ is_net_fs()
+ {
+ [ -z "$1" ] && return 1
+
+ local fs=$(mount | grep " on $1 " | cut -f 5 -d ' ')
+ for x in $fs; do
+ for y in $net_fs_list; do
+ [ "$x" = "$y" ] && return 0
+ done
+ done
+ return 1
+ }
+
+ service_set_value() {
+ local OPTION="$1" VALUE="$2"
+ if [ -z "$OPTION" ]; then
+ eerror "service_set_value requires parameter KEY"
+ return
+ fi
+ local file="$OPTIONSDIR/${OPTION}"
+ echo "$VALUE" > $file
+ }
+ service_get_value() {
+ local OPTION="$1"
+ if [ -z "$OPTION" ]; then
+ eerror "service_get_value requires parameter KEY"
+ return
+ fi
+ local file="$OPTIONSDIR/${OPTION}"
+ cat $file 2>/dev/null
+ }
+ STATEFILE="${STATEDIR}/state"
+ # Internal Function
+ # Stores the state of netifrc in ${SVCDIR}/${SVCNAME}/state file
+ _mark_service() {
+ local state=$1
+ echo $state > $STATEFILE
+ }
+ #Internal Function
+ # Checks whether the state of netifrc is same as $1
+ _service_state() {
+ state=$(cat $STATEFILE 2>/dev/null)
+ if [ state = $1 ]; then
+ return 1
+ fi
+ return 0
+ }
+
+ mark_service_started() {
+ _mark_service started
+ }
+ mark_service_inactive() {
+ _mark_service inactive
+ }
+ mark_service_stopped() {
+ _mark_service stopped
+ }
+ service_started() {
+ _service_state started
+ return $?
+ }
+ service_inactive() {
+ _service_state inactive
+ return $?
+ }
+fi
+
+# Extracts the interface for the current invocation
+get_interface() {
+ case $INIT in
+ openrc)
+ printf ${RC_SVCNAME#*.};;
+ systemd)
+ printf ${RC_IFACE};;
+ *)
+ eerror "Init system not supported. Aborting"
+ exit -1;;
+ esac
+}
+
+# vim: ts=4 sw=4 noexpandtab
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2015-01-09 17:17 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2015-01-09 17:17 UTC (permalink / raw
To: gentoo-commits
commit: 55f4303617ecd81f8729e8f45a64d14a4a0df41b
Author: Rabi Shanker Guha <guha.rabishankar <AT> gmail <DOT> com>
AuthorDate: Fri Jan 9 15:06:25 2015 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Fri Jan 9 15:06:25 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/netifrc.git;a=commit;h=55f43036
Systemd Wrapper: to be called from unit file
---
sh/systemd-wrapper.sh.in | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 91 insertions(+)
diff --git a/sh/systemd-wrapper.sh.in b/sh/systemd-wrapper.sh.in
new file mode 100644
index 0000000..d931200
--- /dev/null
+++ b/sh/systemd-wrapper.sh.in
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+CONFDIR="@CONFDIR@"
+LIBEXECDIR="@LIBEXECDIR@/sh"
+INITDIR="@INITDIR@"
+INIT=systemd
+
+usage() {
+ echo "netifrc systemd wrapper"
+ echo "Usage:"
+ echo " systemd-wrapper.sh -i <interface> <command>"
+ echo " where command is start|stop"
+}
+
+die() {
+ echo "$@"
+ exit -1
+}
+
+while getopts "i:" opt; do
+ case $opt in
+ i)
+ RC_IFACE=$OPTARG;;
+ esac
+done
+shift $((OPTIND -1))
+
+[ -z "$RC_IFACE" ] && die "Missing Parameter Interface"
+
+RC_SVCPREFIX="net"
+RC_SVCNAME="$RC_SVCPREFIX"."$RC_IFACE"
+RC_UNAME=$(uname)
+# XXX Find out the systemd way of doing this
+RC_GOINGDOWN=no
+
+# In Openrc systems this has value /run/openrc
+SVCDIR="/run/netifrc"
+# OpenRC saves values in $SVCDIR/options/$SVCNAME/$OPTION
+# In non OpenRC setting this is saved in /run/netifrc/options/$SVCNAME/$OPTION
+OPTIONSDIR="${SVCDIR}/options/${RC_SVCNAME}"
+STATEDIR="${SVCDIR}/${RC_SVCNAME}"
+
+# Source the config file
+if [ -f "$CONFDIR/$RC_SVCPREFIX" ]; then
+ . "$CONFDIR/$RC_SVCPREFIX"
+fi
+
+# Source the actual runscript
+if [ -f "$INITDIR/${RC_SVCPREFIX}.lo" ]; then
+ . "$INITDIR/${RC_SVCPREFIX}.lo"
+else
+ echo "$INITDIR/${RC_SVCPREFIX}.lo : Init file missing or invalid path"
+ exit -1
+fi
+
+netifrc_init() {
+ # Ensure OPTIONSDIR is present and writeable
+ mkdir -p "$OPTIONSDIR"
+ if [ ! -w "$OPTIONSDIR" ]; then
+ eerror "${OPTIONSDIR} does not exist or is not writeable"
+ exit -1;
+ fi
+ # Ensure STATEDIR is present and writeable
+ mkdir -p "$STATEDIR"
+ if [ ! -w "$STATEDIR" ]; then
+ eerror "${STATEDIR} does not exist or is not writeable"
+ exit -1;
+ fi
+}
+
+netifrc_cleanup() {
+ # Delete all the saved values
+ rm -f ${OPTIONSDIR}/*
+}
+
+rc=0
+case $1 in
+ start)
+ netifrc_init
+ start
+ rc=$?;;
+ stop)
+ stop
+ netifrc_cleanup
+ rc=$?;;
+ *)
+ die "Unrecognised command $1";;
+esac
+exit $rc
+
+# vi: ts=4 sw=4 noexpandtab
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2015-01-16 18:16 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2015-01-16 18:16 UTC (permalink / raw
To: gentoo-commits
commit: 0dd6367068b46c1cc0b5f83d2716d9cfd2a076ec
Author: Doug Freed <dwfreed <AT> mtu <DOT> edu>
AuthorDate: Fri Jan 16 04:44:53 2015 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Fri Jan 16 04:44:53 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/netifrc.git;a=commit;h=0dd63670
functions.sh: fix check for OpenRC
Fix the check for OpenRC so that it actually matches whether it's
running under OpenRC.
Reported-By: Patrick McLean <chutzpah <AT> gentoo.org>
---
sh/functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sh/functions.sh b/sh/functions.sh
index 368bb73..e209701 100644
--- a/sh/functions.sh
+++ b/sh/functions.sh
@@ -16,7 +16,7 @@ else
fi
# runscript functions
-if [ -z "$(command -v service_set_value >/dev/null 2>&1)" ]; then
+if [ "$INIT" != "openrc" ]; then
# OpenRC functions used in depend
after() {
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2015-01-16 18:16 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2015-01-16 18:16 UTC (permalink / raw
To: gentoo-commits
commit: 8ac4bdbd7b752c6a0805559d4644824d1f5c9603
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 16 18:15:59 2015 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Fri Jan 16 18:15:59 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/netifrc.git;a=commit;h=8ac4bdbd
Speed up testing for e* commands.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
---
sh/functions.sh | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sh/functions.sh b/sh/functions.sh
index e209701..d907585 100644
--- a/sh/functions.sh
+++ b/sh/functions.sh
@@ -2,8 +2,7 @@
# systems.
# First check whether e* commands are present in the environment
-# XXX [[-n RC_GOT_FUNCTIONS]] ??
-if [ -n "$(command -v ebegin >/dev/null 2>&1)" ]; then
+if [ x$RC_GOT_FUNCTIONS = xyes -o -n "$(command -v ebegin 2>/dev/null)" ]; then
:
# Then check for the presence of functions.sh
@@ -16,6 +15,8 @@ else
fi
# runscript functions
+# TODO: if another non-openrc system provides these in future, we have to
+# change this structure.
if [ "$INIT" != "openrc" ]; then
# OpenRC functions used in depend
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2015-01-22 23:01 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2015-01-22 23:01 UTC (permalink / raw
To: gentoo-commits
commit: 4f303b048743f494a79916a0a30ecb3b027164b7
Author: Guillaume Castagnino <gcastagnino <AT> denyall <DOT> com>
AuthorDate: Fri Jan 16 11:57:15 2015 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Fri Jan 16 11:58:02 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/netifrc.git;a=commit;h=4f303b04
fix https://bugs.gentoo.org/show_bug.cgi?id=536758
The shill version of shell_var is not correctly escaping vars
---
sh/functions.sh | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/sh/functions.sh b/sh/functions.sh
index 368bb73..d82d72a 100644
--- a/sh/functions.sh
+++ b/sh/functions.sh
@@ -33,11 +33,14 @@ if [ -z "$(command -v service_set_value >/dev/null 2>&1)" ]; then
}
shell_var() {
- local output=$1 sanitized_arg=
- shift 1
+ local output= sanitized_arg=
for arg; do
sanitized_arg="${arg//[^a-zA-Z0-9_]/_}"
- output="$output $arg"
+ if [ x"$output" = x"" ] ; then
+ output=$sanitized_arg
+ else
+ output="$output $sanitized_arg"
+ fi
done
echo "$output"
}
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2016-07-19 19:59 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2016-07-19 19:59 UTC (permalink / raw
To: gentoo-commits
commit: 8fd33af8b58bb3e8f17e55a06ade170214c0edbc
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 14 19:30:00 2016 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Thu Jul 14 19:30:00 2016 +0000
URL: https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=8fd33af8
gitignore: systemd-wrapper.sh is built.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
sh/.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/sh/.gitignore b/sh/.gitignore
index 80e488d..3127df6 100644
--- a/sh/.gitignore
+++ b/sh/.gitignore
@@ -1,3 +1,4 @@
ifwatchd-carrier.sh
ifwatchd-nocarrier.sh
+systemd-wrapper.sh
udhcpc-hook.sh
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2016-10-24 22:26 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2016-10-24 22:26 UTC (permalink / raw
To: gentoo-commits
commit: 8a92e2a697c2f250e39917442a365f8e666da3fb
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 24 22:25:08 2016 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Mon Oct 24 22:25:08 2016 +0000
URL: https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=8a92e2a6
sh/udhcpc-hook.sh: classless static routes
Support RFC3442 (DHCP classless static routes).
Thanks to Jack Suter <gentoo-bugs <AT> suter.io>.
X-Gentoo-Bug: 524156
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=524156
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
sh/udhcpc-hook.sh.in | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/sh/udhcpc-hook.sh.in b/sh/udhcpc-hook.sh.in
index 0744a04..c756061 100644
--- a/sh/udhcpc-hook.sh.in
+++ b/sh/udhcpc-hook.sh.in
@@ -61,11 +61,35 @@ update_interface()
ifconfig "${interface}" ${ip} ${broadcast} ${netmask} ${mtu}
}
+update_classless_routes()
+{
+ if [ -n "${staticroutes}" ] ; then
+ max_routes=128
+ metric=
+ [ -n "${IF_METRIC}" ] && metric="metric ${IF_METRIC}"
+ while [ -n "$1" -a -n "$2" -a $max_routes -gt 0 ]; do
+ gw_arg=
+ if [ "$2" != '0.0.0.0' ]; then
+ gw_arg="gw $2"
+ fi
+
+ [ ${1##*/} -eq 32 ] && type=host || type=net
+ route add -$type "$1" ${gw_arg} ${metric} dev "${interface}"
+ max=$(($max-1))
+ shift 2
+ done
+ fi
+}
update_routes()
{
peer_var "${PEER_ROUTERS}" && return
- if [ -n "${router}" ] ; then
+ # RFC 3442
+ [ -n "${staticroutes}" ] && update_classless_routes $staticroutes
+
+ # If the DHCP server returns both a Classless Static Routes option and
+ # a Router option, the DHCP client MUST ignore the Router option.
+ if [ -n "${router}" -a -z "${staticroutes}" ] ; then
metric=
[ -n "${IF_METRIC}" ] && metric="metric ${IF_METRIC}"
for i in ${router} ; do
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2019-04-21 4:17 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2019-04-21 4:17 UTC (permalink / raw
To: gentoo-commits
commit: 1076ace3242611cb6d125f3d18700d363e16be57
Author: Martin Väth <martin <AT> mvath <DOT> de>
AuthorDate: Fri Aug 17 11:11:45 2018 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Sun Apr 21 04:15:51 2019 +0000
URL: https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=1076ace3
sh/functions.sh: Avoid bashisms in shell_var()
POSIX shells do not provide a substitution operation ${..//..}
Negated character classes are marked by [!..] and not [^..] in POSIX.
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
sh/functions.sh | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/sh/functions.sh b/sh/functions.sh
index 5895a90..832e58e 100644
--- a/sh/functions.sh
+++ b/sh/functions.sh
@@ -36,7 +36,15 @@ if [ "$INIT" != "openrc" ]; then
shell_var() {
local output= sanitized_arg=
for arg; do
- sanitized_arg="${arg//[^a-zA-Z0-9_]/_}"
+ sanitized_arg=$arg
+ while :; do
+ case $sanitized_arg in
+ *[!a-zA-Z0-9_]*)
+ sanitized_arg=${sanitized_arg%%[!a-zA-Z0-9_]*}_${sanitized_arg#*[!a-zA-Z0-9_]}
+ continue;;
+ esac
+ break
+ done
if [ x"$output" = x"" ] ; then
output=$sanitized_arg
else
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2019-04-21 5:34 Robin H. Johnson
0 siblings, 0 replies; 10+ messages in thread
From: Robin H. Johnson @ 2019-04-21 5:34 UTC (permalink / raw
To: gentoo-commits
commit: b862d25a8ad39d79fdb4564447f1bb8cd33cb6bf
Author: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 21 05:17:25 2019 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Sun Apr 21 05:17:25 2019 +0000
URL: https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=b862d25a
sh/udhcpc-hook.sh: shellcheck fixes
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
sh/udhcpc-hook.sh.in | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sh/udhcpc-hook.sh.in b/sh/udhcpc-hook.sh.in
index 13ea336..e4300c1 100644
--- a/sh/udhcpc-hook.sh.in
+++ b/sh/udhcpc-hook.sh.in
@@ -68,7 +68,7 @@ update_classless_routes()
max_routes=128
metric=
[ -n "${IF_METRIC}" ] && metric="metric ${IF_METRIC}"
- while [ -n "$1" -a -n "$2" -a $max_routes -gt 0 ]; do
+ while [ -n "$1" ] && [ -n "$2" ] && [ $max_routes -gt 0 ]; do
gw_arg=
if [ "$2" != '0.0.0.0' ]; then
gw_arg="gw $2"
@@ -76,7 +76,7 @@ update_classless_routes()
[ ${1##*/} -eq 32 ] && type=host || type=net
route add -$type "$1" ${gw_arg} ${metric} dev "${interface}"
- max=$(($max-1))
+ max=$((max-1))
shift 2
done
fi
@@ -90,7 +90,7 @@ update_routes()
# If the DHCP server returns both a Classless Static Routes option and
# a Router option, the DHCP client MUST ignore the Router option.
- if [ -n "${router}" -a -z "${staticroutes}" ] ; then
+ if [ -n "${router}" ] && [ -z "${staticroutes}" ] ; then
metric=
[ -n "${IF_METRIC}" ] && metric="metric ${IF_METRIC}"
for i in ${router} ; do
@@ -115,6 +115,7 @@ deconfig()
}
if [ -r "/run/udhcpc-${interface}.conf" ]; then
+ # shellcheck disable=SC1090
. "/run/udhcpc-${interface}.conf"
fi
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] proj/netifrc:master commit in: sh/
@ 2021-03-25 0:45 Patrick McLean
0 siblings, 0 replies; 10+ messages in thread
From: Patrick McLean @ 2021-03-25 0:45 UTC (permalink / raw
To: gentoo-commits
commit: 7ff5d213660e5df80aba8782e5cfe4373416ed86
Author: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 25 00:42:40 2021 +0000
Commit: Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Thu Mar 25 00:45:41 2021 +0000
URL: https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=7ff5d213
functions.sh: Fix non-netns case for ip command
Attempt to wrap ip commands with a netns would fail sometimes when
there is no netns defined. This fixes to not use the variable when
it is not needed.
Signed-off-by: Patrick McLean <chutzpah <AT> gentoo.org>
sh/functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sh/functions.sh b/sh/functions.sh
index d4a514b..96df289 100644
--- a/sh/functions.sh
+++ b/sh/functions.sh
@@ -164,7 +164,7 @@ _netns()
case "${1}" in
ip)
shift
- "${ip}" "${@}"
+ ip "${@}"
;;
glob)
shift
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-03-25 0:45 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-09 17:17 [gentoo-commits] proj/netifrc:master commit in: sh/ Robin H. Johnson
-- strict thread matches above, loose matches on Subject: below --
2021-03-25 0:45 Patrick McLean
2019-04-21 5:34 Robin H. Johnson
2019-04-21 4:17 Robin H. Johnson
2016-10-24 22:26 Robin H. Johnson
2016-07-19 19:59 Robin H. Johnson
2015-01-22 23:01 Robin H. Johnson
2015-01-16 18:16 Robin H. Johnson
2015-01-16 18:16 Robin H. Johnson
2015-01-09 17:17 Robin H. Johnson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox