Bundle libseccomp 2.3.1
[linux-seccomp.git] / libseccomp / tools / check-syntax
CommitLineData
8befd5cc
MG
1#!/bin/bash
2
3#
4# libseccomp code syntax checking tool
5#
6# Copyright (c) 2013,2015 Red Hat <pmoore@redhat.com>
7# Author: Paul Moore <paul@paul-moore.com>
8#
9
10#
11# This library is free software; you can redistribute it and/or modify it
12# under the terms of version 2.1 of the GNU Lesser General Public License as
13# published by the Free Software Foundation.
14#
15# This library is distributed in the hope that it will be useful, but WITHOUT
16# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
18# for more details.
19#
20# You should have received a copy of the GNU Lesser General Public License
21# along with this library; if not, see <http://www.gnu.org/licenses>.
22#
23
24CHK_C_LIST="include/seccomp.h.in \
25 src/*.c src/*.h \
26 tests/*.c tests/*.h \
27 tools/*.c tools/*.h"
28CHK_C_EXCLUDE=""
29
30####
31# functions
32
33#
34# Dependency verification
35#
36# Arguments:
37# 1 Dependency to check for
38#
39function verify_deps() {
40 [[ -z "$1" ]] && return
41 if ! which "$1" >& /dev/null; then
42 echo "error: install \"$1\" and include it in your \$PATH"
43 exit 1
44 fi
45}
46
47#
48# Print out script usage details
49#
50function usage() {
51cat << EOF
52usage: check-syntax [-h]
53
54libseccomp code syntax checking tool
55optional arguments:
56 -h show this help message and exit
57 -f fix the file formatting
58EOF
59}
60
61#
62# Generate a properly formatted C source/header file
63#
64# Arguments:
65# 1 Source file
66#
67function tool_c_style() {
68 astyle --options=none --lineend=linux --mode=c \
69 --style=linux \
70 --indent=force-tab=8 \
71 --indent-preprocessor \
72 --indent-col1-comments \
73 --min-conditional-indent=0 \
74 --max-instatement-indent=80 \
75 --pad-oper \
76 --align-pointer=name \
77 --align-reference=name \
78 --max-code-length=80 \
79 --break-after-logical < "$1"
80}
81
82#
83# Check the formatting on a C source/header file
84#
85# Arguments:
86# 1 File to check
87#
88function tool_c_style_check() {
89 [[ -z "$1" || ! -r "$1" ]] && return
90
91 tool_c_style "$1" | diff -pu --label="$1.orig" "$1" --label="$1" -
92}
93
94#
95# Fix the formatting on a C source/header file
96#
97# Arguments:
98# 1 File to fix
99#
100function tool_c_style_fix() {
101 [[ -z "$1" || ! -r "$1" ]] && return
102
103 tmp="$(mktemp --tmpdir=$(dirname "$1"))"
104 tool_c_style "$1" > "$tmp"
105 mv "$tmp" "$1"
106}
107
108#
109# Perform all known syntax checks for the configured C sources/headers
110#
111function check_c() {
112 for i in $CHK_C_LIST; do
113 echo "$CHK_C_EXCLUDE" | grep -q "$i" && continue
114 echo "Differences for $i"
115 tool_c_style_check "$i"
116 done
117}
118
119#
120# Perform all known syntax fixess for the configured C sources/headers
121#
122function fix_c() {
123 for i in $CHK_C_LIST; do
124 echo "$CHK_C_EXCLUDE" | grep -q "$i" && continue
125 echo "Fixing $i"
126 tool_c_style_fix "$i"
127 done
128}
129
130####
131# main
132
133verify_deps astyle
134
135opt_fix=0
136
137while getopts "fh" opt; do
138 case $opt in
139 f)
140 opt_fix=1
141 ;;
142 h|*)
143 usage
144 exit 1
145 ;;
146 esac
147done
148
149# display the results
150echo "=============== $(date) ==============="
151echo "Code Syntax Check Results (\"check-syntax $*\")"
152if [[ $opt_fix -eq 1 ]]; then
153 fix_c
154else
155 check_c
156fi
157echo "============================================================"
158
159# exit
160exit 0
This page took 0.017051 seconds and 4 git commands to generate.