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