Fix function types.
authorRudolf Polzer <divverent@xonotic.org>
Fri, 8 Nov 2013 11:52:10 +0000 (12:52 +0100)
committerRudolf Polzer <divverent@xonotic.org>
Fri, 8 Nov 2013 11:53:55 +0000 (12:53 +0100)
qcsrc/uncrusticracy.sh
qcsrc/uncrustify.sh [new file with mode: 0755]

index ff0bae3..c71b6cd 100644 (file)
@@ -52,7 +52,7 @@ decide()
                                cat uncrustify.cfg
                                printf "%s = %s\n" "$KEY" "$choice"
                        } > uncrustify.cfg.test
-                       uncrustify -c uncrustify.cfg.test --replace --no-backup $FILES >/dev/null 2>&1
+                       UNCRUSTIFY_CONFIG=uncrustify.cfg.test sh uncrustify.sh $FILES >/dev/null 2>&1
                        status=$?
                        if [ $status -gt 1 ]; then
                                echo "# ERROR: $KEY = $choice crashes with status $status."
diff --git a/qcsrc/uncrustify.sh b/qcsrc/uncrustify.sh
new file mode 100755 (executable)
index 0000000..2df39aa
--- /dev/null
@@ -0,0 +1,22 @@
+fix_function_types() {
+       # Uncrustify handles QC function types (example:
+       #  void(void) func;
+       # ) wrong and removes the space between type and variable. Fix this by
+       # a simple sed on ")letter" which should normally not occur.
+       sed -e 's/)\([A-Za-z0-9]\)/) \1/g' "$@"
+}
+
+if [ -z "$UNCRUSTIFY_CONFIG" ]; then
+       UNCRUSTIFY_CONFIG=`git rev-parse --show-toplevel`/qcsrc/uncrustify.cfg
+fi
+
+case "$#" in
+       0)
+               uncrustify --frag -c "$UNCRUSTIFY_CONFIG" |\
+               fix_function_types
+               ;;
+       *)
+               uncrustify --replace --no-backup -c "$UNCRUSTIFY_CONFIG" "$@" &&\
+               fix_function_types -i "$@"
+               ;;
+esac