|
|
@@ -8,9 +8,11 @@ if [ $# = 0 ]; then |
|
|
|
exit |
|
|
|
fi |
|
|
|
|
|
|
|
GREP=grep |
|
|
|
EGREP=egrep |
|
|
|
TMP=patcheck.tmp |
|
|
|
OPT="-nH" |
|
|
|
#FILES=`grep '^+++' $* | sed 's/+++ //g'` |
|
|
|
#FILES=`$GREP '^+++' $* | sed 's/+++ //g'` |
|
|
|
|
|
|
|
echo patCHeck 1e10.0 |
|
|
|
echo This tool is intended to help a human check/review patches it is very far from |
|
|
@@ -27,7 +29,7 @@ hiegrep(){ |
|
|
|
arg="$1" |
|
|
|
msg="$2" |
|
|
|
shift 2 |
|
|
|
grep $OPT '^+' $* | grep -v ':+++'| egrep --color=always -- "$arg"> $TMP && printf "\n$msg\n" |
|
|
|
$GREP $OPT '^+' $* | $GREP -v ':+++'| $EGREP --color=always -- "$arg"> $TMP && printf "\n$msg\n" |
|
|
|
cat $TMP |
|
|
|
} |
|
|
|
|
|
|
@@ -36,7 +38,7 @@ hiegrep2(){ |
|
|
|
varg="$2" |
|
|
|
msg="$3" |
|
|
|
shift 3 |
|
|
|
grep $OPT '^+' $* | grep -v ':+++' | egrep -v -- "$varg" | egrep --color=always -- "$arg" > $TMP && printf "\n$msg\n" |
|
|
|
$GREP $OPT '^+' $* | $GREP -v ':+++' | $EGREP -v -- "$varg" | $EGREP --color=always -- "$arg" > $TMP && printf "\n$msg\n" |
|
|
|
cat $TMP |
|
|
|
} |
|
|
|
|
|
|
@@ -60,7 +62,7 @@ hiegrep '\+= *1 *;' 'can be simplified to ++' $* |
|
|
|
hiegrep '-= *1 *;' 'can be simplified to --' $* |
|
|
|
hiegrep '((!|=)= *(0|NULL)[^0-9a-z]|[^0-9a-z](0|NULL) *(!|=)=)' 'x==0 / x!=0 can be simplified to !x / x' $* |
|
|
|
|
|
|
|
egrep $OPT '^\+ *(const *|)static' $*| egrep --color=always '[^=]= *(0|NULL)[^0-9a-zA-Z]'> $TMP && printf '\nuseless 0 init\n' |
|
|
|
$EGREP $OPT '^\+ *(const *|)static' $*| $EGREP --color=always '[^=]= *(0|NULL)[^0-9a-zA-Z]'> $TMP && printf '\nuseless 0 init\n' |
|
|
|
cat $TMP |
|
|
|
hiegrep '# *ifdef * (HAVE|CONFIG)_' 'ifdefs that should be #if' $* |
|
|
|
|
|
|
@@ -89,7 +91,7 @@ hiegrep2 '\.sample_fmts *= *\(' 'const' 'missing const for sample_fmts array' $* |
|
|
|
hiegrep2 '\.supported_framerates *= *\(' 'const' 'missing const for supported_framerates array' $* |
|
|
|
hiegrep2 '\.channel_layouts *= *\(' 'const' 'missing const for channel_layouts array' $* |
|
|
|
|
|
|
|
#egrep $OPT '^\+.*const ' $*| grep -v 'static'> $TMP && printf '\nnon static const\n' |
|
|
|
#$EGREP $OPT '^\+.*const ' $*| $GREP -v 'static'> $TMP && printf '\nnon static const\n' |
|
|
|
#cat $TMP |
|
|
|
|
|
|
|
hiegrep2 "$ERE_TYPES" '(static|av_|ff_|typedef|:\+[^a-zA-Z_])' 'Non static with no ff_/av_ prefix' $* |
|
|
@@ -104,58 +106,58 @@ hiegrep ':\+ *{ *$' '{ should be on the same line as the related previous state |
|
|
|
|
|
|
|
|
|
|
|
rm $TMP |
|
|
|
for i in `grep -H '^+.*@param' $*| sed 's/^\([^:]*\):.*@param\(\[.*\]\|\) *\([a-zA-Z0-9_]*\) .*$/\1:\3/'` ; do |
|
|
|
for i in `$GREP -H '^+.*@param' $*| sed 's/^\([^:]*\):.*@param\(\[.*\]\|\) *\([a-zA-Z0-9_]*\) .*$/\1:\3/'` ; do |
|
|
|
doxpar=`echo $i | sed 's/^.*:\(.*\)$/\1/'` |
|
|
|
file=`echo $i | sed 's/^\([^:]*\):.*$/\1/'` |
|
|
|
grep " *$doxpar *[),]" $file | grep -v '@param' >/dev/null || grep --color=always "@param *$doxpar" $file >>$TMP |
|
|
|
$GREP " *$doxpar *[),]" $file | $GREP -v '@param' >/dev/null || $GREP --color=always "@param *$doxpar" $file >>$TMP |
|
|
|
done |
|
|
|
if test -e $TMP ; then |
|
|
|
printf '\nmismatching doxy params\n' |
|
|
|
cat $TMP |
|
|
|
fi |
|
|
|
|
|
|
|
egrep -B2 $OPT '^(\+|) *('"$ERE_TYPES"'|# *define)' $* | egrep -A2 --color=always '(:|-)\+[^/]*/(\*([^*]|$)|/([^/]|$))' > $TMP && printf "\n Non doxy comments\n" |
|
|
|
$EGREP -B2 $OPT '^(\+|) *('"$ERE_TYPES"'|# *define)' $* | $EGREP -A2 --color=always '(:|-)\+[^/]*/(\*([^*]|$)|/([^/]|$))' > $TMP && printf "\n Non doxy comments\n" |
|
|
|
cat $TMP |
|
|
|
|
|
|
|
rm $TMP |
|
|
|
for i in \ |
|
|
|
`egrep -H '^\+ *'"$ERE_TYPES" $* |\ |
|
|
|
grep -v '(' | egrep -v '\Wgoto\W' |\ |
|
|
|
`$EGREP -H '^\+ *'"$ERE_TYPES" $* |\ |
|
|
|
$GREP -v '(' | $EGREP -v '\Wgoto\W' |\ |
|
|
|
xargs -d '\n' -n 1 |\ |
|
|
|
grep -o '[* ][* ]*[a-zA-Z][0-9a-zA-Z_]* *[,;=]' |\ |
|
|
|
$GREP -o '[* ][* ]*[a-zA-Z][0-9a-zA-Z_]* *[,;=]' |\ |
|
|
|
sed 's/.[* ]*\([a-zA-Z][0-9a-zA-Z_]*\) *[,;=]/\1/'` \ |
|
|
|
; do |
|
|
|
echo $i | grep '^NULL$' && continue |
|
|
|
egrep $i' *(\+|-|\*|/|\||&|%|)=[^=]' $* >/dev/null || echo "possibly never written:"$i >> $TMP |
|
|
|
egrep '(=|\(|return).*'$i'(==|[^=])*$' $* >/dev/null || echo "possibly never read :"$i >> $TMP |
|
|
|
egrep -o $i' *((\+|-|\*|/|\||&|%|)=[^=]|\+\+|--) *(0x|)[0-9]*(;|)' $* |\ |
|
|
|
egrep -v $i' *= *(0x|)[0-9]{1,};'>/dev/null || echo "possibly constant :"$i >> $TMP |
|
|
|
echo $i | $GREP '^NULL$' && continue |
|
|
|
$EGREP $i' *(\+|-|\*|/|\||&|%|)=[^=]' $* >/dev/null || echo "possibly never written:"$i >> $TMP |
|
|
|
$EGREP '(=|\(|return).*'$i'(==|[^=])*$' $* >/dev/null || echo "possibly never read :"$i >> $TMP |
|
|
|
$EGREP -o $i' *((\+|-|\*|/|\||&|%|)=[^=]|\+\+|--) *(0x|)[0-9]*(;|)' $* |\ |
|
|
|
$EGREP -v $i' *= *(0x|)[0-9]{1,};'>/dev/null || echo "possibly constant :"$i >> $TMP |
|
|
|
done |
|
|
|
if test -e $TMP ; then |
|
|
|
printf '\npossibly unused variables\n' |
|
|
|
cat $TMP |
|
|
|
fi |
|
|
|
|
|
|
|
grep '^+++ .*Changelog' $* >/dev/null || printf "\nMissing changelog entry (ignore if minor change)\n" |
|
|
|
$GREP '^+++ .*Changelog' $* >/dev/null || printf "\nMissing changelog entry (ignore if minor change)\n" |
|
|
|
|
|
|
|
cat $* | tr '\n' '@' | egrep --color=always -o '(fprintf|av_log|printf)\([^)]*\)[+ ;@]*\1' >$TMP && printf "\nMergeable calls\n" |
|
|
|
cat $* | tr '\n' '@' | $EGREP --color=always -o '(fprintf|av_log|printf)\([^)]*\)[+ ;@]*\1' >$TMP && printf "\nMergeable calls\n" |
|
|
|
cat $TMP | tr '@' '\n' |
|
|
|
|
|
|
|
cat $* | tr '\n' '@' | egrep --color=always -o '\+ *if *\( *([A-Za-z0-9_]*) *[<>]=? *[0-9]* *\) * \1 *= *[0-9]* *;[ @\\+]*else *if *\( *\1 *[<>]=? *[0-9]* *\) *\1 *= *[0-9]* *;' >$TMP && printf "\nav_clip / av_clip_uint8 / av_clip_int16 / ...\n" |
|
|
|
cat $* | tr '\n' '@' | $EGREP --color=always -o '\+ *if *\( *([A-Za-z0-9_]*) *[<>]=? *[0-9]* *\) * \1 *= *[0-9]* *;[ @\\+]*else *if *\( *\1 *[<>]=? *[0-9]* *\) *\1 *= *[0-9]* *;' >$TMP && printf "\nav_clip / av_clip_uint8 / av_clip_int16 / ...\n" |
|
|
|
cat $TMP | tr '@' '\n' |
|
|
|
|
|
|
|
cat $* | tr '\n' '@' | egrep --color=always -o '\+ *if *\( *([A-Za-z0-9_]*) *[<>]=? *([A-Za-z0-9_]*) *\)[ @\\+]*(\1|\2) *= *(\1|\2) *;' >$TMP && printf "\nFFMIN/FFMAX\n" |
|
|
|
cat $* | tr '\n' '@' | $EGREP --color=always -o '\+ *if *\( *([A-Za-z0-9_]*) *[<>]=? *([A-Za-z0-9_]*) *\)[ @\\+]*(\1|\2) *= *(\1|\2) *;' >$TMP && printf "\nFFMIN/FFMAX\n" |
|
|
|
cat $TMP | tr '@' '\n' |
|
|
|
|
|
|
|
cat $* | tr '\n' '@' | egrep --color=always -o '\+ *if *\( *([A-Za-z0-9_]*) *\)[ @\\+]*av_free(p|) *\( *(&|) *\1[^-.]' >$TMP && printf "\nav_free(NULL) is safe\n" |
|
|
|
cat $* | tr '\n' '@' | $EGREP --color=always -o '\+ *if *\( *([A-Za-z0-9_]*) *\)[ @\\+]*av_free(p|) *\( *(&|) *\1[^-.]' >$TMP && printf "\nav_free(NULL) is safe\n" |
|
|
|
cat $TMP | tr '@' '\n' |
|
|
|
|
|
|
|
cat $* | tr '\n' '@' | egrep --color=always -o '[^a-zA-Z0-9_]([a-zA-Z0-9_]*) *= *av_malloc *\([^)]*\)[ @;\\+]*memset *\( *\1' >$TMP && printf "\nav_mallocz()\n" |
|
|
|
cat $* | tr '\n' '@' | $EGREP --color=always -o '[^a-zA-Z0-9_]([a-zA-Z0-9_]*) *= *av_malloc *\([^)]*\)[ @;\\+]*memset *\( *\1' >$TMP && printf "\nav_mallocz()\n" |
|
|
|
cat $TMP | tr '@' '\n' |
|
|
|
|
|
|
|
|
|
|
|
# doesnt work |
|
|
|
#cat $* | tr '\n' '@' | egrep -o '[^a-zA-Z_0-9]([a-zA-Z][a-zA-Z_0-9]*) *=[^=].*\1' | egrep -o '[^a-zA-Z_0-9]([a-zA-Z][a-zA-Z_0-9]*) *=[^=].*\1 *=[^=]' >$TMP && printf "\nPossibly written 2x before read\n" |
|
|
|
#cat $* | tr '\n' '@' | $EGREP -o '[^a-zA-Z_0-9]([a-zA-Z][a-zA-Z_0-9]*) *=[^=].*\1' | $EGREP -o '[^a-zA-Z_0-9]([a-zA-Z][a-zA-Z_0-9]*) *=[^=].*\1 *=[^=]' >$TMP && printf "\nPossibly written 2x before read\n" |
|
|
|
#cat $TMP | tr '@' '\n' |
|
|
|
|
|
|
|
exit |
|
|
@@ -163,7 +165,7 @@ exit |
|
|
|
TODO/idea list: |
|
|
|
|
|
|
|
for all demuxers & muxers |
|
|
|
grep for "avctx->priv_data" |
|
|
|
$EGREP for "avctx->priv_data" |
|
|
|
|
|
|
|
vertical align = |
|
|
|
/* and * align |
|
|
|