-#!/bin/bash
+#!/bin/sh
#
# Parse the object names out of Nagios' xdata/xodtemplate.h, and
# convert them to their definition format.
EXIT_USAGE=1
EXIT_INPUT_FILE_DOESNT_EXIST=2
-EXIT_OUTPUT_FILE_EXISTS=3
-if [ $# -lt 2 ]; then
- echo "Usage: $0 <input_file> <output_file>"
+if [ $# -lt 1 ]; then
+ echo "Usage: $0 <input_file>"
exit $EXIT_USAGE
fi
INFILE="$1"
-OUTFILE="$2"
if [ ! -f "$INFILE" ]; then
echo "Error: input file $INFILE doesn't exist."
exit $EXIT_INPUT_FILE_DOESNT_EXIST
fi
-if [ -f "$OUTFILE" ]; then
- echo "Error: output file $OUTFILE already exists."
- exit $EXIT_OUTPUT_FILE_EXISTS
-fi
-
-# Common options. Color screws up the output.
-GREP="grep --extended-regexp --color=never"
-
-# Grep grabs all of the "#define XODTEMPLATE_..." lines, except for
-# XODTEMPLATE_NONE, which ain't real.
-#
-# Sed removes the "XODTEMPLATE_" prefixes, then tr lowercases everything.
-#
-# Oh and we sort everything, add "define ", and surround each line with
-# quotes, because we can get away with it here.
-#
-$GREP --only-matching '[[:space:]]XODTEMPLATE_[[:alnum:]_]+' "$INFILE" \
- | $GREP -v 'XODTEMPLATE_NONE' \
- | sed 's/ XODTEMPLATE_//g' \
- | tr '[A-Z]' '[a-z]' \
- | sort \
- | sed -e 's/^/\"define /g' -e 's/$/\"/g' >> "$OUTFILE"
+# Sed grabs all of the "#define XODTEMPLATE_FOO" lines, pulls out the
+# FOO part, and then prints "define FOO", surrounded in
+# quotes. Afterwards we prune the two lines corresponding to
+# XODTEMPLATE_NULL and XODTEMPLATE_NONE which do not correspond to
+# real object types. Finally we lowercase everything with tr, and sort
+# the result.
+XOD_REGEX='#define[[:space:]]\{1,\}XODTEMPLATE_\([^[:space:]]\{1,\}\)[[:space:]]\{1,\}.*'
+
+sed -n "s/${XOD_REGEX}/\"define \1\"/p" "${INFILE}" \
+ | sed '/define NULL\|NONE/d' \
+ | tr '[A-Z]' '[a-z]' \
+ | sort \