--- /dev/null
+# -----------------------------------------------------------------------------
+
+BEGIN {
+ required[1] = "message"
+ required[2] = "song"
+ required[3] = "back"
+ required[4] = "grad"
+ required[5] = "shot"
+ required[6] = "goal"
+ required[7] = "time"
+ required[8] = "time_hs"
+ required[9] = "goal_hs"
+ required[10] = "coin_hs"
+ required[11] = "version"
+ required[12] = "author"
+}
+
+# -----------------------------------------------------------------------------
+
+# Fix up newlines.
+/\r$/ {
+ sub(/\r$/, "")
+}
+
+# -----------------------------------------------------------------------------
+
+# Entity open...
+!entity && /^\{/ {
+ entity = 1
+
+ for (key in attribs)
+ delete attribs[key]
+
+ next
+}
+
+entity && !brush && /^[[:space:]]*"[^"]*"[[:space:]]*"[^"]*"/ {
+ split($0, fields, "\"")
+
+ if (fields[2] == "classname" && fields[4] == "worldspawn")
+ seen_worldspawn = 1
+ else
+ attribs[fields[2]] = fields[4]
+}
+
+# Brush open...
+entity && /^\{/ {
+ brush = 1
+ next
+}
+
+# ...brush closed.
+brush && /^\}/ {
+ brush = 0
+ next
+}
+
+# ...entity closed.
+entity && /^\}/ {
+ entity = 0
+
+ # Dump worlspawn attribs.
+
+ if (seen_worldspawn)
+ {
+ missing = ""
+
+ for (i in required)
+ {
+ key = required[i]
+
+ if (!key in attribs || attribs[key] !~ /[^[:space:]]/)
+ missing = missing " " key
+ }
+
+ if (missing)
+ print FILENAME ":" missing
+
+ seen_worldspawn = 0
+
+ nextfile
+ }
+
+ next
+}
+
+# -----------------------------------------------------------------------------
+++ /dev/null
-#!/bin/sh
-
-LC_ALL=C
-export LC_ALL
-
-# Directories with Neverball levels
-path="data/map-easy data/map-fwp data/map-hard \
-data/map-medium data/map-mym data/map-mym2"
-
-# Mandatory level meta-data
-keys="message song shot goal time time_hs goal_hs coin_hs"
-
-for key in $keys; do
- echo "Missing or empty \"$key\""
- echo
-
- {
- # Missing...
- find $path -name '*.map' |
- xargs egrep -L '^"'$key'"' |
- sed 's/^/ /'
-
- # ...empty.
- find $path -name '*.map' |
- xargs egrep -l '^"'$key'"[[:space:]]+"[[:space:]]*"$' |
- sed 's/^/ /'
- } | sort
-
- echo
-done
-