summaryrefslogtreecommitdiffstats
path: root/strings.sh
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-06 14:13:47 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-06 14:13:47 +0000
commitbc942b21e65675353944cc575b047c6a80080195 (patch)
tree1b072ecd73ada8d8dda604f7c050fe83b272dabd /strings.sh
parentc0584f0a6b55bd89fdb730f06598436ff3b2c184 (diff)
downloadmandoc-bc942b21e65675353944cc575b047c6a80080195.tar.gz
Strings abstracted into dynamically-created C files.
Added -V option. Deprecated README files.
Diffstat (limited to 'strings.sh')
-rw-r--r--strings.sh83
1 files changed, 83 insertions, 0 deletions
diff --git a/strings.sh b/strings.sh
new file mode 100644
index 00000000..3f179c10
--- /dev/null
+++ b/strings.sh
@@ -0,0 +1,83 @@
+#! /bin/sh
+# $Id$
+
+# strings.sh [-o output] name input
+#
+# Generate the file of strings. This will contain the following
+# function:
+#
+# const char *
+# mdoc_a2NAME(const char *);
+#
+# The input file must be tab-delimited as follows:
+#
+# attnam0 A longer description
+# attnam1 Another longer description
+
+input=
+output=
+args=`getopt o: $*`
+
+if [ $? -ne 0 ]; then
+ echo "usage: $0 [-o output] name input" 1>&2
+ exit 1
+fi
+
+set -- $args
+
+while [ $# -ge 0 ]
+do
+ case "$1" in
+ -o)
+ output="$2" ; shift; shift ;;
+ --)
+ shift ; break ;;
+ esac
+done
+
+name=$1
+
+if [ -z "$name" ]; then
+ echo "usage: $0 [-o output] name input" 1>&2
+ exit 1
+fi
+
+input=$2
+
+if [ "$output" ]; then
+ exec 1<>$output
+fi
+
+if [ "$input" ]; then
+ exec 0<>$input
+fi
+
+cat <<!
+/*
+ * DO NOT EDIT! Automatically generated by $0.
+ */
+#include <stdlib.h>
+
+#include "private.h"
+
+const char *
+mdoc_a2${name}(const char *p)
+{
+
+!
+
+while read in ; do
+ key=`printf "%s\n" "$in" | cut -f 1`
+ val=`printf "%s\n" "$in" | cut -f 2- | sed 's!^[ ]*!!'`
+ cat <<!
+ if (xstrcmp(p, "$key"))
+ return("$val");
+!
+done
+
+cat <<!
+
+ /* No keys found. */
+ return(NULL);
+}
+!