Home | History | Annotate | Line # | Download | only in util
      1 #! /bin/bash
      2 # Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
      3 #
      4 # Licensed under the Apache License 2.0 (the "License").  You may not use
      5 # this file except in compliance with the License.  You can obtain a copy
      6 # in the file LICENSE in the source distribution or at
      7 # https://www.openssl.org/source/license.html
      8 
      9 # Find unused error function-names and reason-codes, and edit them
     10 # out of the source.  Doesn't handle line-wrapping, might have to do
     11 # some manual cleanups to fix compile errors.
     12 
     13 export X1=/tmp/f.1.$$
     14 export X2=/tmp/f.2.$$
     15 
     16 case "$1" in
     17     -f)
     18         PAT='_F_'
     19         echo Functions only
     20         ;;
     21     -[er])
     22         PAT='_R_'
     23         echo Reason codes only
     24         ;;
     25     "")
     26         PAT='_[FR]_'
     27         echo Function and reasons
     28         ;;
     29     *)
     30         echo "Usage error; one of -[efr] required."
     31         exit 1;
     32         ;;
     33 esac
     34 
     35 cd include/openssl || exit 1
     36 grep "$PAT" *  | grep -v ERR_FATAL_ERROR | awk '{print $3;}' | sort -u >$X1
     37 cd ../..
     38 
     39 for F in `cat $X1` ; do
     40     git grep -l --full-name -F $F >$X2
     41     NUM=`wc -l <$X2`
     42     test $NUM -gt 2 && continue
     43     if grep -q $F crypto/err/openssl.ec ; then
     44         echo Possibly unused $F found in openssl.ec
     45         continue
     46     fi
     47     echo $F
     48     for FILE in `cat $X2` ; do
     49         grep -v -w $F <$FILE >$FILE.new
     50         mv $FILE.new $FILE
     51     done
     52 done
     53 
     54 rm $X1 $X2
     55