summaryrefslogtreecommitdiffstats
path: root/util/getenum
diff options
context:
space:
mode:
Diffstat (limited to 'util/getenum')
-rwxr-xr-xutil/getenum21
1 files changed, 21 insertions, 0 deletions
diff --git a/util/getenum b/util/getenum
new file mode 100755
index 0000000..84cb73e
--- /dev/null
+++ b/util/getenum
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+sed '1,/^\s*enum\s\+'"$1"'\b/d' | \
+tr '\n' '\0' | cut -d \; -f 1 | tr '\0' '\n' | \
+sed -n 's/^\s*\([A-Z0-9_]\+\)\(\s*=[^,]*\)\?\s*,\?\s*\(\/.*\)\?/\1\2/p' | \
+sed 's/=/ /g' | \
+(
+ prev=-1
+ while read name value; do
+ if test -z "$value"; then
+ value=$(( prev + 1 ))
+ else
+ value="$(printf '%s\n' "$value" | tr -d ULul)"
+ value=$(printf '%s\n' "$(( $value ))" | cut -d . -f 1)
+ fi
+ printf '%s %s\n' "$name" "$value"
+ prev=$value
+ done
+)