]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/scripts/readhash
git-svn-id: http://svn.ipfire.org/svn/ipfire/IPFire/source@16 ea5c0bd1-69bd-2848...
[ipfire-2.x.git] / src / scripts / readhash
diff --git a/src/scripts/readhash b/src/scripts/readhash
new file mode 100644 (file)
index 0000000..b3428d4
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# This script reads in variables from a config file, and produces a list of
+# commands to run to set these as shell environment variables, it is
+# intended to be used as follows:
+#
+#   eval $(readhash /var/ipcop/main/settings)
+#
+
+# shell variables must consist of alphanumeric characters and underscores,
+# and begin with an alphabetic character or underscore.
+VARNAME='[A-Za-z_][A-zA-z0-9_]*'
+
+# For the assigned value we only accept a limited number of characters - none
+# of which are shell metachars
+VARCHARS='A-Za-z0-9=/,._@#+-'
+VARVAL="[${VARCHARS}]*"
+
+sed -ne "s/^\(${VARNAME}\)=\(${VARVAL}\)$/\1=\2/p" $1
+
+# Accept space only if it's quoted
+sed -ne "s/^\(${VARNAME}\)=\('[ ${VARCHARS}]*'\)$/\1=\2/p" $1