Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
codes
codes
Commits
c3f2c08e
Commit
c3f2c08e
authored
Mar 16, 2015
by
Jonathan Jenkins
Browse files
uncrustify config and reformatting tool
parent
a28856ca
Changes
2
Show whitespace changes
Inline
Side-by-side
reformat.sh
0 → 100755
View file @
c3f2c08e
#!/bin/bash
script_dir
=
"
$(
cd
"
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
"
&&
pwd
)
"
function
error
()
{
echo
"ERROR:
$@
"
>
&2
exit
1
}
function
usage
()
{
cat
\
<<
EOF
USAGE: reformat.sh [-x] [-i] [-c CFG] [-b FILE] {-a | FILE...}
-i: perform in-place (will ask to confirm if being done recursively)
-c CFG: use CFG as the uncrustify config (default:
$script_dir
/uc-codes.cfg)
-b FILE[,...]: add FILE to the blacklist of directories (in the form *FILE/*)
multiple files can be added by separating with commas
-a: perform recursively on all files ending in .c or .h
if -a not provided, then perform on all files passed in
-x: instead of formatting, check if output format is the same as input
EOF
}
function
build_blacklist
()
{
for
x
in
$@
;
do
echo
-n
"-and -not -path
\*
$x
/
\*
"
done
}
function
getfiles
()
{
find
.
\(
-name
\*
.c
-or
-name
\*
.h
\)
$(
build_blacklist
$@
)
}
cfg
=
$script_dir
/uc-codes.cfg
which uncrustify
>
/dev/null 2>&1
||
error
"uncrustify not found"
do_inplace
=
no
do_recursive
=
no
do_check
=
no
blacklist
=
while
getopts
":ib:ax"
opt
;
do
case
$opt
in
i
)
do_inplace
=
yes
;;
b
)
blacklist
=
$(
cat
$OPTARG
|
sed
s/,/ /g
)
;;
c
)
cfg
=
$OPTARG
;;
a
)
do_recursive
=
yes
;;
x
)
do_check
=
yes
;;
\?
)
usage
error
"invalid argument: -
$OPTARG
"
;;
esac
done
shift
$((
OPTIND-1
))
[[
-e
$cfg
]]
||
(
usage
&&
error
"config file
$cfg
not found"
)
[[
$#
-gt
0
&&
$do_recursive
==
yes
]]
&&
\
usage
&&
error
"no file args expected in recursive mode"
[[
$#
-eq
0
&&
$do_recursive
==
no
]]
&&
\
usage
&&
error
"expected file args in non-recursive mode"
if
[[
$do_recursive
==
yes
]]
;
then
file_list
=
"
$(
getfiles
$blacklist
)
"
else
file_list
=
"
$@
"
fi
if
[[
$do_recursive
==
yes
&&
$do_inplace
==
yes
]]
;
then
echo
-n
"Do recursive in-place reformat? (y/n) "
read
answer
[[
$answer
=
~
"[^y].*"
]]
&&
echo
"...aborting reformat"
&&
exit
1
fi
[[
$do_inplace
==
yes
]]
\
&&
output_arg
=
"--replace"
\
||
output_arg
=
if
[[
$do_check
==
yes
]]
;
then
check_arg
=
--check
output_arg
=
echo
"checking format..."
else
check_arg
=
fi
function
echolines
()
{
for
x
in
$@
;
do
echo
$x
;
done
}
echolines
$file_list
| uncrustify
$check_arg
-c
$cfg
$output_arg
-F
-
uc-codes.cfg
0 → 100644
View file @
c3f2c08e
# Uncrustify 0.61
#
# General options
#
# The type of line endings
newlines = auto # auto/lf/crlf/cr
# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
# If true (default), 'assert(x<0 && y>=3)' will be broken.
# Improvements to template detection may make this option obsolete.
tok_split_gte = false # false/true
# Control what to do with the UTF-8 BOM (recommend 'remove')
utf8_bom = remove # ignore/add/remove/force
# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
utf8_byte = false # false/true
# Force the output encoding to UTF-8
utf8_force = false # false/true
#
# Indenting
#
# The number of columns to indent per level.
# Usually 2, 3, 4, or 8.
indent_columns = 4 # number
# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
indent_continue = 8 # number
# How to use tabs when indenting code
# 0=spaces only
# 1=indent with tabs to brace level, align with spaces
# 2=indent and align with tabs, using spaces when not on a tabstop
indent_with_tabs = 0 # number
# Comments that are not a brace level are indented with tabs on a tabstop.
# Requires indent_with_tabs=2. If false, will use spaces.
indent_cmt_with_tabs = false # false/true
# Whether to indent strings broken by '\' so that they line up
indent_align_string = false # false/true
# Spaces to indent '{' from level
indent_brace = 0 # number
# Whether braces are indented to the body level
indent_braces = false # false/true
# Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
indent_paren_open_brace = false # false/true
# Whether the 'namespace' body is indented
indent_namespace = false # false/true
# Only indent one namespace and no sub-namepaces.
# Requires indent_namespace=true.
indent_namespace_single_indent = false # false/true
# The number of spaces to indent a namespace block
indent_namespace_level = 0 # number
# If the body of the namespace is longer than this number, it won't be indented.
# Requires indent_namespace=true. Default=0 (no limit)
indent_namespace_limit = 0 # number
# Whether the 'extern "C"' body is indented
indent_extern = false # false/true
# Whether the 'class' body is indented
indent_class = false # false/true
# Whether to indent the stuff after a leading base class colon
indent_class_colon = false # false/true
# Whether to indent the stuff after a leading class initializer colon
indent_constr_colon = false # false/true
# Virtual indent from the ':' for member initializers. Default is 2
indent_ctor_init_leading = 2 # number
# Additional indenting for constructor initializer list
indent_ctor_init = 0 # number
# False=treat 'else\nif' as 'else if' for indenting purposes
# True=indent the 'if' one level
indent_else_if = false # false/true
# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
indent_var_def_blk = 0 # number
# Indent continued variable declarations instead of aligning.
indent_var_def_cont = false # false/true
# True: force indentation of function definition to start in column 1
# False: use the default behavior
indent_func_def_force_col1 = false # false/true
# True: indent continued function call parameters one indent level
# False: align parameters under the open paren
indent_func_call_param = true # false/true
# Same as indent_func_call_param, but for function defs
indent_func_def_param = true # false/true
# Same as indent_func_call_param, but for function protos
indent_func_proto_param = true # false/true
# Same as indent_func_call_param, but for class declarations
indent_func_class_param = false # false/true
# Same as indent_func_call_param, but for class variable constructors
indent_func_ctor_var_param = false # false/true
# Same as indent_func_call_param, but for templates
indent_template_param = false # false/true
# Double the indent for indent_func_xxx_param options
indent_func_param_double = true # false/true
# Indentation column for standalone 'const' function decl/proto qualifier
indent_func_const = 0 # number
# Indentation column for standalone 'throw' function decl/proto qualifier
indent_func_throw = 0 # number
# The number of spaces to indent a continued '->' or '.'
# Usually set to 0, 1, or indent_columns.
indent_member = 0 # number
# Spaces to indent single line ('//') comments on lines before code
indent_sing_line_comments = 0 # number
# If set, will indent trailing single line ('//') comments relative
# to the code instead of trying to keep the same absolute column
indent_relative_single_line_comments = true # false/true
# Spaces to indent 'case' from 'switch'
# Usually 0 or indent_columns.
indent_switch_case = indent_columns # number
# Spaces to shift the 'case' line, without affecting any other lines
# Usually 0.
indent_case_shift = 0 # number
# Spaces to indent '{' from 'case'.
# By default, the brace will appear under the 'c' in case.
# Usually set to 0 or indent_columns.
indent_case_brace = 0 # number
# Whether to indent comments found in first column
indent_col1_comment = true # false/true
# How to indent goto labels
# >0 : absolute column where 1 is the leftmost column
# <=0 : subtract from brace indent
indent_label = 1 # number
# Same as indent_label, but for access specifiers that are followed by a colon
indent_access_spec = 1 # number
# Indent the code after an access specifier by one level.
# If set, this option forces 'indent_access_spec=0'
indent_access_spec_body = false # false/true
# If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
indent_paren_nl = false # false/true
# Controls the indent of a close paren after a newline.
# 0: Indent to body level
# 1: Align under the open paren
# 2: Indent to the brace level
indent_paren_close = 0 # number
# Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
indent_comma_paren = false # false/true
# Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
indent_bool_paren = false # false/true
# If 'indent_bool_paren' is true, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
indent_first_bool_expr = false # false/true
# If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
indent_square_nl = false # false/true
# Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
indent_preserve_sql = false # false/true
# Align continued statements at the '='. Default=True
# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
indent_align_assign = true # false/true
#
# Spacing options
#
# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
sp_arith = ignore # ignore/add/remove/force
# Add or remove space around assignment operator '=', '+=', etc
sp_assign = ignore # ignore/add/remove/force
# Add or remove space around '=' in C++11 lambda capture specifications. Overrides sp_assign
sp_cpp_lambda_assign = ignore # ignore/add/remove/force
# Add or remove space after the capture specification in C++11 lambda.
sp_cpp_lambda_paren = ignore # ignore/add/remove/force
# Add or remove space around assignment operator '=' in a prototype
sp_assign_default = ignore # ignore/add/remove/force
# Add or remove space before assignment operator '=', '+=', etc. Overrides sp_assign.
sp_before_assign = ignore # ignore/add/remove/force
# Add or remove space after assignment operator '=', '+=', etc. Overrides sp_assign.
sp_after_assign = ignore # ignore/add/remove/force
# Add or remove space in 'NS_ENUM ('
sp_enum_paren = ignore # ignore/add/remove/force
# Add or remove space around assignment '=' in enum
sp_enum_assign = ignore # ignore/add/remove/force
# Add or remove space before assignment '=' in enum. Overrides sp_enum_assign.
sp_enum_before_assign = ignore # ignore/add/remove/force
# Add or remove space after assignment '=' in enum. Overrides sp_enum_assign.
sp_enum_after_assign = ignore # ignore/add/remove/force
# Add or remove space around preprocessor '##' concatenation operator. Default=Add
sp_pp_concat = add # ignore/add/remove/force
# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
sp_pp_stringify = ignore # ignore/add/remove/force
# Add or remove space before preprocessor '#' stringify operator as in '#define x(y) L#y'.
sp_before_pp_stringify = ignore # ignore/add/remove/force
# Add or remove space around boolean operators '&&' and '||'
sp_bool = ignore # ignore/add/remove/force
# Add or remove space around compare operator '<', '>', '==', etc
sp_compare = ignore # ignore/add/remove/force
# Add or remove space inside '(' and ')'
sp_inside_paren = remove # ignore/add/remove/force
# Add or remove space between nested parens: '((' vs ') )'
sp_paren_paren = remove # ignore/add/remove/force
# Add or remove space between back-to-back parens: ')(' vs ') ('
sp_cparen_oparen = ignore # ignore/add/remove/force
# Whether to balance spaces inside nested parens
sp_balance_nested_parens = false # false/true
# Add or remove space between ')' and '{'
sp_paren_brace = add # ignore/add/remove/force
# Add or remove space before pointer star '*'
sp_before_ptr_star = add # ignore/add/remove/force
# Add or remove space before pointer star '*' that isn't followed by a variable name
# If set to 'ignore', sp_before_ptr_star is used instead.
sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force
# Add or remove space between pointer stars '*'
sp_between_ptr_star = remove # ignore/add/remove/force
# Add or remove space after pointer star '*', if followed by a word.
sp_after_ptr_star = add # ignore/add/remove/force
# Add or remove space after pointer star '*', if followed by a qualifier.
sp_after_ptr_star_qualifier = add # ignore/add/remove/force
# Add or remove space after a pointer star '*', if followed by a func proto/def.
sp_after_ptr_star_func = add # ignore/add/remove/force
# Add or remove space after a pointer star '*', if followed by an open paren (function types).
sp_ptr_star_paren = ignore # ignore/add/remove/force
# Add or remove space before a pointer star '*', if followed by a func proto/def.
sp_before_ptr_star_func = ignore # ignore/add/remove/force
# Add or remove space before a reference sign '&'
sp_before_byref = ignore # ignore/add/remove/force
# Add or remove space before a reference sign '&' that isn't followed by a variable name
# If set to 'ignore', sp_before_byref is used instead.
sp_before_unnamed_byref = ignore # ignore/add/remove/force
# Add or remove space after reference sign '&', if followed by a word.
sp_after_byref = ignore # ignore/add/remove/force
# Add or remove space after a reference sign '&', if followed by a func proto/def.
sp_after_byref_func = ignore # ignore/add/remove/force
# Add or remove space before a reference sign '&', if followed by a func proto/def.
sp_before_byref_func = ignore # ignore/add/remove/force
# Add or remove space between type and word. Default=Force
sp_after_type = force # ignore/add/remove/force
# Add or remove space before the paren in the D constructs 'template Foo(' and 'class Foo('.
sp_before_template_paren = ignore # ignore/add/remove/force
# Add or remove space in 'template <' vs 'template<'.
# If set to ignore, sp_before_angle is used.
sp_template_angle = ignore # ignore/add/remove/force
# Add or remove space before '<>'
sp_before_angle = ignore # ignore/add/remove/force
# Add or remove space inside '<' and '>'
sp_inside_angle = ignore # ignore/add/remove/force
# Add or remove space after '<>'
sp_after_angle = ignore # ignore/add/remove/force
# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
sp_angle_paren = ignore # ignore/add/remove/force
# Add or remove space between '<>' and a word as in 'List<byte> m;'
sp_angle_word = ignore # ignore/add/remove/force
# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
sp_angle_shift = add # ignore/add/remove/force
# Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
# sp_angle_shift cannot remove the space without this option.
sp_permit_cpp11_shift = false # false/true
# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
sp_before_sparen = ignore # ignore/add/remove/force
# Add or remove space inside if-condition '(' and ')'
sp_inside_sparen = remove # ignore/add/remove/force
# Add or remove space before if-condition ')'. Overrides sp_inside_sparen.
sp_inside_sparen_close = ignore # ignore/add/remove/force
# Add or remove space before if-condition '('. Overrides sp_inside_sparen.
sp_inside_sparen_open = ignore # ignore/add/remove/force
# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
sp_after_sparen = ignore # ignore/add/remove/force
# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
sp_sparen_brace = ignore # ignore/add/remove/force
# Add or remove space between 'invariant' and '(' in the D language.
sp_invariant_paren = ignore # ignore/add/remove/force
# Add or remove space after the ')' in 'invariant (C) c' in the D language.
sp_after_invariant_paren = ignore # ignore/add/remove/force
# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
sp_special_semi = ignore # ignore/add/remove/force
# Add or remove space before ';'. Default=Remove
sp_before_semi = remove # ignore/add/remove/force
# Add or remove space before ';' in non-empty 'for' statements
sp_before_semi_for = ignore # ignore/add/remove/force
# Add or remove space before a semicolon of an empty part of a for statement.
sp_before_semi_for_empty = ignore # ignore/add/remove/force
# Add or remove space after ';', except when followed by a comment. Default=Add
sp_after_semi = add # ignore/add/remove/force
# Add or remove space after ';' in non-empty 'for' statements. Default=Force
sp_after_semi_for = force # ignore/add/remove/force
# Add or remove space after the final semicolon of an empty part of a for statement: for ( ; ; <here> ).
sp_after_semi_for_empty = ignore # ignore/add/remove/force
# Add or remove space before '[' (except '[]')
sp_before_square = ignore # ignore/add/remove/force
# Add or remove space before '[]'
sp_before_squares = ignore # ignore/add/remove/force
# Add or remove space inside a non-empty '[' and ']'
sp_inside_square = remove # ignore/add/remove/force
# Add or remove space after ','
sp_after_comma = ignore # ignore/add/remove/force
# Add or remove space before ','
sp_before_comma = remove # ignore/add/remove/force
# Add or remove space between an open paren and comma: '(,' vs '( ,'
sp_paren_comma = force # ignore/add/remove/force
# Add or remove space before the variadic '...' when preceded by a non-punctuator
sp_before_ellipsis = ignore # ignore/add/remove/force
# Add or remove space after class ':'
sp_after_class_colon = ignore # ignore/add/remove/force
# Add or remove space before class ':'
sp_before_class_colon = ignore # ignore/add/remove/force
# Add or remove space after class constructor ':'
sp_after_constr_colon = ignore # ignore/add/remove/force
# Add or remove space before class constructor ':'
sp_before_constr_colon = ignore # ignore/add/remove/force
# Add or remove space before case ':'. Default=Remove
sp_before_case_colon = remove # ignore/add/remove/force
# Add or remove space between 'operator' and operator sign
sp_after_operator = ignore # ignore/add/remove/force
# Add or remove space between the operator symbol and the open paren, as in 'operator ++('
sp_after_operator_sym = ignore # ignore/add/remove/force
# Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
sp_after_cast = ignore # ignore/add/remove/force
# Add or remove spaces inside cast parens
sp_inside_paren_cast = ignore # ignore/add/remove/force
# Add or remove space between the type and open paren in a C++ cast, i.e. 'int(exp)' vs 'int (exp)'
sp_cpp_cast_paren = ignore # ignore/add/remove/force
# Add or remove space between 'sizeof' and '('
sp_sizeof_paren = ignore # ignore/add/remove/force
# Add or remove space after the tag keyword (Pawn)
sp_after_tag = ignore # ignore/add/remove/force
# Add or remove space inside enum '{' and '}'
sp_inside_braces_enum = ignore # ignore/add/remove/force
# Add or remove space inside struct/union '{' and '}'
sp_inside_braces_struct = ignore # ignore/add/remove/force
# Add or remove space inside '{' and '}'
sp_inside_braces = ignore # ignore/add/remove/force
# Add or remove space inside '{}'
sp_inside_braces_empty = ignore # ignore/add/remove/force
# Add or remove space between return type and function name
# A minimum of 1 is forced except for pointer return types.
sp_type_func = ignore # ignore/add/remove/force
# Add or remove space between function name and '(' on function declaration
sp_func_proto_paren = ignore # ignore/add/remove/force
# Add or remove space between function name and '(' on function definition
sp_func_def_paren = ignore # ignore/add/remove/force
# Add or remove space inside empty function '()'
sp_inside_fparens = ignore # ignore/add/remove/force
# Add or remove space inside function '(' and ')'
sp_inside_fparen = ignore # ignore/add/remove/force
# Add or remove space inside the first parens in the function type: 'void (*x)(...)'
sp_inside_tparen = ignore # ignore/add/remove/force
# Add or remove between the parens in the function type: 'void (*x)(...)'
sp_after_tparen_close = ignore # ignore/add/remove/force
# Add or remove space between ']' and '(' when part of a function call.
sp_square_fparen = ignore # ignore/add/remove/force
# Add or remove space between ')' and '{' of function
sp_fparen_brace = ignore # ignore/add/remove/force
# Java: Add or remove space between ')' and '{{' of double brace initializer.
sp_fparen_dbrace = ignore # ignore/add/remove/force
# Add or remove space between function name and '(' on function calls
sp_func_call_paren = ignore # ignore/add/remove/force
# Add or remove space between function name and '()' on function calls without parameters.
# If set to 'ignore' (the default), sp_func_call_paren is used.
sp_func_call_paren_empty = ignore # ignore/add/remove/force
# Add or remove space between the user function name and '(' on function calls
# You need to set a keyword to be a user function, like this: 'set func_call_user _' in the config file.
sp_func_call_user_paren = ignore # ignore/add/remove/force
# Add or remove space between a constructor/destructor and the open paren
sp_func_class_paren = ignore # ignore/add/remove/force
# Add or remove space between 'return' and '('
sp_return_paren = ignore # ignore/add/remove/force
# Add or remove space between '__attribute__' and '('
sp_attribute_paren = ignore # ignore/add/remove/force
# Add or remove space between 'defined' and '(' in '#if defined (FOO)'
sp_defined_paren = ignore # ignore/add/remove/force
# Add or remove space between 'throw' and '(' in 'throw (something)'
sp_throw_paren = ignore # ignore/add/remove/force
# Add or remove space between 'throw' and anything other than '(' as in '@throw [...];'
sp_after_throw = ignore # ignore/add/remove/force
# Add or remove space between 'catch' and '(' in 'catch (something) { }'
# If set to ignore, sp_before_sparen is used.
sp_catch_paren = ignore # ignore/add/remove/force
# Add or remove space between 'version' and '(' in 'version (something) { }' (D language)
# If set to ignore, sp_before_sparen is used.
sp_version_paren = ignore # ignore/add/remove/force
# Add or remove space between 'scope' and '(' in 'scope (something) { }' (D language)
# If set to ignore, sp_before_sparen is used.
sp_scope_paren = ignore # ignore/add/remove/force
# Add or remove space between macro and value
sp_macro = ignore # ignore/add/remove/force
# Add or remove space between macro function ')' and value
sp_macro_func = ignore # ignore/add/remove/force
# Add or remove space between 'else' and '{' if on the same line
sp_else_brace = add # ignore/add/remove/force
# Add or remove space between '}' and 'else' if on the same line
sp_brace_else = add # ignore/add/remove/force
# Add or remove space between '}' and the name of a typedef on the same line
sp_brace_typedef = ignore # ignore/add/remove/force
# Add or remove space between 'catch' and '{' if on the same line
sp_catch_brace = ignore # ignore/add/remove/force
# Add or remove space between '}' and 'catch' if on the same line
sp_brace_catch = ignore # ignore/add/remove/force
# Add or remove space between 'finally' and '{' if on the same line
sp_finally_brace = ignore # ignore/add/remove/force
# Add or remove space between '}' and 'finally' if on the same line
sp_brace_finally = ignore # ignore/add/remove/force
# Add or remove space between 'try' and '{' if on the same line
sp_try_brace = ignore # ignore/add/remove/force
# Add or remove space between get/set and '{' if on the same line
sp_getset_brace = ignore # ignore/add/remove/force