#! /bin/bash # Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the OpenSSL license (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy # in the file LICENSE in the source distribution or at # https://www.openssl.org/source/license.html # Find unused error function-names and reason-codes, and edit them # out of the source. Doesn't handle line-wrapping, might have to do # some manual cleanups to fix compile errors. export X1=/tmp/f.1.$$ export X2=/tmp/f.2.$$ case "$1" in -f) PAT='_F_' echo Functions only ;; -[er]) PAT='_R_' echo Reason codes only ;; "") PAT='_[FR]_' echo Function and reasons ;; *) echo "Usage error; one of -[efr] required." exit 1; ;; esac cd include/openssl || exit 1 grep "$PAT" * | grep -v ERR_FATAL_ERROR | awk '{print $3;}' | sort -u >$X1 cd ../.. for F in `cat $X1` ; do git grep -l --full-name -F $F >$X2 NUM=`wc -l <$X2` test $NUM -gt 2 && continue if grep -q $F crypto/err/openssl.ec ; then echo Possibly unused $F found in openssl.ec continue fi echo $F for FILE in `cat $X2` ; do grep -v -w $F <$FILE >$FILE.new mv $FILE.new $FILE done done rm $X1 $X2