diff --git a/go_readrc b/go_readrc
new file mode 100644
index 0000000000000000000000000000000000000000..45717bc2a810c61e6d3a6ac121a8a97b0571162e
--- /dev/null
+++ b/go_readrc
@@ -0,0 +1,180 @@
+#! /bin/sh
+
+# --- init ---
+
+# leave on error
+set -e
+
+
+# --- external ---
+
+basename='/bin/basename'
+test ! -x ${basename}  &&  basename='/usr/bin/basename'
+
+egrep='/bin/egrep'
+test ! -x ${egrep}  &&  egrep='/usr/bin/egrep'
+
+less='/bin/less'
+test ! -x ${less}  &&  less='/usr/bin/less'
+test ! -x ${less}  &&  less='/usr/local/bin/less'
+
+sed='/bin/sed'
+test ! -x ${sed}  &&  sed='/usr/bin/sed'
+
+
+# --- definitions ---
+
+prog=`${basename} $0`
+
+
+# --- help ---
+
+DisplayHelp ()
+{
+${xPAGER:-${less}} << EOF
+$prog                     General Objects 
+
+NAME
+  $prog - read data value from a resource file
+ 
+SYNOPSIS
+  go_readrc <rcfile> <key> [<default>]
+  go_readrc -h|--help
+ 
+DESCRIPTION
+  A recourcefile is a text file with key/data pairs, usefull
+  to initialize programs (scripts, Fortran, etc).
+  The format of the <rcfile> is chosen close to the standard X resources:
+
+    * Comment lines start with '!'
+
+    * A key/data pair has the format:
+        <key> : <value>
+      where the white space (space or tabs) is optional.
+      The <key> consists of letters, numbers, '_', and '.' .
+      
+  Example of a valid rcfile:
+
+    ! Specify an output directory:
+    output.path : d/
+  
+  Given a text <key>, the <rcfile> is scanned for a line starting
+  with this key; all text behind the ':' is written to the standard output. 
+  Example of usage in sh script:
+  
+    output_root=\`go_readrc test.rc output.path\`
+    
+  If the <key> is not found, an error message is issued,
+  unless a <default> is supplied which is then written to standard output.
+  The <default> might be an empty string, e.g. '' .
+  
+PREPROCESSING
+  The rcfile might be preprocessed by go_pprc,
+  to expand environment variables.
+    
+EXIT STATUS
+  Non zero in case of any error.
+  
+SEE ALSO
+  X, go_pprc
+  
+AUTHOR
+  Arjo Segers
+EOF
+exit 0
+}
+
+ErrorMessage ()
+{
+  echo "ERROR in $prog: $1" 1>&2
+  echo "  Use '$prog -h' for information." 1>&2
+  exit 1
+}
+
+# --- arguments ---
+
+rcfile=''
+rckey=''
+with_default=''
+
+while [ $# -gt 0 ]; do
+  case "$1" in
+    -h | --help )
+      DisplayHelp
+      ;;
+    -* )
+      ErrorMessage "unknown option '$1' ..."
+      ;;
+    * )
+      if [ -z "${rcfile}" ]; then
+        rcfile="$1"
+      elif [ -z "${rckey}" ]; then
+        rckey="$1"
+      elif [ -z "${with_default}" ]; then
+        default="$1"
+        with_default='true'
+      else
+        ErrorMessage "unknown argument '$1'"
+      fi
+      ;;
+  esac
+  shift
+done
+
+if [ -z "${rcfile}" -o -z "${rckey}" ]; then
+  ErrorMessage "missing arguments"
+fi
+
+# --- begin ---
+
+# does the rcfile exist?
+if [ ! -f ${rcfile} ]; then
+  ErrorMessage "rcfile '${rcfile}' does not exist ..."
+fi
+
+# replace '.' in the rckey by '\.'
+rckeydots=`echo ${rckey} | ${sed} -e 's/\./\\\\./g'`
+
+# 10 Apr 06: Andy Jacobson
+#   [[:space:]] indicates a space or tab character
+#wspace='[[:space:]]*'
+#
+# 26 Apr 06: Arjo Segers
+# The egrep on SGI system does not support the '[:space:]' ;
+# use a real tab character instead ...
+tab='	'
+wspace="[ ${tab}]*"
+
+# A key-data line has the following synopsis:
+#
+#    <begin-of-line><key>[<wspace>]:[<wspace>]<data>
+#
+# where <wspace> denote tabs or spaces.
+# Set regular expression for such a line except the <data> part;
+# this expression is used to search for a key and to extract
+# the data part:
+#
+re="^${rckeydots}${wspace}:${wspace}"
+
+# set grep command to select matching lines:
+selectlinecmd="${egrep} '${re}' ${rcfile}"
+
+# count number of hits; should be exactely 1 ...
+nfound=`eval "${selectlinecmd}" | /usr/bin/wc -l`
+if [ ${nfound} -eq 0 ]; then
+  if [ -z "${with_default}" ]; then
+    ErrorMessage "key '${rckey}' not found in ${rcfile} and no default specified ..."
+  else
+    echo "${default}"
+    exit 0
+  fi
+elif [ ${nfound} -gt 1 ]; then
+  ErrorMessage "key '${rckey}' found ${nfound} times in $rcfile ..."
+fi
+
+# extract the data part for this key;
+# substitute an empty string for the 'key : ' part;
+# remove trailing blanks;
+# output is written to standard output:
+eval "${selectlinecmd}" | ${sed} -e "s/${re}//" -e "s/${wspace}$//"
+