bin/fixincludeguards.sh | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+)
New commits: commit b009e8fd4fce06d9abae8aaac8750ece7df212e4 Author: Thomas Arnhold <tho...@arnhold.org> Date: Tue Oct 22 05:35:49 2013 +0200 fixincludeguards.sh: unify all include guards The include guard gets generated based on the path of the header file. INCLUDED_FOO_BAR_HXX for global headers in include/ INCLUDED_FOO_SOURCE_BAR_BAZ_HXX for anything else. See fdo#68849. Change-Id: Ia250e7c99cef3cb5bb0f9d4dc758ef2da3eec0a8 Reviewed-on: https://gerrit.libreoffice.org/6386 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/bin/fixincludeguards.sh b/bin/fixincludeguards.sh new file mode 100755 index 0000000..ec47edf --- /dev/null +++ b/bin/fixincludeguards.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# corrects include guards for hxx/h files automatically by its path. + +# Usage: +# a) fixincludeguards.sh header.hxx +# b) find . -name *.hxx -or -name *.h | xargs sh fixincludeguards.sh + +guard_prefix="INCLUDED_" + +for fn in "$@"; do + # remove leading ./, if invoked with find + fn=`echo "$fn" | sed 's/^.\///g'` + + # global header in include/ top level dir: + # drop the project dir + fnfixed=`echo $fn | sed 's/include\///g'` + + # convert file path to header guard + guard=`echo "$fnfixed" | sed 's/[\/\.-]/_/g' | tr 'a-z' 'A-Z'` + + if [ aa"`git grep -h "^\s*#ifndef ${guard_prefix}$guard" "$fn" | wc -l`" != "aa1" ] || + [ aa"`git grep -h "^\s*#define ${guard_prefix}$guard" "$fn" | wc -l`" != "aa1" ]; then + + # pattern which identifies guards, common one look like + # _XMLOFF_ANIMEXP_HXX, BENTOID_H, IXFOBJECT_INC + pattern=".*\(_HXX\|_H\|_INC\)" + + ### extract guard definition + # head to take only the first match + old_guard=`git grep -h "#ifndef $pattern" "$fn" | head -n1 | sed "s/.*\s\($pattern.*\)/\1/"` + + if [ aa"$old_guard" == aa"" ]; then + echo -e "$fn: \e[00;31mwarning:\e[00m guard not detectable" + continue + fi + + + if [ aa"`git grep -w "$old_guard" | cut -d ':' -f1 | sort -u | wc -l `" != aa"1" ]; then + echo -e "$fn: \e[00;31mwarning:\e[00m guard definition used in other files" + continue + fi + + ### skip some special files... + + # skip this comphelper stuff: + # INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_14 + if [ aa"INCLUDED_COMPHELPER_IMPLBASE_" == aa"`echo $old_guard | sed "s/VAR_HXX_[0-9]\+//g"`" ]; then + continue + fi + + # skip files like xmloff/source/forms/elementimport_impl.hxx + if [ aa"`git grep -h "#error.*directly" "$fn" | wc -l`" != "aa0" ]; then + continue + fi + + + ### replace old guard with new scheme guard + echo "$fn: $old_guard" + + # includes leading whitespace removal + sed -i "s/\s*${old_guard}/ ${guard_prefix}${guard}/g" "$fn" + + + ### clean up endif + sed -i "s/#endif\s*\(\/\/\|\/\*\)\s*\#\?\(ifndef\)\?\s*\(${guard_prefix}${guard}\).*/#endif \/\/ \3/g" "$fn" + + fi +done
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits