From d988eb4038ceda0b120b2458e25c0e5e8dc3a7b0 Mon Sep 17 00:00:00 2001 From: Schmoozerd Date: Fri, 31 May 2013 09:25:39 +0100 Subject: [PATCH] [c12561] Escape some file names in the cleanupStyle helper script --- contrib/cleanupTools/cleanupStyle.sh | 203 +++++++++++++++++++++++++++ src/shared/revision_nr.h | 2 +- 2 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 contrib/cleanupTools/cleanupStyle.sh diff --git a/contrib/cleanupTools/cleanupStyle.sh b/contrib/cleanupTools/cleanupStyle.sh new file mode 100644 index 000000000..5b8dbb66a --- /dev/null +++ b/contrib/cleanupTools/cleanupStyle.sh @@ -0,0 +1,203 @@ +#!/bin/sh + +# SUPPORTED: ASTYLE COMMENT_STYLE OVERRIDE_CORRECTNESS +# ASTYLE <- runs AStyle +# COMMENT_STYLE <- converts //bla to // bla (note, // Bla might be better, but this would conflict with code (at least) +# Use at own Risk: +# OVERRIDE_CORRECTNESS[2] <- Appends override correctness (add 2 for second pass) + +# Do config stuff +sh "${0%/*}/cleanupToolConfig.sh" +if [ "$?" != "0" ] +then + echo "You need to edit the configuration file before you can use this tool!" + echo "Configuration file: ${0%/*}/cleanupTools.config" + exit 0 +fi + +# And use config settings +. "${0%/*}/cleanupTools.config" + + +## Internal Stuff + +# Mangos Cleanup options for AStyle +OPTIONS="--convert-tabs --align-pointer=type --suffix=none \ + --keep-one-line-blocks --keep-one-line-statements \ + --indent-classes --indent-switches --indent-namespaces \ + --pad-header --unpad-paren --pad-oper --style=allman" + +if [ "$DO_ON" = "MANGOS_SRC" ] +then + FILEPATH=$BASEPATH/src + OPTIONS="$OPTIONS --exclude=ScriptDev2" +elif [ "$DO_ON" = "MANGOS_CONTRIB" ] +then + FILEPATH=$BASEPATH/contrib +elif [ "$DO_ON" = "MANGOS_WHOLE" ] +then + FILEPATH=$BASEPATH + OPTIONS="$OPTIONS --exclude=ScriptDev2" +elif [ "$DO_ON" = "SD2" ] +then + FILEPATH=$BASEPATH/src/bindings/ScriptDev2 +else + exit 1 +fi + +OPTIONS="$OPTIONS --recursive" + +#################################################################################################### +## USING ASTYLE UPDATING ## +#################################################################################################### +if [ $DO = ASTYLE ] +then + echo "Process $FILEPATH with options $MOPTIONS" + $ASTYLE $OPTIONS "$FILEPATH/*.cpp" "$FILEPATH/*.h" + + #Restore style of auto-generated sql-files + if [ "$DO_ON" = "MANGOS_SRC" -o "$DO_ON" = "MANGOS_WHOLE" ] + then + if [ -f "$BASEPATH/src/shared/revision_nr.h" ] + then + sed 's/^#define REVISION_NR/ #define REVISION_NR/g' < ${BASEPATH}/src/shared/revision_nr.h > temp + mv temp "$BASEPATH/src/shared/revision_nr.h" + fi + if [ -f "$BASEPATH/src/shared/revision_sql.h" ] + then + sed 's/^#define REVISION_DB/ #define REVISION_DB/g' < ${BASEPATH}/src/shared/revision_sql.h > temp + mv temp "$BASEPATH/src/shared/revision_sql.h" + fi + elif [ "$DO_ON" = "SD2" ] + then + if [ -f "$BASEPATH/src/bindings/ScriptDev2/sd2_revision_nr.h" ] + then + sed 's/^#define SD2_REVISION_NR/ #define SD2_REVISION_NR/g' < ${BASEPATH}/src/bindings/ScriptDev2/sd2_revision_nr.h > temp + mv temp "$BASEPATH/src/bindings/ScriptDev2/sd2_revision_nr.h" + fi + fi + + echo "Processing $DO on $DO_ON done" + exit 0 +fi + + +#################################################################################################### +## UNIFYING COMMENTS ## +#################################################################################################### +## Make comments neater //bla => // bla ## note for uppercase s:\// \([a-z]\):// \1:g +if [ $DO = COMMENT_STYLE ] +then + if [ "$DO_ON" = "MANGOS_SRC" ] + then + LIST=`find ${BASEPATH}/src/ -path "${BASEPATH}/src/bindings/ScriptDev2" -prune -o -type f -iname "*.cpp" -print -o -iname "*.h" -print ` + elif [ "$DO_ON" = "SD2" ] + then + LIST=`find ${BASEPATH}/src/bindings/ScriptDev2 -type f -iname "*.cpp" -o -iname "*.h" ` + else + echo "Unsupported combination with DO and DO_ON" + exit 1 + fi + + for l in $LIST + do + echo "Converting comments in $l" + sed '/http:/ !s:\//\([a-zA-Z0-9]\):// \1:g; + s#^\(............................................................\) [ ]*//#\1//#g; + /^..............................................\/[\/]*$/ !s#^\(..................................................\)//#\1 //#g; ' "$l" > temp + if [ "$?" != "0" ] + then + echo "An error HAPPENED" + exit 1 + fi + + mv temp "$l" + done + + echo "Processing $DO on $DO_ON done" + exit 0 +fi + +#################################################################################################### +## OVERRIDE CORRECTNESS ## +#################################################################################################### +# use OVERRIDE_CORRECTNESS to create helper file listing all virtual methods +# use OVERRIDE_CORRECTNESS2 to add the word "override" after all functions with virtual names + +if [ "$DO_ON" != "MANGOS_SRC" -a "$DO_ON" != "SD2" ] +then + echo "OVERRIDE atm only supported for MANGOS_SRC or SD2 target" + exit 0 +fi + +if [ $DO = OVERRIDE_CORRECTNESS ] +then + #Create a list of all virtual functions in mangos (class scope) + if [ $DO_ON = MANGOS_SRC ] + then + HEADERLIST=`find ${BASEPATH}/src/ -path "${BASEPATH}/src/bindings/ScriptDev2" -prune -o -type f -iname "*.h" -print` + else + HEADERLIST=`find ${BASEPATH}/src/bindings/ScriptDev2 -type f -iname "*.h"` + HEADERLIST="${HEADERLIST} ${BASEPATH}/src/game/CreatureAI.h" + HEADERLIST="${HEADERLIST} ${BASEPATH}/src/game/InstanceData.h" + fi + + rm virtuals + for h in $HEADERLIST + do + grep "virtual" "$h" >> virtuals + done + + #Filter comment lines + sed -n '/^[ ]*\/\// !p' virtuals | sed -n '/^[ ]*\/\*/ !p' | \ + ##Get function name + sed -r -n '/^[ ]*virtual[ ][ ]*const[\*]*[ ][ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*const[\*]*[ ][]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*const[ ]*[a-zA-Z_~0-9\*:]*[ ]*const[ ]*([a-zA-Z_~0-9]*).*/\1/g; tEnde} + /^[ ]*virtual[ ][ ]*const[\*]*[ ][ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*const[ ]*[a-zA-Z_~0-9\*:]*[ ]*([a-zA-Z_~0-9]*).*/\1/g; tEnde} + /^[ ]*virtual[ ][ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*const[\*]*[ ][ ]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*[a-zA-Z_~0-9\*:]*[ ]*const[\*]*[ ]*([a-zA-Z_~0-9]*).*/\1/g; tEnde} + /^[ ]*virtual[ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*[a-zA-Z_~0-9\*:]*[ ][ ]*([a-zA-Z_~0-9]*).*/\1/g;} + :Ende; p' > virtualNames + + ##Make its entries unique + sort < virtualNames > virtuals + uniq < virtuals > virtualNames + + echo "Check file virtualNames for inconsitencies!" + rm virtuals + + echo "Processing $DO on $DO_ON done" + exit 0 +fi + +if [ $DO = OVERRIDE_CORRECTNESS2 ] +then + ## Assume virtualNames is good + if [ $DO_ON = MANGOS_SRC ] + then + FILELIST=`find ${BASEPATH}/src/ -path "${BASEPATH}/src/bindings/ScriptDev2" -prune -o -type f -iname "*.h" -print` + else + FILELIST=`find ${BASEPATH}/src/bindings/ScriptDev2 -type f -iname "*.cpp" -o -iname "*.h"` + fi + + for h in $FILELIST + do + echo "Progress file $h" + while read f + do + # basic pattern: NAME(..)...[;] + PARSE="s/( "$f"\(.*\)[ ]*const[\*]*);/\1 override;/g; t + s/( "$f"\(.*\));/\1 override;/g; t + s/( "$f"\(.*\)[ ]*const[\*]*)$/\1 override/g; t + s/( "$f"\(.*\))$/\1 override/g; t + s/( "$f"\(.*\)[ ]*const[\*]*)([ ].*)/\1 override\2/g; t + s/( "$f"\(.*\))([ ].*)/\1 override\2/g" + sed -r "$PARSE" "$h" > temp + mv temp "$h" + done < virtualNames + done + + echo "Processing $DO on $DO_ON done" + exit 0 + +fi + +exit 0 diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 60484454b..9e9890af4 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "12559" + #define REVISION_NR "12562" #endif // __REVISION_NR_H__