#! /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.$$

cd include/openssl || exit 1
grep '_[RF]_' * | 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
