#!/bin/sh
# ***** BEGIN LICENSE BLOCK ***** 
# Version: MPL 1.1/GPL 2.0/LGPL 2.1 
#
# The contents of this file are subject to the Mozilla Public License Version 1.1 (the 
# "License"); you may not use this file except in compliance with the License. You may obtain 
# a copy of the License at http://www.mozilla.org/MPL/ 
#
# Software distributed under the License is distributed on an "AS IS" basis, WITHOUT 
# WARRANTY OF ANY KIND, either express or implied. See the License for the specific 
# language governing rights and limitations under the License. 
#
# The Original Code is [Open Source Virtual Machine.] 
#
# The Initial Developer of the Original Code is Adobe System Incorporated.  Portions created 
# by the Initial Developer are Copyright (C)[ #YEARS# ] Adobe Systems Incorporated. All Rights 
# Reserved. 
#
# Contributor(s): Adobe AS3 Team
#
# Alternatively, the contents of this file may be used under the terms of either the GNU 
# General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public 
# License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the 
# LGPL are applicable instead of those above. If you wish to allow use of your version of this 
# file only under the terms of either the GPL or the LGPL, and not to allow others to use your 
# version of this file under the terms of the MPL, indicate your decision by deleting provisions 
# above and replace them with the notice and other provisions required by the GPL or the 
# LGPL. If you do not delete the provisions above, a recipient may use your version of this file 
# under the terms of any one of the MPL, the GPL or the LGPL. 
# 
# ***** END LICENSE BLOCK ***** */

#
# check for unused constants
# 

echo "Moving some files temporarily "
mv -v ../core/ErrorConstants.as ../core/ErrorConstants.a
mv -v ../core/ErrorConstants.h ../core/ErrorConstants.ash

if [ -f "../core/ErrorConstants.as" ]; then
	echo "../core/ErrorConstants.as must be temporarily renamed before running this script "
	exit 1;
fi
if [ -f "../core/ErrorConstants.h" ]; then
	echo "../core/ErrorConstants.h must be temporarily renamed before running this script "
	exit 1;
fi

# hunka big file!
echo "Building monster big file for processing"
find ../. -name \*.cpp -exec cat {} \; > stale.raw
find ../. -name \*.as -exec cat {} \; >> stale.raw
find ../. -name \*.h -exec cat {} \; >> stale.raw

echo "Restoring files "
mv -v  ../core/ErrorConstants.a ../core/ErrorConstants.as
mv -v  ../core/ErrorConstants.ash ../core/ErrorConstants.h

echo "Generating constant list"
./avmplus ./errorgen.abc -- stale.xml

echo "Searching for unused constants"
MISSING=" ";
for PATT in `cat stale.lst`
do
	grep -Hniq $PATT stale.raw
	if [ "${?}" != 0 ]; then
		MISSING=`echo -e $MISSING  "\r\n"  $PATT`
	fi
done

echo "Removing monster big file "
rm stale.raw
rm stale.lst

echo "Unused : "

for CHK in ${MISSING}
do
	echo "    " $CHK
	#add some commands here to help you pin down this missing constants
done
