[Tux4kids-commits] r124 - in tuxmath/trunk: . docs src

David Bruce dbruce-guest at alioth.debian.org
Thu Mar 8 21:25:18 CET 2007


Author: dbruce-guest
Date: 2007-03-08 20:25:18 +0000 (Thu, 08 Mar 2007)
New Revision: 124

Added:
   tuxmath/trunk/config.sub
Modified:
   tuxmath/trunk/docs/INSTALL.txt
   tuxmath/trunk/docs/TODO.txt
   tuxmath/trunk/docs/changelog
   tuxmath/trunk/src/Makefile.am
   tuxmath/trunk/src/Makefile.in
   tuxmath/trunk/src/credits.c
   tuxmath/trunk/src/fileops.c
   tuxmath/trunk/src/fileops.h
   tuxmath/trunk/src/game.c
   tuxmath/trunk/src/highscore.c
   tuxmath/trunk/src/highscore.h
   tuxmath/trunk/src/options.c
   tuxmath/trunk/src/options.h
   tuxmath/trunk/src/setup.c
   tuxmath/trunk/src/titlescreen.c
   tuxmath/trunk/src/tuxmath.h
Log:
First commit at alioth


Added: tuxmath/trunk/config.sub
===================================================================
--- tuxmath/trunk/config.sub	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/config.sub	2007-03-08 20:25:18 UTC (rev 124)
@@ -0,0 +1,1608 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+#   Inc.
+
+timestamp='2006-07-02'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| mt \
+	| msp430 \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16c)
+		basic_machine=cr16c-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+        spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+        c4x-* | tic4x-*)
+        	os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:

Modified: tuxmath/trunk/docs/INSTALL.txt
===================================================================
--- tuxmath/trunk/docs/INSTALL.txt	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/docs/INSTALL.txt	2007-03-08 20:25:18 UTC (rev 124)
@@ -1,6 +1,6 @@
 INSTALL.txt for "Tux, Of Math Command" (aka "Tuxmath")
 
-Nov 18, 2006
+March 5, 2007
 
 
 Requirements
@@ -84,9 +84,13 @@
     sound and music.  This library is optional, but without it, the program
     will be completely silent.
 
-    Note: libSDL, SDL_image and SDL_mixer are all free, Open Source libraries,
-    released under the GNU Library General Public License (LGPL).
+    As of version 1.5, TuxMath uses SDL_ttf to display true type fonts.
+    The freely distributable Andika font is included under data/fonts.
 
+    Note: libSDL, SDL_image, SDL_ttf and SDL_mixer are all free, 
+    Open Source libraries, released under the GNU Library General Public 
+    License (LGPL).
+
     Getting SDL
     -----------
       You can download "libSDL," "SDL_image," and "SDL_mixer" from the
@@ -134,6 +138,12 @@
       will need the SDL dev files as noted above, as well as the GNU developer
       tools, including automake-1.9 and autotools-dev.
 
+      (Note: I have recently put some of the autogenerated files back under 
+      version control, the idea being to allow building with "./configure;
+      make; make install" even if autotools are not available, as may be the
+      case when trying to build for a different platform or OS.  I have not
+      yet confirmed that this works - DSB).
+
       If you are using a deb or rpm-based distribution, your distro may have
       tuxmath in a prepared package, in which case your job is as simple as
       "apt-get install tuxmath".
@@ -154,7 +164,7 @@
         - mkdir /usr/local/cross-tools/i586-mingw32msvc/lib
         - mkdir /usr/local/cross-tools/i586-mingw32msvc/include
 
-      3. Install precompiled win32 dev files (lib and includes) for SDL, SDL-image
+      3. Install precompiled win32dev files (lib and includes) for SDL, SDL-image
          and SDL-mixer in the lib and include directories you just created.
          You can get all of these from www.libsdl.org. I had some trouble with
          this step as the SDL libs have varieties intended for both mingw32 and MSVC -
@@ -163,11 +173,12 @@
          to get it to work.  My /usr/local/cross-tools/i586-mingw32msvc/lib contains:
 
          dbruce at debian:/usr/local/cross-tools/i586-mingw32msvc/lib$ ls
-         SDL_image.dll  jpeg.dll      libgw32c.a    smpeg.dll
-         SDL_image.lib  libSDL.dll.a  libpng12.dll  vorbis.dll
-         SDL_mixer.dll  libSDL.la     libtiff.dll   vorbisfile.dll
-         SDL_mixer.lib  libSDLmain.a  ogg.dll       zlib1.dll
+         jpeg.dll      libSDL.la     SDL_image.dll  SDL_ttf.dll     zlib1.dll
+         libgw32c.a    libSDLmain.a  SDL_image.lib  smpeg.dll
+         libpng12.dll  libtiff.dll   SDL_mixer.dll  vorbis.dll
+         libSDL.dll.a  ogg.dll       SDL_mixer.lib  vorbisfile.dll
 
+
          The header files can be in their own folders as long as they are under
          /usr/local/cross-tools/i586-mingw32msvc/include
 
@@ -177,13 +188,14 @@
 
       5. You need to have a directory containing all of the dlls that will need to be
          packaged into the installer.  The Makefile expects them to be in NSI_DLL_DIR,
-         which is set to  ~/tuxmath_dll. On my machine, this contains:
+         which I have set to  ~/tuxmath_dll. On my machine, this contains:
 
          dbruce at debian:~/tuxmath_dll$ ls
-         SDL.dll        jpeg.dll      
-         SDL_image.dll  libpng12.dll  smpeg.dll   zlib1.dll
-         SDL_mixer.dll  libtiff.dll   
+        jpeg.dll      ogg.dll        SDL_mixer.dll  vorbis.dll
+        libpng12.dll  SDL.dll        SDL_ttf.dll    vorbisfile.dll
+        libtiff.dll   SDL_image.dll  smpeg.dll      zlib1.dll
 
+
         (Note - this has mostly the same files as the cross-tools lib directory - it is most
         likely possible to eliminate this redundancy in some way.).
 
@@ -196,7 +208,7 @@
          ./cross-make.sh
          ./cross-make.sh nsis
 
-      This should create the windows installer file ("tuxmath-1.0.1-win32-installer.exe")
+      This should create the windows installer file ("tuxmath-1.5-win32-installer.exe")
       under trunk.
 
       Installation on Windows:
@@ -204,12 +216,13 @@
       To install, simply execute the installer file on the Windows machine. Depending on
       the version of Windows and the computer's security settings, it may be necessary
       to install with administrator privileges in order to use the default installation
-      location (C:\Program Files\Tuxmath). The program can be installed in any writable
-      location and should function correctly.  It can be run with ordinary user privileges,
+      location (C:\Program Files\Tuxmath). If you are not able to write to the default
+      location, TuxMath can be installed in any writable location (i.e. "My Documents")
+      and should function correctly.  It can be run with ordinary user privileges,
       even if installed by the administrator.
 
 
-  Mac OSX:
+  Mac OSX: (contributed by Tim Holy)
   -------
       Building from source:
       --------------------

Modified: tuxmath/trunk/docs/TODO.txt
===================================================================
--- tuxmath/trunk/docs/TODO.txt	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/docs/TODO.txt	2007-03-08 20:25:18 UTC (rev 124)
@@ -1,17 +1,16 @@
 TODO.txt for "tuxmath"
 
-Nov 18, 2006
+2007.Mar.05
 
 Build:
   * Refine NSIS installer for Windows (or perhaps executable
     itself) to create Start Menu link to options.txt file
-  * Maybe should have configure script in Subversion so build
-    can be done without Autotools?
 
 Graphics:
-  * Consider changing city graphics to something less violent.
-  * Add more city graphic colors.
-  * Consider changing default resolution to 800x600, maybe higher.
+  * Make game more "themable" (there is a pending request for an
+    "Egyptian" theme with pyramids and an "Islands" theme with
+    palm trees, etc.)
+  * svg support - allow game to draw correctly at any resolution.
 
 Interface:
   * Add more sound effects and music files
@@ -26,24 +25,26 @@
   * More entertaining "victory" and "defeat" screens
   * Add option to review missed questions to end-of-game screens
   * Add option to play next game using missed questions from current game
-  * Lesson series of progressively harder "missions".
   * End-of-level calculations, bonuses and animations
-  * Add special targets that restore shields or rebuild cities.
+  * "Lesson server" with login - keep track of lessons completed, percent
+    correct, etc. on a per-user basis, even if installation doesn't have 
+    students log into computers individually.
+  * Multiplayer mode - points go to whoever shoots the comet first.
 
 Documentation:
   * Finish README.txt
   * Finish INSTALL.txt
 
 Options:
-  * Merge in code from TuxType for title screen and options system
   * Make use of some of function keys(F1-F12) to toggle settings in-game
-  * Display numbers instead of formulas if no operators are selected: "typing tutor" mode.
+    (perhaps speed control, muting of music)
   * Save options.
   * Admin options screen / files
   * Command-line options based on grade-level (?)
+  * Internationalization - use gettext() for all strings
 
 Code:
   * Optimize graphics blitting!!!
   * Abstract SDL_BlitSurface() calls
+  * Consider moving to C++ (ducks!)
 
-

Modified: tuxmath/trunk/docs/changelog
===================================================================
--- tuxmath/trunk/docs/changelog	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/docs/changelog	2007-03-08 20:25:18 UTC (rev 124)
@@ -1,5 +1,21 @@
 changelog for "tuxmath"
 
+2007.Mar.05  (https://svn.tux4kids.net/tuxmath/ - revision 75)
+  Code:
+    * Most of tuxtype-derived code now using functions in
+      fileops.c to load - trying to make this more consistent
+      and unified. Fixes problems finding data files on some
+      Windows machines.
+    * Beginning of audit of all pointers to prevent segfaults and
+      other memory management errors.
+  Game:
+    * Data structures and several functions in place for high score
+      lists (nothing user-visible yet).
+
+      Last commit at svn.tux4kids.net before move to Alioth.
+
+      David Bruce <dbruce at tampabay.rr.com>
+
 2007.Feb.12  (https://svn.tux4kids.net/tuxmath/ - revision 74)
   Code:
     * Fixed MC_FORMULA_LEN bug causing long comet strings to

Modified: tuxmath/trunk/src/Makefile.am
===================================================================
--- tuxmath/trunk/src/Makefile.am	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/Makefile.am	2007-03-08 20:25:18 UTC (rev 124)
@@ -8,7 +8,7 @@
 TuxMath_SOURCES = tuxmath.c setup.c titlescreen.c game.c \
 		options.c credits.c playsound.c highscore.c \
 		theme.c loaders.c alphabet.c pause.c gettext.c audio.c \
-                mathcards.c fileops.c tuxmathrc.c
+                mathcards.c fileops.c tuxmathrc.rc
 
 tuxmath_SOURCES = tuxmath.c setup.c titlescreen.c game.c \
 		options.c credits.c playsound.c highscore.c \

Modified: tuxmath/trunk/src/Makefile.in
===================================================================
--- tuxmath/trunk/src/Makefile.in	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/Makefile.in	2007-03-08 20:25:18 UTC (rev 124)
@@ -55,7 +55,7 @@
 	credits.$(OBJEXT) playsound.$(OBJEXT) highscore.$(OBJEXT) \
 	theme.$(OBJEXT) loaders.$(OBJEXT) alphabet.$(OBJEXT) \
 	pause.$(OBJEXT) gettext.$(OBJEXT) audio.$(OBJEXT) \
-	mathcards.$(OBJEXT) fileops.$(OBJEXT) tuxmathrc.$(OBJEXT)
+	mathcards.$(OBJEXT) fileops.$(OBJEXT)
 TuxMath_OBJECTS = $(am_TuxMath_OBJECTS)
 TuxMath_LDADD = $(LDADD)
 am_tuxmath_OBJECTS = tuxmath.$(OBJEXT) setup.$(OBJEXT) \
@@ -191,7 +191,7 @@
 TuxMath_SOURCES = tuxmath.c setup.c titlescreen.c game.c \
 		options.c credits.c playsound.c highscore.c \
 		theme.c loaders.c alphabet.c pause.c gettext.c audio.c \
-                mathcards.c fileops.c tuxmathrc.c
+                mathcards.c fileops.c tuxmathrc.rc
 
 tuxmath_SOURCES = tuxmath.c setup.c titlescreen.c game.c \
 		options.c credits.c playsound.c highscore.c \
@@ -297,7 +297,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/theme.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/titlescreen.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tuxmath.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tuxmathrc.Po at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<

Modified: tuxmath/trunk/src/credits.c
===================================================================
--- tuxmath/trunk/src/credits.c	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/credits.c	2007-03-08 20:25:18 UTC (rev 124)
@@ -90,7 +90,7 @@
   "",
   "",
   "-WEBSITE",
-  "TUX4KIDS.COM",
+  "TUX4KIDS.DEBIAN.ALIOTH.ORG",
   "", /* The following blanks cause the screen to scroll to complete blank: */
   "",
   "",

Modified: tuxmath/trunk/src/fileops.c
===================================================================
--- tuxmath/trunk/src/fileops.c	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/fileops.c	2007-03-08 20:25:18 UTC (rev 124)
@@ -55,6 +55,7 @@
 #include "setup.h"
 #include "mathcards.h"
 #include "options.h"
+#include "highscore.h"
 
 /* Used by both write_pregame_summary() and */
 /* write_postgame_summary() so defined with */
@@ -83,12 +84,14 @@
 /* local function prototypes: */
 static int find_tuxmath_dir(void);
 static int str_to_bool(char* val);
+static int read_config_file(FILE* fp, int file_type);
+static int write_config_file(FILE* fp, int verbose);
 
 /* fix HOME on windows */
 #ifdef BUILD_MINGW32
 #include <windows.h>
 
-/* STOLEN in tuxpaint */
+/* STOLEN from tuxpaint */
 
 /*
   Removes a single '\' or '/' from end of path 
@@ -156,12 +159,13 @@
 /* WIndows 98/ME: TuxMath install dir/userdata/Options */
 #define OPTIONS_SUBDIR ""
 #define OPTIONS_FILENAME "options.cfg"
-
+#define HIGHSCORE_FILENAME "highscores.txt"
 #else
 
 # define get_home getenv("HOME")
 #define OPTIONS_SUBDIR "/.tuxmath"
 #define OPTIONS_FILENAME "options"
+#define HIGHSCORE_FILENAME "highscores"
 
 #endif
 
@@ -209,7 +213,7 @@
   strcat(opt_path, OPTIONS_SUBDIR "/" OPTIONS_FILENAME);
 
   #ifdef TUXMATH_DEBUG
-  printf("\nIn setup() full path to config file is: = %s\n", opt_path);
+  printf("\nIn read_user_config_file() full path to config file is: = %s\n", opt_path);
   #endif
 
   fp = fopen(opt_path, "r");
@@ -472,11 +476,82 @@
   return 0;
 }
 
+/* Look for a high score table file in the user's homedir */
+/* and if found, pass the FILE* to read_high_scores_() in */
+/* highscore.c to actually read in scores. (A "global"    */
+/* location might in theory be better, but most schools   */
+/* run Windows with all students sharing a common login   */
+/* that may not be able to write to "global" locations).  */
+int read_high_scores(void)
+{
+  FILE* fp;
+  char opt_path[PATH_MAX];
 
+  /* find $HOME and tack on file name: */
+  strcpy(opt_path, get_user_data_dir());
+  strcat(opt_path, OPTIONS_SUBDIR "/" HIGHSCORE_FILENAME);
 
+  #ifdef TUXMATH_DEBUG
+  printf("\nIn read_high_scores() full path to file is: = %s\n", opt_path);
+  #endif
 
+  fp = fopen(opt_path, "r");
+  if (fp) /* file exists */
+  {
+    read_high_scores_fp(fp);
+    fclose(fp);
+    fp = NULL;
+    return 1;
+  }
+  else  /* could not open config file: */
+  {
+    return 0;
+  }
+}
 
+/* Write high score table in user's homedir in format     */
+/* compatible with read_high_scores() above.  For human-  */
+/* readable output for debugging purposes, print_high_    */
+/* scores() in highscore.c is better.                     */
+int write_high_scores(void)
+{
+  char opt_path[PATH_MAX];
+  FILE* fp;
 
+  if (!find_tuxmath_dir())
+  {
+    fprintf(stderr, "\nCould not find or create tuxmath dir\n");
+    return 0;
+  }
+
+  /* find $HOME and add rest of path to config file: */
+  strcpy(opt_path, get_user_data_dir());
+  strcat(opt_path, OPTIONS_SUBDIR "/" HIGHSCORE_FILENAME);
+
+  #ifdef TUXMATH_DEBUG
+  printf("\nIn write_high_scores() full path to file is: = %s\n", opt_path);
+  #endif
+
+  fp = fopen(opt_path, "w");
+  if (fp)
+  {
+    write_high_scores_fp(fp);
+    fclose(fp);
+    fp = NULL;
+    return 1;
+  }
+  else
+    return 0;
+}
+
+
+/***********************************************************
+*                                                          *
+*       "Private methods" with file scope only             *
+*                                                          *
+***********************************************************/
+
+
 /* This function does the heavy lifting, so to speak:     */
 /* Note that file_type simply indicates whether or not    */
 /* to change admin-only settings such as per_user_config. */
@@ -2068,6 +2143,10 @@
 /*****************************************************************/
 
 /* returns 1 if all data files successfully loaded, 0 otherwise. */
+
+/* TODO load only "igloo" or "city" files, not both.             */
+/* TODO get rid of files no longer used.                         */
+
 int load_image_data()
 {
   int total_files, i;

Modified: tuxmath/trunk/src/fileops.h
===================================================================
--- tuxmath/trunk/src/fileops.h	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/fileops.h	2007-03-08 20:25:18 UTC (rev 124)
@@ -232,14 +232,13 @@
 int read_user_config_file(void);
 int read_named_config_file(char* filename);
 int write_user_config_file(void);
+int read_high_scores(void);
+int write_high_scores(void);
 
 /* These functions used by game() to record game summary: */
 int write_pregame_summary(void);
 int write_postgame_summary(void);
 
-/* FIXME these will probably become "local" functions: */
-int read_config_file(FILE* fp, int file_type);
-int write_config_file(FILE* fp, int verbose);
 
 int load_image_data();
 int load_default_font();

Modified: tuxmath/trunk/src/game.c
===================================================================
--- tuxmath/trunk/src/game.c	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/game.c	2007-03-08 20:25:18 UTC (rev 124)
@@ -424,6 +424,8 @@
     write_postgame_summary();
   }  
 
+  /* Save score in case needed for high score table: */
+  Opts_SetLastScore(score);
 
 #ifdef TUXMATH_DEBUG
   fprintf(stderr, "Leaving game():\n");

Modified: tuxmath/trunk/src/highscore.c
===================================================================
--- tuxmath/trunk/src/highscore.c	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/highscore.c	2007-03-08 20:25:18 UTC (rev 124)
@@ -12,12 +12,6 @@
 #include "highscore.h"
 #include "tuxmath.h"
 
-#define HIGH_SCORES_SAVED 10
-#define HIGH_SCORE_NAME_LENGTH 32
-
-
-
-
 typedef struct high_score_entry {
   int score;
   char name[HIGH_SCORE_NAME_LENGTH];
@@ -152,3 +146,69 @@
     }
   }
 }
+
+
+int read_high_scores_fp(FILE* fp)
+{
+  char buf[PATH_MAX];
+  char* name_read;
+  int score_read;
+  int diff_level;
+
+
+#ifdef TUXMATH_DEBUG
+  printf("\nEntering read_high_scores_fp()\n");
+#endif
+
+  /* get out if file pointer invalid: */
+  if(!fp)
+  {
+    fprintf(stderr, "In read_high_scores_fp(), file pointer invalid!\n");
+    return 0;
+  }
+
+  /* make sure we start at beginning: */
+  rewind(fp);
+
+  /* read in a line at a time: */
+  while (fgets (buf, PATH_MAX, fp))
+  { 
+    /* Ignore comment lines: */
+    if ((buf[0] == ';') || (buf[0] == '#'))
+    {
+      continue;
+    }
+    /* Split up line with strtok()to get needed values,  */ 
+    /* then call insert_score() for each line.           */
+  }
+  return 1;
+}
+
+/* Write high score table to provided FILE* in format     */
+/* compatible with read_high_scores() above.  For human-  */
+/* readable output for debugging purposes, print_high_    */
+/* scores() in highscore.c is better. write_high_scores() */
+/* in fileops.c takes care of checking paths, opening     */
+/* and closing the file, etc.                             */
+void write_high_scores_fp(FILE* fp)
+{
+  int i, j;
+
+  /* get out if file pointer invalid: */
+  if(!fp)
+  {
+    fprintf(stderr, "In write_high_scores_fp(), file pointer invalid!\n");
+    return;
+  }
+
+  for (i = 0; i < NUM_HIGH_SCORE_LEVELS; i++)
+  {
+    for (j = 0; j < HIGH_SCORES_SAVED; j++)
+    {
+      fprintf(fp, "%d\t%d\t%s\n", i,
+                  high_scores[i][j].score,
+                  high_scores[i][j].name);
+    }
+  }
+  return;
+}

Modified: tuxmath/trunk/src/highscore.h
===================================================================
--- tuxmath/trunk/src/highscore.h	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/highscore.h	2007-03-08 20:25:18 UTC (rev 124)
@@ -16,16 +16,13 @@
 
 #include "tuxmath.h"
 
-enum { 
-  CADET_HIGH_SCORE,
-  SCOUT_HIGH_SCORE,
-  RANGER_HIGH_SCORE,
-  ACE_HIGH_SCORE,
-  NUM_HIGH_SCORE_LEVELS
-};
+
+
 int check_score_place(int diff_level, int new_score);
 int insert_score(char* playername, int diff_level, int new_score);
 void initialize_scores(void);
 void print_high_scores(FILE* fp);
+int read_high_scores_fp(FILE* fp);
+void write_high_scores_fp(FILE* fp);
 
 #endif

Modified: tuxmath/trunk/src/options.c
===================================================================
--- tuxmath/trunk/src/options.c	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/options.c	2007-03-08 20:25:18 UTC (rev 124)
@@ -397,6 +397,7 @@
   game_options->danger_level_speedup = DEFAULT_DANGER_LEVEL_SPEEDUP;
   game_options->danger_level_max = DEFAULT_DANGER_LEVEL_MAX;
   game_options->city_expl_handicap = DEFAULT_CITY_EXPL_HANDICAP;
+  game_options->last_score = DEFAULT_LAST_SCORE;
 
   game_options->num_cities = DEFAULT_NUM_CITIES;   /* MUST BE AN EVEN NUMBER! */
   game_options->num_bkgds = DEFAULT_NUM_BKGDS;
@@ -740,8 +741,12 @@
   game_options->sound_hw_available = int_to_bool(val);
 }
 
+/* Allows game() to store score for high score table code: */
+void Opts_SetLastScore(int val)
+{
+  game_options->last_score = val;
+}
 
-
 /* "Get" functions for tuxmath options struct: */
 int Opts_PerUserConfig(void)
 {
@@ -972,7 +977,7 @@
   return game_options->max_comets;
 }
 
-
+/* FIXME maybe not good idea to have a malloc() in a function like this: */
 char* Opts_NextMission(void)
 {
   char* str;
@@ -995,6 +1000,17 @@
 }
 
 
+int Opts_LastScore(void)
+{
+  if (!game_options)
+  {
+    fprintf(stderr, "\nOpts_LastScore(): game_options not valid!\n");
+    return GAME_OPTS_INVALID;
+  }
+  return game_options->last_score;
+}
+
+
 int Opts_UseFeedback(void)
 {
   if (!game_options)

Modified: tuxmath/trunk/src/options.h
===================================================================
--- tuxmath/trunk/src/options.h	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/options.h	2007-03-08 20:25:18 UTC (rev 124)
@@ -57,6 +57,8 @@
   /* whether sound system is successfully initialized and sound files loaded: */
   /* this flag is set by the program, not the user, and is not in the config file. */
   int sound_hw_available;
+  /* place to save score of last game - not read in from file: */
+  int last_score;
   /* not sure the rest of these belong in here */
   int num_cities;  /* MUST BE AN EVEN NUMBER! */
   int num_bkgds;
@@ -120,7 +122,10 @@
 /* whether sound system is successfully initialized and sound files loaded: */
 /* this flag is set by the program, not the user, and is not in the config file. */
 void Opts_SetSoundHWAvailable(int val);
+/* Used by high score table code, not config file: */
+void Opts_SetLastScore(int val);
 
+
 /* "Get" functions for tuxmath options struct: */
 int Opts_PerUserConfig(void);
 int Opts_UseSound(void);
@@ -157,6 +162,8 @@
 /* this is the function that says if sound is both desired and actually available: */
 int Opts_UsingSound(void);
 
+/* Returns score of last Arcade-type game this session: */
+int Opts_LastScore(void);
 
 /* print options values to stream - for debugging purposes - has been */
 /* superceded by write_config_file() to actually write human-readable file. */

Modified: tuxmath/trunk/src/setup.c
===================================================================
--- tuxmath/trunk/src/setup.c	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/setup.c	2007-03-08 20:25:18 UTC (rev 124)
@@ -154,6 +154,12 @@
 
   /* Now set up high score tables: */
   initialize_scores();
+  if (!read_high_scores())
+  {
+    fprintf(stderr, "\nCould not find high score table.\n");
+    /* (can still proceed).         */
+  }
+
 #ifdef TUXMATH_DEBUG
   print_high_scores(stdout);  
 #endif

Modified: tuxmath/trunk/src/titlescreen.c
===================================================================
--- tuxmath/trunk/src/titlescreen.c	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/titlescreen.c	2007-03-08 20:25:18 UTC (rev 124)
@@ -32,6 +32,7 @@
 #include "mathcards.h"
 #include "setup.h"     //for cleanup()
 #include "credits.h"
+#include "highscore.h"
 
 /* --- Data Structure for Dirty Blitting --- */
 SDL_Rect srcupdate[MAX_UPDATES];
@@ -164,7 +165,7 @@
 
 /****************************************
 * TitleScreen: Display the title screen *
-*****************************************
+****************************************/
 
 /* display title screen, get input */
 
@@ -667,6 +668,16 @@
           /* The 'Ace' mission sets this to 0.1 - put back to 1 in case */
           /* next mission file forgets to specify it:                   */
           MC_SetFractionToKeep(1.0);
+          /* See if player made high score list!                        */
+          if (check_score_place(ACE_HIGH_SCORE, Opts_LastScore()))
+          {
+            /* (Get name string from player) */
+            insert_score("Good Player", ACE_HIGH_SCORE, Opts_LastScore());
+            write_high_scores();
+#ifdef TUXMATH_DEBUG
+            print_high_scores(stderr);
+#endif 
+          }
         }
         else
         {
@@ -691,7 +702,7 @@
       }
 
 
-    /* Third (Game Options) page:-----------------------------------------------*/
+    /* Third (Game Options) page:----------*/
 
       case INTERFACE_OPTIONS:
       {

Modified: tuxmath/trunk/src/tuxmath.h
===================================================================
--- tuxmath/trunk/src/tuxmath.h	2007-03-05 14:39:12 UTC (rev 123)
+++ tuxmath/trunk/src/tuxmath.h	2007-03-08 20:25:18 UTC (rev 124)
@@ -30,7 +30,7 @@
 #endif
 
 //#define NOSOUND
-//#define TUXMATH_DEBUG   /* for conditional compilation of debugging output */
+#define TUXMATH_DEBUG   /* for conditional compilation of debugging output */
 //#define FEEDBACK_DEBUG  /* for Tim's feedback speed control code           */
 
 /* Maximum length of file path: */
@@ -69,6 +69,7 @@
 #define DEFAULT_DANGER_LEVEL_SPEEDUP 1.1
 #define DEFAULT_DANGER_LEVEL_MAX 0.9
 #define DEFAULT_CITY_EXPL_HANDICAP 0
+#define DEFAULT_LAST_SCORE 0
 
 /* These values are hard-coded and used 'as is' by the program */
 /* (i.e. these behaviors require recompilation to change)   */ 
@@ -87,6 +88,19 @@
 #define DEFAULT_FONT_NAME "AndikaDesRevA.ttf"
 #define DEFAULT_MENU_FONT_SIZE 18
 
+
+#define HIGH_SCORES_SAVED 10
+#define HIGH_SCORE_NAME_LENGTH 32
+
+enum { 
+  CADET_HIGH_SCORE,
+  SCOUT_HIGH_SCORE,
+  RANGER_HIGH_SCORE,
+  ACE_HIGH_SCORE,
+  NUM_HIGH_SCORE_LEVELS
+};
+
+
 /* Going away soon: */
 typedef struct range_type {
   int min;
@@ -120,6 +134,7 @@
 
 extern TTF_Font  *default_font;
 
+
 #ifndef NOSOUND
 extern Mix_Chunk* sounds[];    /* declared in setup.c; also used in fileops.c, playsound.c */
 extern Mix_Music* musics[];    /* declared in setup.c; also used in fileops.c, game.c  */




More information about the Tux4kids-commits mailing list