DELETED CVSROOT/checkoutlist Index: CVSROOT/checkoutlist ================================================================== --- CVSROOT/checkoutlist +++ /dev/null @@ -1,14 +0,0 @@ -# The "checkoutlist" file is used to support additional version controlled -# administrative files in $CVSROOT/CVSROOT, such as template files. -# -# The first entry on a line is a filename which will be checked out from -# the corresponding RCS file in the $CVSROOT/CVSROOT directory. -# The remainder of the line is an error message to use if the file cannot -# be checked out. -# -# File format: -# -# [] -# -# comment lines begin with '#' -syncmail DELETED CVSROOT/commitinfo Index: CVSROOT/commitinfo ================================================================== --- CVSROOT/commitinfo +++ /dev/null @@ -1,15 +0,0 @@ -# The "commitinfo" file is used to control pre-commit checks. -# The filter on the right is invoked with the repository and a list -# of files to check. A non-zero exit of the filter program will -# cause the commit to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". DELETED CVSROOT/config Index: CVSROOT/config ================================================================== --- CVSROOT/config +++ /dev/null @@ -1,11 +0,0 @@ -# Set this to "no" if pserver shouldn't check system users/passwords -#SystemAuth=no - -# Set `PreservePermissions' to `yes' to save file status information -# in the repository. -#PreservePermissions=no - -# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top -# level of the new working directory when using the `cvs checkout' -# command. -#TopLevelAdmin=no DELETED CVSROOT/cvswrappers Index: CVSROOT/cvswrappers ================================================================== --- CVSROOT/cvswrappers +++ /dev/null @@ -1,23 +0,0 @@ -# This file affects handling of files based on their names. -# -# The -t/-f options allow one to treat directories of files -# as a single file, or to transform a file in other ways on -# its way in and out of CVS. -# -# The -m option specifies whether CVS attempts to merge files. -# -# The -k option specifies keyword expansion (e.g. -kb for binary). -# -# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) -# -# wildcard [option value][option value]... -# -# where option is one of -# -f from cvs filter value: path to filter -# -t to cvs filter value: path to filter -# -m update methodology value: MERGE or COPY -# -k expansion mode value: b, o, kkv, &c -# -# and value is a single-quote delimited value. -# For example: -#*.gif -k 'b' DELETED CVSROOT/editinfo Index: CVSROOT/editinfo ================================================================== --- CVSROOT/editinfo +++ /dev/null @@ -1,21 +0,0 @@ -# The "editinfo" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. DELETED CVSROOT/loginfo Index: CVSROOT/loginfo ================================================================== --- CVSROOT/loginfo +++ /dev/null @@ -1,30 +0,0 @@ -# The "loginfo" file controls where "cvs commit" log information -# is sent. The first entry on a line is a regular expression which must match -# the directory that the change is being made to, relative to the -# $CVSROOT. If a match is found, then the remainder of the line is a filter -# program that should expect log information on its standard input. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name ALL appears as a regular expression it is always used -# in addition to the first matching regex or DEFAULT. -# -# You may specify a format string as part of the -# filter. The string is composed of a `%' followed -# by a single format character, or followed by a set of format -# characters surrounded by `{' and `}' as separators. The format -# characters are: -# -# s = file name -# V = old version number (pre-checkin) -# v = new version number (post-checkin) -# -# For example: -#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog -# or -#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog - -# Lines to mail changes -CVSROOT $CVSROOT/CVSROOT/syncmail %{sVv} gawthrop@users.sourceforge.net -DEFAULT $CVSROOT/CVSROOT/syncmail %{sVv} mtt-checkins@lists.sourceforge.net DELETED CVSROOT/modules Index: CVSROOT/modules ================================================================== --- CVSROOT/modules +++ /dev/null @@ -1,26 +0,0 @@ -# Three different line formats are valid: -# key -a aliases... -# key [options] directory -# key [options] directory files... -# -# Where "options" are composed of: -# -i prog Run "prog" on "cvs commit" from top-level of module. -# -o prog Run "prog" on "cvs checkout" of module. -# -e prog Run "prog" on "cvs export" of module. -# -t prog Run "prog" on "cvs rtag" of module. -# -u prog Run "prog" on "cvs update" of module. -# -d dir Place module in directory "dir" instead of module name. -# -l Top-level directory only -- do not recurse. -# -# NOTE: If you change any of the "Run" options above, you'll have to -# release and re-checkout any working directories of these modules. -# -# And "directory" is a path to a directory relative to $CVSROOT. -# -# The "-a" option specifies an alias. An alias is interpreted as if -# everything on the right of the "-a" had been typed on the command line. -# -# You can encode a module within a module by using the special '&' -# character to interpose another module into the current module. This -# can be useful for creating a module that consists of many directories -# spread out over the entire source repository. DELETED CVSROOT/notify Index: CVSROOT/notify ================================================================== --- CVSROOT/notify +++ /dev/null @@ -1,12 +0,0 @@ -# The "notify" file controls where notifications from watches set by -# "cvs watch add" or "cvs edit" are sent. The first entry on a line is -# a regular expression which is tested against the directory that the -# change is being made to, relative to the $CVSROOT. If it matches, -# then the remainder of the line is a filter program that should contain -# one occurrence of %s for the user to notify, and information on its -# standard input. -# -# "ALL" or "DEFAULT" can be used in place of the regular expression. -# -# For example: -#ALL mail %s -s "CVS notification" DELETED CVSROOT/rcsinfo Index: CVSROOT/rcsinfo ================================================================== --- CVSROOT/rcsinfo +++ /dev/null @@ -1,13 +0,0 @@ -# The "rcsinfo" file is used to control templates with which the editor -# is invoked on commit and import. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being made to, relative to the -# $CVSROOT. For the first match that is found, then the remainder of the -# line is the name of the file that contains the template. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". DELETED CVSROOT/syncmail Index: CVSROOT/syncmail ================================================================== --- CVSROOT/syncmail +++ /dev/null @@ -1,323 +0,0 @@ -#! /usr/bin/python - -# NOTE: Until SourceForge installs a modern version of Python on the cvs -# servers, this script MUST be compatible with Python 1.5.2. - -"""Complicated notification for CVS checkins. - -This script is used to provide email notifications of changes to the CVS -repository. These email changes will include context diffs of the changes. -Really big diffs will be trimmed. - -This script is run from a CVS loginfo file (see $CVSROOT/CVSROOT/loginfo). To -set this up, create a loginfo entry that looks something like this: - - mymodule /path/to/this/script %%s some-email-addr@your.domain - -In this example, whenever a checkin that matches `mymodule' is made, this -script is invoked, which will generate the diff containing email, and send it -to some-email-addr@your.domain. - - Note: This module used to also do repository synchronizations via - rsync-over-ssh, but since the repository has been moved to SourceForge, - this is no longer necessary. The syncing functionality has been ripped - out in the 3.0, which simplifies it considerably. Access the 2.x versions - to refer to this functionality. Because of this, the script is misnamed. - -It no longer makes sense to run this script from the command line. Doing so -will only print out this usage information. - -Usage: - - %(PROGRAM)s [options] <%%S> email-addr [email-addr ...] - -Where options are: - - --cvsroot= - Use as the environment variable CVSROOT. Otherwise this - variable must exist in the environment. - - --context=# - -C # - Include # lines of context around lines that differ (default: 2). - - -c - Produce a context diff (default). - - -u - Produce a unified diff (smaller). - - --quiet / -q - Don't print as much status to stdout. - - --fromhost=hostname - -f hostname - The hostname that email messages appear to be coming from. The From: - header will of the outgoing message will look like user@hostname. By - default, hostname is the machine's fully qualified domain name. - - --help / -h - Print this text. - -The rest of the command line arguments are: - - <%%S> - CVS %%s loginfo expansion. When invoked by CVS, this will be a single - string containing the directory the checkin is being made in, relative - to $CVSROOT, followed by the list of files that are changing. If the - %%s in the loginfo file is %%{sVv}, context diffs for each of the - modified files are included in any email messages that are generated. - - email-addrs - At least one email address. -""" -import os -import sys -import re -import time -import string -import getopt -import smtplib -import pwd -import socket - -try: - from socket import getfqdn -except ImportError: - def getfqdn(): - # Python 1.5.2 :( - hostname = socket.gethostname() - byaddr = socket.gethostbyaddr(socket.gethostbyname(hostname)) - aliases = byaddr[1] - aliases.insert(0, byaddr[0]) - aliases.insert(0, hostname) - for fqdn in aliases: - if '.' in fqdn: - break - else: - fqdn = 'localhost.localdomain' - return fqdn - - -from cStringIO import StringIO - -# Which SMTP server to do we connect to? Empty string means localhost. -MAILHOST = '' -MAILPORT = 25 - -# Diff trimming stuff -DIFF_HEAD_LINES = 20 -DIFF_TAIL_LINES = 20 -DIFF_TRUNCATE_IF_LARGER = 1000 - -EMPTYSTRING = '' -SPACE = ' ' -DOT = '.' -COMMASPACE = ', ' - -PROGRAM = sys.argv[0] - -BINARY_EXPLANATION_LINES = [ - "(This appears to be a binary file; contents omitted.)\n" - ] - -REVCRE = re.compile("^(NONE|[0-9.]+)$") -NOVERSION = "Couldn't generate diff; no version number found in filespec: %s" -BACKSLASH = "Couldn't generate diff: backslash in filespec's filename: %s" - - - -def usage(code, msg=''): - print __doc__ % globals() - if msg: - print msg - sys.exit(code) - - - -def calculate_diff(filespec, contextlines): - file, oldrev, newrev = string.split(filespec, ',') - # Make sure we can find a CVS version number - if not REVCRE.match(oldrev): - return NOVERSION % filespec - if not REVCRE.match(newrev): - return NOVERSION % filespec - - if string.find(file, '\\') <> -1: - # I'm sorry, a file name that contains a backslash is just too much. - # XXX if someone wants to figure out how to escape the backslashes in - # a safe way to allow filenames containing backslashes, this is the - # place to do it. --Zooko 2002-03-17 - return BACKSLASH % filespec - - if string.find(file, "'") <> -1: - # Those crazy users put single-quotes in their file names! Now we - # have to escape everything that is meaningful inside double-quotes. - filestr = string.replace(file, '`', '\`') - filestr = string.replace(filestr, '"', '\"') - filestr = string.replace(filestr, '$', '\$') - # and quote it with double-quotes. - filestr = '"' + filestr + '"' - else: - # quote it with single-quotes. - filestr = "'" + file + "'" - if oldrev == 'NONE': - try: - if os.path.exists(file): - fp = open(file) - else: - update_cmd = "cvs -fn update -r %s -p %s" % (newrev, filestr) - fp = os.popen(update_cmd) - lines = fp.readlines() - fp.close() - # Is this a binary file? Let's look at the first few - # lines to figure it out: - for line in lines[:5]: - for c in string.rstrip(line): - if c in string.whitespace: - continue - if c < ' ' or c > chr(127): - lines = BINARY_EXPLANATION_LINES[:] - break - lines.insert(0, '--- NEW FILE: %s ---\n' % file) - except IOError, e: - lines = ['***** Error reading new file: ', - str(e), '\n***** file: ', file, ' cwd: ', os.getcwd()] - elif newrev == 'NONE': - lines = ['--- %s DELETED ---\n' % file] - else: - # This /has/ to happen in the background, otherwise we'll run into CVS - # lock contention. What a crock. - if contextlines > 0: - difftype = "-C " + str(contextlines) - else: - difftype = "-u" - diffcmd = "/usr/bin/cvs -f diff -kk %s --minimal -r %s -r %s %s" \ - % (difftype, oldrev, newrev, filestr) - fp = os.popen(diffcmd) - lines = fp.readlines() - sts = fp.close() - # ignore the error code, it always seems to be 1 :( -## if sts: -## return 'Error code %d occurred during diff\n' % (sts >> 8) - if len(lines) > DIFF_TRUNCATE_IF_LARGER: - removedlines = len(lines) - DIFF_HEAD_LINES - DIFF_TAIL_LINES - del lines[DIFF_HEAD_LINES:-DIFF_TAIL_LINES] - lines.insert(DIFF_HEAD_LINES, - '[...%d lines suppressed...]\n' % removedlines) - return string.join(lines, '') - - - -def blast_mail(subject, people, filestodiff, contextlines, fromhost): - # cannot wait for child process or that will cause parent to retain cvs - # lock for too long. Urg! - if not os.fork(): - # in the child - # give up the lock you cvs thang! - time.sleep(2) - # Create the smtp connection to the localhost - conn = smtplib.SMTP() - conn.connect(MAILHOST, MAILPORT) - user = pwd.getpwuid(os.getuid())[0] - domain = fromhost or getfqdn() - author = '%s@%s' % (user, domain) - s = StringIO() - sys.stdout = s - try: - print '''\ -From: %(author)s -To: %(people)s -Subject: %(subject)s -''' % {'author' : author, - 'people' : string.join(people, COMMASPACE), - 'subject': subject, - } - s.write(sys.stdin.read()) - # append the diffs if available - print - for file in filestodiff: - print calculate_diff(file, contextlines) - finally: - sys.stdout = sys.__stdout__ - resp = conn.sendmail(author, people, s.getvalue()) - conn.close() - os._exit(0) - - - -# scan args for options -def main(): - try: - opts, args = getopt.getopt( - sys.argv[1:], 'hC:cuqf:', - ['fromhost=', 'context=', 'cvsroot=', 'help', 'quiet']) - except getopt.error, msg: - usage(1, msg) - - # parse the options - contextlines = 2 - verbose = 1 - fromhost = None - for opt, arg in opts: - if opt in ('-h', '--help'): - usage(0) - elif opt == '--cvsroot': - os.environ['CVSROOT'] = arg - elif opt in ('-C', '--context'): - contextlines = int(arg) - elif opt == '-c': - if contextlines <= 0: - contextlines = 2 - elif opt == '-u': - contextlines = 0 - elif opt in ('-q', '--quiet'): - verbose = 0 - elif opt in ('-f', '--fromhost'): - fromhost = arg - - # What follows is the specification containing the files that were - # modified. The argument actually must be split, with the first component - # containing the directory the checkin is being made in, relative to - # $CVSROOT, followed by the list of files that are changing. - if not args: - usage(1, 'No CVS module specified') - subject = args[0] - specs = string.split(args[0]) - del args[0] - - # The remaining args should be the email addresses - if not args: - usage(1, 'No recipients specified') - - # Now do the mail command - people = args - - if verbose: - print 'Mailing %s...' % string.join(people, COMMASPACE) - - if specs == ['-', 'Imported', 'sources']: - return - if specs[-3:] == ['-', 'New', 'directory']: - del specs[-3:] - elif len(specs) > 2: - L = specs[:2] - for s in specs[2:]: - prev = L[-1] - if string.count(prev, ',') < 2: - L[-1] = "%s %s" % (prev, s) - else: - L.append(s) - specs = L - - if verbose: - print 'Generating notification message...' - blast_mail(subject, people, specs[1:], contextlines, fromhost) - if verbose: - print 'Generating notification message... done.' - - - -if __name__ == '__main__': - main() - sys.exit(0) DELETED CVSROOT/taginfo Index: CVSROOT/taginfo ================================================================== --- CVSROOT/taginfo +++ /dev/null @@ -1,20 +0,0 @@ -# The "taginfo" file is used to control pre-tag checks. -# The filter on the right is invoked with the following arguments: -# -# $1 -- tagname -# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d -# $3 -- repository -# $4-> file revision [file revision ...] -# -# A non-zero exit of the filter program will cause the tag to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". DELETED CVSROOT/verifymsg Index: CVSROOT/verifymsg ================================================================== --- CVSROOT/verifymsg +++ /dev/null @@ -1,21 +0,0 @@ -# The "verifymsg" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. DELETED mttroot/CVSROOT/checkoutlist Index: mttroot/CVSROOT/checkoutlist ================================================================== --- mttroot/CVSROOT/checkoutlist +++ /dev/null @@ -1,14 +0,0 @@ -# The "checkoutlist" file is used to support additional version controlled -# administrative files in $CVSROOT/CVSROOT, such as template files. -# -# The first entry on a line is a filename which will be checked out from -# the corresponding RCS file in the $CVSROOT/CVSROOT directory. -# The remainder of the line is an error message to use if the file cannot -# be checked out. -# -# File format: -# -# [] -# -# comment lines begin with '#' -syncmail DELETED mttroot/CVSROOT/commitinfo Index: mttroot/CVSROOT/commitinfo ================================================================== --- mttroot/CVSROOT/commitinfo +++ /dev/null @@ -1,15 +0,0 @@ -# The "commitinfo" file is used to control pre-commit checks. -# The filter on the right is invoked with the repository and a list -# of files to check. A non-zero exit of the filter program will -# cause the commit to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". DELETED mttroot/CVSROOT/config Index: mttroot/CVSROOT/config ================================================================== --- mttroot/CVSROOT/config +++ /dev/null @@ -1,11 +0,0 @@ -# Set this to "no" if pserver shouldn't check system users/passwords -#SystemAuth=no - -# Set `PreservePermissions' to `yes' to save file status information -# in the repository. -#PreservePermissions=no - -# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top -# level of the new working directory when using the `cvs checkout' -# command. -#TopLevelAdmin=no DELETED mttroot/CVSROOT/cvswrappers Index: mttroot/CVSROOT/cvswrappers ================================================================== --- mttroot/CVSROOT/cvswrappers +++ /dev/null @@ -1,23 +0,0 @@ -# This file affects handling of files based on their names. -# -# The -t/-f options allow one to treat directories of files -# as a single file, or to transform a file in other ways on -# its way in and out of CVS. -# -# The -m option specifies whether CVS attempts to merge files. -# -# The -k option specifies keyword expansion (e.g. -kb for binary). -# -# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) -# -# wildcard [option value][option value]... -# -# where option is one of -# -f from cvs filter value: path to filter -# -t to cvs filter value: path to filter -# -m update methodology value: MERGE or COPY -# -k expansion mode value: b, o, kkv, &c -# -# and value is a single-quote delimited value. -# For example: -#*.gif -k 'b' DELETED mttroot/CVSROOT/editinfo Index: mttroot/CVSROOT/editinfo ================================================================== --- mttroot/CVSROOT/editinfo +++ /dev/null @@ -1,21 +0,0 @@ -# The "editinfo" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. DELETED mttroot/CVSROOT/loginfo Index: mttroot/CVSROOT/loginfo ================================================================== --- mttroot/CVSROOT/loginfo +++ /dev/null @@ -1,31 +0,0 @@ -# The "loginfo" file controls where "cvs commit" log information -# is sent. The first entry on a line is a regular expression which must match -# the directory that the change is being made to, relative to the -# $CVSROOT. If a match is found, then the remainder of the line is a filter -# program that should expect log information on its standard input. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name ALL appears as a regular expression it is always used -# in addition to the first matching regex or DEFAULT. -# -# You may specify a format string as part of the -# filter. The string is composed of a `%' followed -# by a single format character, or followed by a set of format -# characters surrounded by `{' and `}' as separators. The format -# characters are: -# -# s = file name -# V = old version number (pre-checkin) -# v = new version number (post-checkin) -# -# For example: -#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog -# or -#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog - -# Lines to mail changes -CVSROOT $CVSROOT/CVSROOT/syncmail %{sVv} mtt@gawthrop.net -DEFAULT $CVSROOT/CVSROOT/syncmail %{sVv} mtt-cvs@lists.sourceforge.net - DELETED mttroot/CVSROOT/modules Index: mttroot/CVSROOT/modules ================================================================== --- mttroot/CVSROOT/modules +++ /dev/null @@ -1,26 +0,0 @@ -# Three different line formats are valid: -# key -a aliases... -# key [options] directory -# key [options] directory files... -# -# Where "options" are composed of: -# -i prog Run "prog" on "cvs commit" from top-level of module. -# -o prog Run "prog" on "cvs checkout" of module. -# -e prog Run "prog" on "cvs export" of module. -# -t prog Run "prog" on "cvs rtag" of module. -# -u prog Run "prog" on "cvs update" of module. -# -d dir Place module in directory "dir" instead of module name. -# -l Top-level directory only -- do not recurse. -# -# NOTE: If you change any of the "Run" options above, you'll have to -# release and re-checkout any working directories of these modules. -# -# And "directory" is a path to a directory relative to $CVSROOT. -# -# The "-a" option specifies an alias. An alias is interpreted as if -# everything on the right of the "-a" had been typed on the command line. -# -# You can encode a module within a module by using the special '&' -# character to interpose another module into the current module. This -# can be useful for creating a module that consists of many directories -# spread out over the entire source repository. DELETED mttroot/CVSROOT/notify Index: mttroot/CVSROOT/notify ================================================================== --- mttroot/CVSROOT/notify +++ /dev/null @@ -1,12 +0,0 @@ -# The "notify" file controls where notifications from watches set by -# "cvs watch add" or "cvs edit" are sent. The first entry on a line is -# a regular expression which is tested against the directory that the -# change is being made to, relative to the $CVSROOT. If it matches, -# then the remainder of the line is a filter program that should contain -# one occurrence of %s for the user to notify, and information on its -# standard input. -# -# "ALL" or "DEFAULT" can be used in place of the regular expression. -# -# For example: -#ALL mail %s -s "CVS notification" DELETED mttroot/CVSROOT/rcsinfo Index: mttroot/CVSROOT/rcsinfo ================================================================== --- mttroot/CVSROOT/rcsinfo +++ /dev/null @@ -1,13 +0,0 @@ -# The "rcsinfo" file is used to control templates with which the editor -# is invoked on commit and import. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being made to, relative to the -# $CVSROOT. For the first match that is found, then the remainder of the -# line is the name of the file that contains the template. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". DELETED mttroot/CVSROOT/syncmail Index: mttroot/CVSROOT/syncmail ================================================================== --- mttroot/CVSROOT/syncmail +++ /dev/null @@ -1,287 +0,0 @@ -#! /usr/bin/python - -# NOTE: Until SourceForge installs a modern version of Python on the cvs -# servers, this script MUST be compatible with Python 1.5.2. - -"""Complicated notification for CVS checkins. - -This script is used to provide email notifications of changes to the CVS -repository. These email changes will include context diffs of the changes. -Really big diffs will be trimmed. - -This script is run from a CVS loginfo file (see $CVSROOT/CVSROOT/loginfo). To -set this up, create a loginfo entry that looks something like this: - - mymodule /path/to/this/script %%s some-email-addr@your.domain - -In this example, whenever a checkin that matches `mymodule' is made, this -script is invoked, which will generate the diff containing email, and send it -to some-email-addr@your.domain. - - Note: This module used to also do repository synchronizations via - rsync-over-ssh, but since the repository has been moved to SourceForge, - this is no longer necessary. The syncing functionality has been ripped - out in the 3.0, which simplifies it considerably. Access the 2.x versions - to refer to this functionality. Because of this, the script is misnamed. - -It no longer makes sense to run this script from the command line. Doing so -will only print out this usage information. - -Usage: - - %(PROGRAM)s [options] <%%S> email-addr [email-addr ...] - -Where options is: - - --cvsroot= - Use as the environment variable CVSROOT. Otherwise this - variable must exist in the environment. - - --help / -h - Print this text. - - --context=# - -C # - Include # lines of context around lines that differ (default: 2). - - -c - Produce a context diff (default). - - -u - Produce a unified diff (smaller). - - --quiet/-q - Don't print as much status to stdout. - - <%%S> - CVS %%s loginfo expansion. When invoked by CVS, this will be a single - string containing the directory the checkin is being made in, relative - to $CVSROOT, followed by the list of files that are changing. If the - %%s in the loginfo file is %%{sVv}, context diffs for each of the - modified files are included in any email messages that are generated. - - email-addrs - At least one email address. -""" -import os -import sys -import time -import string -import getopt -import smtplib -import pwd -import socket - -from cStringIO import StringIO - -# Which SMTP server to do we connect to? Empty string means localhost. -MAILHOST = '' -MAILPORT = 25 - -# Diff trimming stuff -DIFF_HEAD_LINES = 20 -DIFF_TAIL_LINES = 20 -DIFF_TRUNCATE_IF_LARGER = 1000 - -EMPTYSTRING = '' -SPACE = ' ' -DOT = '.' -COMMASPACE = ', ' - -PROGRAM = sys.argv[0] - -BINARY_EXPLANATION_LINES = [ - "(This appears to be a binary file; contents omitted.)\n" - ] - - -def usage(code, msg=''): - print __doc__ % globals() - if msg: - print msg - sys.exit(code) - - - -def calculate_diff(filespec, contextlines): - try: - file, oldrev, newrev = string.split(filespec, ',') - except ValueError: - # No diff to report - return '***** Bogus filespec: %s' % filespec - if oldrev == 'NONE': - try: - if os.path.exists(file): - fp = open(file) - else: - update_cmd = 'cvs -fn update -r %s -p %s' % (newrev, file) - fp = os.popen(update_cmd) - lines = fp.readlines() - fp.close() - # Is this a binary file? Let's look at the first few - # lines to figure it out: - for line in lines[:5]: - for c in string.rstrip(line): - if c in string.whitespace: - continue - if c < ' ' or c > chr(127): - lines = BINARY_EXPLANATION_LINES[:] - break - lines.insert(0, '--- NEW FILE: %s ---\n' % file) - except IOError, e: - lines = ['***** Error reading new file: ', - str(e), '\n***** file: ', file, ' cwd: ', os.getcwd()] - elif newrev == 'NONE': - lines = ['--- %s DELETED ---\n' % file] - else: - # This /has/ to happen in the background, otherwise we'll run into CVS - # lock contention. What a crock. - if contextlines > 0: - difftype = "-C " + str(contextlines) - else: - difftype = "-u" - diffcmd = "/usr/bin/cvs -f diff -kk %s --minimal -r %s -r %s '%s'" % ( - difftype, oldrev, newrev, file) - fp = os.popen(diffcmd) - lines = fp.readlines() - sts = fp.close() - # ignore the error code, it always seems to be 1 :( -## if sts: -## return 'Error code %d occurred during diff\n' % (sts >> 8) - if len(lines) > DIFF_TRUNCATE_IF_LARGER: - removedlines = len(lines) - DIFF_HEAD_LINES - DIFF_TAIL_LINES - del lines[DIFF_HEAD_LINES:-DIFF_TAIL_LINES] - lines.insert(DIFF_HEAD_LINES, - '[...%d lines suppressed...]\n' % removedlines) - return string.join(lines, '') - - - -def getdomain(): - try: - fqdn = socket.getfqdn() - except AttributeError: - # Python 1.5.2 :( - hostname = socket.gethostname() - byaddr = socket.gethostbyaddr(socket.gethostbyname(hostname)) - aliases = byaddr[1] - aliases.insert(0, byaddr[0]) - aliases.insert(0, hostname) - for fqdn in aliases: - if '.' in fqdn: - break - else: - fqdn = 'localhost.localdomain' - parts = string.split(fqdn, DOT) - return string.join(parts[1:], DOT) - - - -def blast_mail(subject, people, filestodiff, contextlines): - # cannot wait for child process or that will cause parent to retain cvs - # lock for too long. Urg! - if not os.fork(): - # in the child - # give up the lock you cvs thang! - time.sleep(2) - # Create the smtp connection to the localhost - conn = smtplib.SMTP() - conn.connect(MAILHOST, MAILPORT) - user = pwd.getpwuid(os.getuid())[0] - domain = getdomain() - author = '%s@%s' % (user, domain) - s = StringIO() - sys.stdout = s - try: - print '''\ -From: %(author)s -To: %(people)s -Subject: %(subject)s -''' % {'author' : author, - 'people' : string.join(people, COMMASPACE), - 'subject': subject, - } - s.write(sys.stdin.read()) - # append the diffs if available - print - for file in filestodiff: - print calculate_diff(file, contextlines) - finally: - sys.stdout = sys.__stdout__ - resp = conn.sendmail(author, people, s.getvalue()) - conn.close() - os._exit(0) - - - -# scan args for options -def main(): - try: - opts, args = getopt.getopt(sys.argv[1:], 'hC:cuq', - ['context=', 'cvsroot=', 'help', 'quiet']) - except getopt.error, msg: - usage(1, msg) - - # parse the options - contextlines = 2 - verbose = 1 - for opt, arg in opts: - if opt in ('-h', '--help'): - usage(0) - elif opt == '--cvsroot': - os.environ['CVSROOT'] = arg - elif opt in ('-C', '--context'): - contextlines = int(arg) - elif opt == '-c': - if contextlines <= 0: - contextlines = 2 - elif opt == '-u': - contextlines = 0 - elif opt in ('-q', '--quiet'): - verbose = 0 - - # What follows is the specification containing the files that were - # modified. The argument actually must be split, with the first component - # containing the directory the checkin is being made in, relative to - # $CVSROOT, followed by the list of files that are changing. - if not args: - usage(1, 'No CVS module specified') - subject = args[0] - specs = string.split(args[0]) - del args[0] - - # The remaining args should be the email addresses - if not args: - usage(1, 'No recipients specified') - - # Now do the mail command - people = args - - if verbose: - print 'Mailing %s...' % string.join(people, COMMASPACE) - - if specs == ['-', 'Imported', 'sources']: - return - if specs[-3:] == ['-', 'New', 'directory']: - del specs[-3:] - elif len(specs) > 2: - L = specs[:2] - for s in specs[2:]: - prev = L[-1] - if string.count(prev, ',') < 2: - L[-1] = "%s %s" % (prev, s) - else: - L.append(s) - specs = L - - if verbose: - print 'Generating notification message...' - blast_mail(subject, people, specs[1:], contextlines) - if verbose: - print 'Generating notification message... done.' - - - -if __name__ == '__main__': - main() - sys.exit(0) DELETED mttroot/CVSROOT/taginfo Index: mttroot/CVSROOT/taginfo ================================================================== --- mttroot/CVSROOT/taginfo +++ /dev/null @@ -1,20 +0,0 @@ -# The "taginfo" file is used to control pre-tag checks. -# The filter on the right is invoked with the following arguments: -# -# $1 -- tagname -# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d -# $3 -- repository -# $4-> file revision [file revision ...] -# -# A non-zero exit of the filter program will cause the tag to be aborted. -# -# The first entry on a line is a regular expression which is tested -# against the directory that the change is being committed to, relative -# to the $CVSROOT. For the first match that is found, then the remainder -# of the line is the name of the filter to run. -# -# If the repository name does not match any of the regular expressions in this -# file, the "DEFAULT" line is used, if it is specified. -# -# If the name "ALL" appears as a regular expression it is always used -# in addition to the first matching regex or "DEFAULT". DELETED mttroot/CVSROOT/verifymsg Index: mttroot/CVSROOT/verifymsg ================================================================== --- mttroot/CVSROOT/verifymsg +++ /dev/null @@ -1,21 +0,0 @@ -# The "verifymsg" file is used to allow verification of logging -# information. It works best when a template (as specified in the -# rcsinfo file) is provided for the logging procedure. Given a -# template with locations for, a bug-id number, a list of people who -# reviewed the code before it can be checked in, and an external -# process to catalog the differences that were code reviewed, the -# following test can be applied to the code: -# -# Making sure that the entered bug-id number is correct. -# Validating that the code that was reviewed is indeed the code being -# checked in (using the bug-id number or a seperate review -# number to identify this particular code set.). -# -# If any of the above test failed, then the commit would be aborted. -# -# Actions such as mailing a copy of the report to each reviewer are -# better handled by an entry in the loginfo file. -# -# One thing that should be noted is the the ALL keyword is not -# supported. There can be only one entry that matches a given -# repository. Index: mttroot/mtt/bin/mtt ================================================================== --- mttroot/mtt/bin/mtt +++ mttroot/mtt/bin/mtt @@ -15,10 +15,16 @@ ############################################################### ## Version control history ############################################################### ## $Header$ ## $Log$ +## Revision 1.360.2.1 2002/09/03 23:44:43 geraint +## adding global optimisation (-optg). +## +## Revision 1.360 2002/08/20 15:51:16 gawthrop +## Update to work with ident DIY rep +## ## Revision 1.359 2002/08/07 14:27:14 geraint ## Changes to make "-i dassl" work again. ## ## Revision 1.358 2002/08/07 11:04:40 geraint ## Now updates timestamp on lbl.txt after processing in make. This eliminates the delay where MTT spends a long period of time uselessly recursing through the model on subsequent passes if the label file is older than the bondgraph. @@ -1305,10 +1311,13 @@ # Default use ps files ps=ps eps=eps psview=$PSVIEW + +# Default declare 500 temporary variables +num_tmp_var=500 #Initialise list of switches mtt_switches=''; #Initialise read dirs @@ -1459,12 +1468,20 @@ -oct ) fixcc='-fixcc' mtt_switches="$mtt_switches $1"; using_oct=yes; ;; - -opt ) mtt_switches="$mtt_switches $1"; - optimise='-optimise';; + -opt | -optl ) + mtt_switches="$mtt_switches $1"; + optimise='-optimise_local';; + -optg ) + mtt_switches="$mtt_switches $1"; + optimise='-optimise_global';; + -ntmpvar ) + num_tmp_var=$2; + mtt_switches="$mtt_switches $1 $2"; + shift;; -partition ) mtt_switches="$mtt_switches $1"; partition='-partition'; ;; -pdf ) mtt_switches="$mtt_switches $1"; ps=pdf; @@ -1553,11 +1570,14 @@ echo ' -dc Maximise derivative (not integral) causality' echo ' -i Use implicit, euler, rk4 or dassl integration' echo ' -ae Solve algebraic equations with specified solver' echo ' -o ode is same as dae' echo ' -oct use oct files in place of m files where appropriate' - echo ' -opt optimise code generation' + echo ' -opt optimise code generation (equivalent to -lopt)' + echo ' -optl optimise code generation (local : line-by-line)' + echo ' -optg optimise code generation (global : full vector)' + echo " -ntmpvar declare N temporary variables (default=$num_tmp_var)" echo ' -p print environment variables' echo ' -partition partition hierachical system' echo ' -pdf generate pdf in place of ps' echo ' -r reset time stamp on representation' echo ' -s generate sensitivity BG (use mtt -s sSys rep lang)' @@ -2403,11 +2423,11 @@ $1_sympar.r: $1_sympar.txt sympar_txt2r $1 $1_sympar.m: $1_sympar.txt sympar_txt2m $1 $1_sympar.h: $1_sympar.txt - sympar_txt2h.sh $1 + sympar_txt2h.sh $1 $num_tmp_var #SUMMARY sympar symbolic parameters (c) # txt to c sympar conversion $1_sympar.c: $1_sympar.txt sympar_txt2c $1 Index: mttroot/mtt/bin/trans/cse2ode_r ================================================================== --- mttroot/mtt/bin/trans/cse2ode_r +++ mttroot/mtt/bin/trans/cse2ode_r @@ -12,10 +12,16 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.3.4.1 2002/09/03 23:44:43 geraint +## adding global optimisation (-optg). +## +## Revision 1.3 2001/07/27 23:29:10 geraint +## Optimises only when requested (-opt). +## ## Revision 1.2 2001/07/13 04:54:04 geraint ## Branch merge: numerical-algebraic-solution back to main. ## ## Revision 1.1.4.1 2001/05/04 04:07:24 geraint ## Numerical solution of algebraic equations. @@ -34,22 +40,25 @@ ############################################################### optimise=''; optimise_msg='' while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in - -optimise) - optimise='-optimise' - optimise_msg=' with optimisation' ;; + -optimise_global ) + optimise='-optimise_global' + optimise_msg=' with global optimisation' ;; + -optimise_local ) + optimise='-optimise_local' + optimise_msg=' with local optimisation' ;; *) echo "$1 is an invalid argument - ignoring" ;; esac shift done # Create the reduce output code -def2write_r $optimise $1 ode -def2write_r $optimise $1 odeo +def2write_r $1 ode +def2write_r $1 odeo #Inform user echo Creating $1_ode.r $optimise_msg echo Creating $1_odeo.r $optimise_msg @@ -126,16 +135,16 @@ in ("$1_odeo_write.r"); write "END;"; SHUT "$1_odeo.r"; quit; EOF + +if [ ${optimise:-""} = "-optimise_global" ]; then + mtt_optimise global $1 ode + mtt_optimise global $1 odeo +elif [ ${optimise:-""} = "-optimise_local" ]; then + mtt_optimise local $1 ode + mtt_optimise local $1 odeo +fi # Now invoke the standard error handling. mtt_error_r cse2ode_r.log - - - - - - - - Index: mttroot/mtt/bin/trans/cse2smx_lang ================================================================== --- mttroot/mtt/bin/trans/cse2smx_lang +++ mttroot/mtt/bin/trans/cse2smx_lang @@ -23,11 +23,11 @@ parameters='-parameters'; ;; -matrix) matrix='yes'; ;; - -optimise) + -optimise_global | -optimise_local ) optimise='LOAD SCOPE; ON GENTRANOPT;'; iname='INAME mtt_o;'; ;; -fixcc ) fix_mtt_pow='FOR ALL x,y LET x^y = mtt_pow(x,y);' Index: mttroot/mtt/bin/trans/csm2sm_r ================================================================== --- mttroot/mtt/bin/trans/csm2sm_r +++ mttroot/mtt/bin/trans/csm2sm_r @@ -12,10 +12,16 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.2.4.1 2002/09/03 23:44:43 geraint +## adding global optimisation (-optg). +## +## Revision 1.2 2001/07/27 23:29:10 geraint +## Optimises only when requested (-opt). +## ## Revision 1.1 2000/12/28 12:24:03 peterg ## Put under RCS ## ## Revision 1.2 1996/08/25 10:11:32 peter ## Added END in output file. @@ -27,21 +33,24 @@ ############################################################### optimise=''; optimise_msg='' while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in - -optimise) - optimise='-optimise' - optimise_msg=' with optimisation' ;; - *) + -optimise_global ) + optimise='-optimise_global' + optimise_msg=' with global optimisation' ;; + -optimise_local ) + optimise='-optimise_local' + optimise_msg=' with local optimisation' ;; + * ) echo "$1 is an invalid argument - ignoring" ;; esac shift done # Create the reduce output code -def2write_r $optimise $1 $2 +def2write_r $1 $2 # Inform user echo Creating $1_$2.r $optimise_msg case $2 in @@ -135,8 +144,14 @@ quit; EOF cat $1_$2.r1 $1_$2.r2 > $1_$2.r + +if [ ${optimise:-""} = "-optimise_global" ]; then + mtt_optimise global $1 $2 +elif [ ${optimise:-""} = "-optimise_local" ]; then + mtt_optimise local $1 $2 +fi # Now invoke the standard error handling. mtt_error_r csm2sm_r.log Index: mttroot/mtt/bin/trans/dae2cse_r ================================================================== --- mttroot/mtt/bin/trans/dae2cse_r +++ mttroot/mtt/bin/trans/dae2cse_r @@ -13,10 +13,21 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.23.2.2 2002/09/10 23:24:19 geraint +## Rationalised local and global optimisations. +## Fixes presentation of locally optimised code (ode view). +## Much more elegant :-) +## +## Revision 1.23.2.1 2002/09/03 23:44:43 geraint +## adding global optimisation (-optg). +## +## Revision 1.23 2002/07/10 17:43:05 geraint +## Added feature [ 562453 ] Optimisation of algebraic equations. +## ## Revision 1.22 2002/06/28 15:35:47 geraint ## Commented out aej.r generation (not used yet). ## ## Revision 1.21 2002/06/28 10:13:40 geraint ## Includes fix_c.r in ese2rdae and def2write_r to eliminate occurrances of x**y. @@ -132,24 +143,27 @@ -fixcc ) fixcc='-fixcc' include=`echo 'in "'$MTT_LIB'/reduce/fix_c.r";'` fix_msg='fixing c and cc code'; ;; - -optimise) - optimise='-optimise' - optimise_msg=' with optimisation' ;; + -optimise_global ) + optimise='-optimise_global' + optimise_msg=' with global optimisation' ;; + -optimise_local ) + optimise='-optimise_local' + optimise_msg=' with local optimisation' ;; *) echo "$1 is an invalid argument - ignoring" ;; esac shift done # Create the reduce output code -def2write_r $optimise $fixcc $1 ae -def2write_r $optimise $fixcc $1 cse -def2write_r $optimise $fixcc $1 csex # Version without E matrix -def2write_r $optimise $fixcc $1 cseo +def2write_r $fixcc $1 ae +def2write_r $fixcc $1 cse +def2write_r $fixcc $1 csex # Version without E matrix +def2write_r $fixcc $1 cseo echo "Creating $1_ae.r $optimise_msg" echo "Creating $1_cse.r $solve_msg $optimise_msg $fix_msg" echo "Creating $1_csex.r $optimise_msg" echo "Creating $1_cseo.r $optimise_msg" @@ -470,10 +484,22 @@ touch $1_cseo.r2 cat $1_ae.r1 $1_ae.r2 > $1_ae.r cat $1_cse.r1 $1_cse.r2 > $1_cse.r cat $1_csex.r1 $1_csex.r2 > $1_csex.r cat $1_cseo.r1 $1_cseo.r2 > $1_cseo.r + +if [ ${optimise:-""} = "-optimise_global" ]; then + mtt_optimise global $1 ae + mtt_optimise global $1 cse + mtt_optimise global $1 cseo + mtt_optimise global $1 csex +elif [ ${optimise:-""} = "-optimise_local" ]; then + mtt_optimise local $1 ae + mtt_optimise local $1 cse + mtt_optimise local $1 cseo + mtt_optimise local $1 csex +fi if [ "$solve" = "1" ]; then echo "Setting MTTNyz=0 in $1_def.r and updating other $1_def files" gawk '{ if ($1=="MTTNyz") Index: mttroot/mtt/bin/trans/dae2lde_r ================================================================== --- mttroot/mtt/bin/trans/dae2lde_r +++ mttroot/mtt/bin/trans/dae2lde_r @@ -11,30 +11,39 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.2.4.1 2002/09/03 23:44:43 geraint +## adding global optimisation (-optg). +## +## Revision 1.2 2001/07/27 23:29:10 geraint +## Optimises only when requested (-opt). +## ## Revision 1.1 2000/12/28 12:25:13 peterg ## Initial revision ## ############################################################### optimise=''; optimise_msg='' while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in - -optimise) - optimise='-optimise' - optimise_msg=' with optimisation' ;; + -optimise_global ) + optimise='-optimise_global' + optimise_msg=' with global optimisation' ;; + -optimise_local ) + optimise='-optimise_local' + optimise_msg=' with local optimisation' ;; *) echo "$1 is an invalid argument - ignoring" ;; esac shift done # Create the reduce output code -def2write_r $optimise $1 lde -def2write_r $optimise $1 ldeo +def2write_r $1 lde +def2write_r $1 ldeo #Inform user echo Creating $1_lde.r $optimise_msg echo Creating $1_ldeo.r $optimise_msg @@ -116,10 +125,18 @@ in ("$1_ldeo_write.r"); write "END;"; SHUT "$1_ldeo.r"; quit; EOF + +if [ ${optimise:-""} = "-optimise_global" ]; then +# TODO: mtt_optimise global $1 lde +# TODO: mtt_optimise global $1 ldeo +elif [ ${optimise:-""} = "-optimise_local" ]; then +# TODO: mtt_optimise local $1 lde +# TODO: mtt_optimise local $1 ldeo +fi # Now invoke the standard error handling. mtt_error_r cse2lde_r.log Index: mttroot/mtt/bin/trans/def2write_r ================================================================== --- mttroot/mtt/bin/trans/def2write_r +++ mttroot/mtt/bin/trans/def2write_r @@ -11,10 +11,19 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.16.2.2 2002/09/10 22:09:14 geraint +## Fixed presentation of globally optimised equations (ode view). +## +## Revision 1.16.2.1 2002/09/03 23:44:43 geraint +## adding global optimisation (-optg). +## +## Revision 1.16 2002/09/03 19:34:15 geraint +## Write EdX regardless - csex is needed to create ode when not optimised. +## ## Revision 1.15 2002/08/29 15:45:20 geraint ## Tests for existence of matrix before entering shell loop. ## Tests for existence of expression before attempting to write or optimise. ## ## Revision 1.14 2002/08/09 14:34:45 geraint @@ -74,13 +83,10 @@ ############################################################### optimise='' while [ -n "`echo $1 | grep '^-'`" ]; do case $1 in - -optimise) - opt='-optimise' - optimise_msg=' with optimisation' ;; -fixcc ) include=`echo 'in "'$MTT_LIB'/reduce/fix_c.r";'` ;; *) echo "$1 is an invalid argument - ignoring" ;; esac @@ -89,11 +95,11 @@ sys=$1 # System name rep=$2 # System representation # Inform User -echo Creating $1_$2_write.r $optimise_msg +echo Creating $1_$2_write.r # Find system constants Nx=`mtt_getsize $sys x` # States Nxx=`mtt_getsize $sys xx` # States x States Nu=`mtt_getsize $sys u` # Inputs @@ -151,110 +157,35 @@ *) echo def2write_r: representation $rep not recognised exit esac - -mtt_fix_integers () -{ - gawk -F":=" -v RS="$" -v ORS="$\n" ' -(NF == 1) { - print $0 -} -(NF > 1) { - lhs=$1 ; - rhs=$2" " ; - rhs1 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", rhs ); - rhs2 = gensub ( /([^e]\+)([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", rhs1 ); - rhs3 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)e([0-9]+).0([^\.0-9])/ , "\\1\\2\\3\\4" , "g" , rhs) - printf "%s:=%s$\n", lhs, rhs3 ; - }' -} - -mtt_optimise () -{ - sys="$1" - lhs="$2" - rhs="$3" - - dae="${sys}_dae.r" - tmp="mtt_optimise.tmp" - tmp1="mtt_optimise1.tmp" - tmp2="mtt_optimise2.tmp" - tmp3="mtt_optimise3.tmp" - - grep -i -e "^$lhs" $dae |\ - sed -e 's/;/\ INAME\ mtt_tmp/g' |\ - sed -e 's/:=/:=/g' > $tmp1 - nlines=`wc -l $tmp1 | gawk '{print $1}'` - if [ $nlines -gt 0 ]; then - { - cat < $tmp - cat $tmp1 >> $tmp - { - cat <> $tmp - echo "%%% $lhs %%%" >> def2write_r1.log - ${SYMBOLIC:-reduce} < $tmp >> def2write_r1.log 2>> def2write_r2.log - cat $tmp2 | gawk -v RS=';' '($2 == ":=") {print $0}' > $tmp3 - cat $tmp3 | mtt_fix_integers - fi - rm -f $tmp $tmp1 $tmp2 $tmp3 - return -} - - # Remove log files rm -f def2write_r1.log def2write_r2.log # Write out the code echo "" > $1_$2_write.r -if [ ${opt:-""} = "-optimise" ]; then - echo 'off nat$' -# echo 'on echo$' -else - echo 'off echo$' - echo 'load gentran$' -fi >> $1_$2_write.r +echo 'off echo$' >> $1_$2_write.r +echo 'load gentran$' >> $1_$2_write.r for matrix in $matrices; do matrix_exists=`grep -i MTT${matrix} ${sys}_dae.r | wc -l | gawk '{print $1}'` if [ "$matrix" = "EdX" -o $matrix_exists -gt 0 ]; then n=`first "$ns"`; ns=`rest "$ns"` m=`first "$ms"`; ms=`rest "$ms"` is=`n2m 1 $n`; js=`n2m 1 $m`; + echo "write \"% Begin Matrix MTT${matrix}\"$" >> $1_$2_write.r if [ $n -ge 1 ]; then for i in $is; do for j in $js; do - if [ ${opt:-""} = "-optimise" ]; then - name=`echo MTT$matrix'('$i','$j')'` - mtt_optimise $1 "$comma$name" "$name" - comma='' - else - echo 'write' - name=`echo MTT$matrix'('$i','$j')'` - echo ' '$comma$name ':=' $name '$' - fi >> $1_$2_write.r + echo 'write' + name=`echo MTT$matrix'('$i','$j')'` + echo ' '$comma$name ':=' $name '$' done done - fi + fi >> $1_$2_write.r + echo "write \"% End Matrix MTT${matrix}\"$" >> $1_$2_write.r fi done echo ';END;' >>$1_$2_write.r Index: mttroot/mtt/bin/trans/m/args2arg.m ================================================================== --- mttroot/mtt/bin/trans/m/args2arg.m +++ mttroot/mtt/bin/trans/m/args2arg.m @@ -26,6 +26,28 @@ % Field separator if nargin<3 FS = ';'; end; + +arg = ''; +if strcmp(args, '')==0 + L = length(args); + args_count = 0; + for i=1:n + arg_count = 0; + arg = ''; + if args_count == L + break; + end; + while args_count < L + args_count = args_count+1; + arg_count = arg_count+1; + ch = str2ch(args,args_count); + if ch==FS + break; + end; + arg = [arg ch]; + end; + end; +end; ADDED mttroot/mtt/bin/trans/mtt_fix_integers Index: mttroot/mtt/bin/trans/mtt_fix_integers ================================================================== --- /dev/null +++ mttroot/mtt/bin/trans/mtt_fix_integers @@ -0,0 +1,12 @@ +#! /bin/sh + +mttmatrix='\(mtt[A-Za-z][A-Za-z]*\)' +integer='\([0-9][0-9]*\)' + +mtt_join_lines | gawk -v RS=${1:-"$"} -v ORS=${2:-"$\n"} ' { +str = $0; +str1 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", str ); +str2 = gensub ( /([^e]\+)([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", str1 ); +str3 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)e([0-9]+).0([^\.0-9])/ , "\\1\\2\\3\\4" , "g" , str2) +printf "%s$\n", str3 ; +}' | sed -e "s/$mttmatrix($integer\.0,/\1(\2,/g" ADDED mttroot/mtt/bin/trans/mtt_join_lines Index: mttroot/mtt/bin/trans/mtt_join_lines ================================================================== --- /dev/null +++ mttroot/mtt/bin/trans/mtt_join_lines @@ -0,0 +1,5 @@ +#! /bin/sh + +gawk '{ printf ( "%s" , $0 ) }' |\ + gawk -v RS="$" '{ printf "%s$\n", $0 }' |\ + gawk -v RS=";" '{ printf "%s;\n", $0 }' ADDED mttroot/mtt/bin/trans/mtt_optimise Index: mttroot/mtt/bin/trans/mtt_optimise ================================================================== --- /dev/null +++ mttroot/mtt/bin/trans/mtt_optimise @@ -0,0 +1,121 @@ +#! /bin/sh + +# script uses Reduce + Scope to optimise a vector +# either global (an entire vector) or local (line-by-line) + +extent=$1 # global or local +system=$2 +representation=$3 + +# error codes +E_REP_NOT_SUPPORTED=-19 +E_FILE_NOT_EXIST=-20 + +case $representation in + ae) + matrix=yz ; + nmatrix=`mtt_getsize $system yz` ;; + ode) + matrix=dx ; + nmatrix=`mtt_getsize $system x` ;; + cseo | odeo) + matrix=y ; + nmatrix=`mtt_getsize $system y` ;; + *) + exit $E_REP_NOT_SUPPORTED;; +esac + +# Global optimisation: Generate a command of the form +# optimise mtt?(1,1) :=: mtt?(1,1), mtt?(2,1) :=: mtt?(2,1), ..., INAME mtt_tmp$ +# +# Local optimisation: Generate a command of the form +# optimise mtt?(1,1) :=: mtt?(1,1) INAME mtt_tmp$ \ +# optimise mtt?(2,1) :=: mtt?(2,1) INAME mtt_tmp$ ... +case $extent in + "global" ) + delimiter=", " + terminate="INAME mtt_tmp$" + ;; + "local" ) + delimiter=" INAME mtt_tmp$ optimize" + terminate="$" + ;; + * ) + echo "*** unknown scope for optimisation" + echo "*** should be global or local" + exit -1 + ;; +esac + +if [ $nmatrix -gt 0 ]; then + command="optimize" + counter=1 + while [ $counter -le $nmatrix ]; do + command="$command mtt$matrix($counter,1) :=: mtt$matrix($counter,1)$delimiter" + counter=`expr $counter + 1` + done + command="$command $terminate" +else + command="" +fi + +logfile=${system}_${representation}_optimisation.log +tmpfile=${system}_${representation}_optimisation.tmp +outfile=${system}_${representation}.r + +if [ ! -f $outfile ]; then + exit $E_FILE_NOT_EXIST +fi + +find_code () +{ + file_in=${1:-${IN}} + portion=${2:-"body"} + head=`cat ${file_in} | gawk '($2 == "Begin" && $3 == "Matrix") { print NR }'` + foot=`cat ${file_in} | gawk '($2 == "End" && $3 == "Matrix") { print NR }'` + case ${portion} in + head) + start=0 + end=${head} + ;; + body) + start=${head} + end=${foot} + ;; + foot) + start=${foot} + end=end + ;; + *) + echo "Error in find_code: portion unknown" + return -1 + ;; + esac + cat ${file_in} |\ + gawk --assign start=${start} --assign end=${end} ' + (start < NR && NR < end) { print $0 }' +}; + + +# Use Reduce to perform the optimisation +${SYMBOLIC:-reduce} < $logfile 2>&1 +off nat; +in "${system}_def.r"; +in "$outfile"; +load scope; +out "$tmpfile"; +$command; +shut "$tmpfile"; +$end; +EOF + +cp $outfile $outfile.unoptimised +cp $tmpfile $outfile.tmp + +find_code $outfile head > $tmpfile.head +cat $tmpfile | mtt_fix_integers > $tmpfile.body +find_code $outfile foot > $tmpfile.foot +cat $tmpfile.head $tmpfile.body $tmpfile.foot > $outfile +echo ";end;" >> $outfile + +mtt_error_r $logfile Index: mttroot/mtt/bin/trans/mtt_r2m ================================================================== --- mttroot/mtt/bin/trans/mtt_r2m +++ mttroot/mtt/bin/trans/mtt_r2m @@ -16,10 +16,13 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.30 2002/03/26 11:59:54 geraint +## Added dummy -optimise switch to prevent falling over for -cc generation. +## ## Revision 1.29 2001/09/07 00:25:56 geraint ## Partial fix for insidious bug which eliminates lines of code when parameter ## names of the form (in* or off*) start continuation lines. ## ## Revision 1.28 2001/07/13 04:54:04 geraint @@ -127,11 +130,11 @@ ;; -parameters) parameters='-parameters'; par='mttpar' ;; - -optimise) + -optimise_local | -optimise_global ) ;; *) echo $1 is an unknown option exit;; esac Index: mttroot/mtt/cc/sympar_txt2h.sh ================================================================== --- mttroot/mtt/cc/sympar_txt2h.sh +++ mttroot/mtt/cc/sympar_txt2h.sh @@ -1,8 +1,11 @@ #! /bin/sh # $Id$ # $Log$ +# Revision 1.7 2002/07/10 11:53:32 geraint +# Replaced shell loop with template expansion - perceptibly quicker generation of sympar.h. +# # Revision 1.6 2002/05/19 13:01:22 geraint # Numerical solution of algebraic equations implemented for S-function target. # # Equation solving requires the Matlab Optimization Toolbox to be installed. # @@ -581,14 +584,514 @@ static double ${name}496 MTT_UNUSED; static double ${name}497 MTT_UNUSED; static double ${name}498 MTT_UNUSED; static double ${name}499 MTT_UNUSED; static double ${name}500 MTT_UNUSED; +static double ${name}501 MTT_UNUSED; +static double ${name}502 MTT_UNUSED; +static double ${name}503 MTT_UNUSED; +static double ${name}504 MTT_UNUSED; +static double ${name}505 MTT_UNUSED; +static double ${name}506 MTT_UNUSED; +static double ${name}507 MTT_UNUSED; +static double ${name}508 MTT_UNUSED; +static double ${name}509 MTT_UNUSED; +static double ${name}510 MTT_UNUSED; +static double ${name}511 MTT_UNUSED; +static double ${name}512 MTT_UNUSED; +static double ${name}513 MTT_UNUSED; +static double ${name}514 MTT_UNUSED; +static double ${name}515 MTT_UNUSED; +static double ${name}516 MTT_UNUSED; +static double ${name}517 MTT_UNUSED; +static double ${name}518 MTT_UNUSED; +static double ${name}519 MTT_UNUSED; +static double ${name}520 MTT_UNUSED; +static double ${name}521 MTT_UNUSED; +static double ${name}522 MTT_UNUSED; +static double ${name}523 MTT_UNUSED; +static double ${name}524 MTT_UNUSED; +static double ${name}525 MTT_UNUSED; +static double ${name}526 MTT_UNUSED; +static double ${name}527 MTT_UNUSED; +static double ${name}528 MTT_UNUSED; +static double ${name}529 MTT_UNUSED; +static double ${name}530 MTT_UNUSED; +static double ${name}531 MTT_UNUSED; +static double ${name}532 MTT_UNUSED; +static double ${name}533 MTT_UNUSED; +static double ${name}534 MTT_UNUSED; +static double ${name}535 MTT_UNUSED; +static double ${name}536 MTT_UNUSED; +static double ${name}537 MTT_UNUSED; +static double ${name}538 MTT_UNUSED; +static double ${name}539 MTT_UNUSED; +static double ${name}540 MTT_UNUSED; +static double ${name}541 MTT_UNUSED; +static double ${name}542 MTT_UNUSED; +static double ${name}543 MTT_UNUSED; +static double ${name}544 MTT_UNUSED; +static double ${name}545 MTT_UNUSED; +static double ${name}546 MTT_UNUSED; +static double ${name}547 MTT_UNUSED; +static double ${name}548 MTT_UNUSED; +static double ${name}549 MTT_UNUSED; +static double ${name}550 MTT_UNUSED; +static double ${name}551 MTT_UNUSED; +static double ${name}552 MTT_UNUSED; +static double ${name}553 MTT_UNUSED; +static double ${name}554 MTT_UNUSED; +static double ${name}555 MTT_UNUSED; +static double ${name}556 MTT_UNUSED; +static double ${name}557 MTT_UNUSED; +static double ${name}558 MTT_UNUSED; +static double ${name}559 MTT_UNUSED; +static double ${name}560 MTT_UNUSED; +static double ${name}561 MTT_UNUSED; +static double ${name}562 MTT_UNUSED; +static double ${name}563 MTT_UNUSED; +static double ${name}564 MTT_UNUSED; +static double ${name}565 MTT_UNUSED; +static double ${name}566 MTT_UNUSED; +static double ${name}567 MTT_UNUSED; +static double ${name}568 MTT_UNUSED; +static double ${name}569 MTT_UNUSED; +static double ${name}570 MTT_UNUSED; +static double ${name}571 MTT_UNUSED; +static double ${name}572 MTT_UNUSED; +static double ${name}573 MTT_UNUSED; +static double ${name}574 MTT_UNUSED; +static double ${name}575 MTT_UNUSED; +static double ${name}576 MTT_UNUSED; +static double ${name}577 MTT_UNUSED; +static double ${name}578 MTT_UNUSED; +static double ${name}579 MTT_UNUSED; +static double ${name}580 MTT_UNUSED; +static double ${name}581 MTT_UNUSED; +static double ${name}582 MTT_UNUSED; +static double ${name}583 MTT_UNUSED; +static double ${name}584 MTT_UNUSED; +static double ${name}585 MTT_UNUSED; +static double ${name}586 MTT_UNUSED; +static double ${name}587 MTT_UNUSED; +static double ${name}588 MTT_UNUSED; +static double ${name}589 MTT_UNUSED; +static double ${name}590 MTT_UNUSED; +static double ${name}591 MTT_UNUSED; +static double ${name}592 MTT_UNUSED; +static double ${name}593 MTT_UNUSED; +static double ${name}594 MTT_UNUSED; +static double ${name}595 MTT_UNUSED; +static double ${name}596 MTT_UNUSED; +static double ${name}597 MTT_UNUSED; +static double ${name}598 MTT_UNUSED; +static double ${name}599 MTT_UNUSED; +static double ${name}600 MTT_UNUSED; +static double ${name}601 MTT_UNUSED; +static double ${name}602 MTT_UNUSED; +static double ${name}603 MTT_UNUSED; +static double ${name}604 MTT_UNUSED; +static double ${name}605 MTT_UNUSED; +static double ${name}606 MTT_UNUSED; +static double ${name}607 MTT_UNUSED; +static double ${name}608 MTT_UNUSED; +static double ${name}609 MTT_UNUSED; +static double ${name}610 MTT_UNUSED; +static double ${name}611 MTT_UNUSED; +static double ${name}612 MTT_UNUSED; +static double ${name}613 MTT_UNUSED; +static double ${name}614 MTT_UNUSED; +static double ${name}615 MTT_UNUSED; +static double ${name}616 MTT_UNUSED; +static double ${name}617 MTT_UNUSED; +static double ${name}618 MTT_UNUSED; +static double ${name}619 MTT_UNUSED; +static double ${name}620 MTT_UNUSED; +static double ${name}621 MTT_UNUSED; +static double ${name}622 MTT_UNUSED; +static double ${name}623 MTT_UNUSED; +static double ${name}624 MTT_UNUSED; +static double ${name}625 MTT_UNUSED; +static double ${name}626 MTT_UNUSED; +static double ${name}627 MTT_UNUSED; +static double ${name}628 MTT_UNUSED; +static double ${name}629 MTT_UNUSED; +static double ${name}630 MTT_UNUSED; +static double ${name}631 MTT_UNUSED; +static double ${name}632 MTT_UNUSED; +static double ${name}633 MTT_UNUSED; +static double ${name}634 MTT_UNUSED; +static double ${name}635 MTT_UNUSED; +static double ${name}636 MTT_UNUSED; +static double ${name}637 MTT_UNUSED; +static double ${name}638 MTT_UNUSED; +static double ${name}639 MTT_UNUSED; +static double ${name}640 MTT_UNUSED; +static double ${name}641 MTT_UNUSED; +static double ${name}642 MTT_UNUSED; +static double ${name}643 MTT_UNUSED; +static double ${name}644 MTT_UNUSED; +static double ${name}645 MTT_UNUSED; +static double ${name}646 MTT_UNUSED; +static double ${name}647 MTT_UNUSED; +static double ${name}648 MTT_UNUSED; +static double ${name}649 MTT_UNUSED; +static double ${name}650 MTT_UNUSED; +static double ${name}651 MTT_UNUSED; +static double ${name}652 MTT_UNUSED; +static double ${name}653 MTT_UNUSED; +static double ${name}654 MTT_UNUSED; +static double ${name}655 MTT_UNUSED; +static double ${name}656 MTT_UNUSED; +static double ${name}657 MTT_UNUSED; +static double ${name}658 MTT_UNUSED; +static double ${name}659 MTT_UNUSED; +static double ${name}660 MTT_UNUSED; +static double ${name}661 MTT_UNUSED; +static double ${name}662 MTT_UNUSED; +static double ${name}663 MTT_UNUSED; +static double ${name}664 MTT_UNUSED; +static double ${name}665 MTT_UNUSED; +static double ${name}666 MTT_UNUSED; +static double ${name}667 MTT_UNUSED; +static double ${name}668 MTT_UNUSED; +static double ${name}669 MTT_UNUSED; +static double ${name}670 MTT_UNUSED; +static double ${name}671 MTT_UNUSED; +static double ${name}672 MTT_UNUSED; +static double ${name}673 MTT_UNUSED; +static double ${name}674 MTT_UNUSED; +static double ${name}675 MTT_UNUSED; +static double ${name}676 MTT_UNUSED; +static double ${name}677 MTT_UNUSED; +static double ${name}678 MTT_UNUSED; +static double ${name}679 MTT_UNUSED; +static double ${name}680 MTT_UNUSED; +static double ${name}681 MTT_UNUSED; +static double ${name}682 MTT_UNUSED; +static double ${name}683 MTT_UNUSED; +static double ${name}684 MTT_UNUSED; +static double ${name}685 MTT_UNUSED; +static double ${name}686 MTT_UNUSED; +static double ${name}687 MTT_UNUSED; +static double ${name}688 MTT_UNUSED; +static double ${name}689 MTT_UNUSED; +static double ${name}690 MTT_UNUSED; +static double ${name}691 MTT_UNUSED; +static double ${name}692 MTT_UNUSED; +static double ${name}693 MTT_UNUSED; +static double ${name}694 MTT_UNUSED; +static double ${name}695 MTT_UNUSED; +static double ${name}696 MTT_UNUSED; +static double ${name}697 MTT_UNUSED; +static double ${name}698 MTT_UNUSED; +static double ${name}699 MTT_UNUSED; +static double ${name}700 MTT_UNUSED; +static double ${name}701 MTT_UNUSED; +static double ${name}702 MTT_UNUSED; +static double ${name}703 MTT_UNUSED; +static double ${name}704 MTT_UNUSED; +static double ${name}705 MTT_UNUSED; +static double ${name}706 MTT_UNUSED; +static double ${name}707 MTT_UNUSED; +static double ${name}708 MTT_UNUSED; +static double ${name}709 MTT_UNUSED; +static double ${name}710 MTT_UNUSED; +static double ${name}711 MTT_UNUSED; +static double ${name}712 MTT_UNUSED; +static double ${name}713 MTT_UNUSED; +static double ${name}714 MTT_UNUSED; +static double ${name}715 MTT_UNUSED; +static double ${name}716 MTT_UNUSED; +static double ${name}717 MTT_UNUSED; +static double ${name}718 MTT_UNUSED; +static double ${name}719 MTT_UNUSED; +static double ${name}720 MTT_UNUSED; +static double ${name}721 MTT_UNUSED; +static double ${name}722 MTT_UNUSED; +static double ${name}723 MTT_UNUSED; +static double ${name}724 MTT_UNUSED; +static double ${name}725 MTT_UNUSED; +static double ${name}726 MTT_UNUSED; +static double ${name}727 MTT_UNUSED; +static double ${name}728 MTT_UNUSED; +static double ${name}729 MTT_UNUSED; +static double ${name}730 MTT_UNUSED; +static double ${name}731 MTT_UNUSED; +static double ${name}732 MTT_UNUSED; +static double ${name}733 MTT_UNUSED; +static double ${name}734 MTT_UNUSED; +static double ${name}735 MTT_UNUSED; +static double ${name}736 MTT_UNUSED; +static double ${name}737 MTT_UNUSED; +static double ${name}738 MTT_UNUSED; +static double ${name}739 MTT_UNUSED; +static double ${name}740 MTT_UNUSED; +static double ${name}741 MTT_UNUSED; +static double ${name}742 MTT_UNUSED; +static double ${name}743 MTT_UNUSED; +static double ${name}744 MTT_UNUSED; +static double ${name}745 MTT_UNUSED; +static double ${name}746 MTT_UNUSED; +static double ${name}747 MTT_UNUSED; +static double ${name}748 MTT_UNUSED; +static double ${name}749 MTT_UNUSED; +static double ${name}750 MTT_UNUSED; +static double ${name}751 MTT_UNUSED; +static double ${name}752 MTT_UNUSED; +static double ${name}753 MTT_UNUSED; +static double ${name}754 MTT_UNUSED; +static double ${name}755 MTT_UNUSED; +static double ${name}756 MTT_UNUSED; +static double ${name}757 MTT_UNUSED; +static double ${name}758 MTT_UNUSED; +static double ${name}759 MTT_UNUSED; +static double ${name}760 MTT_UNUSED; +static double ${name}761 MTT_UNUSED; +static double ${name}762 MTT_UNUSED; +static double ${name}763 MTT_UNUSED; +static double ${name}764 MTT_UNUSED; +static double ${name}765 MTT_UNUSED; +static double ${name}766 MTT_UNUSED; +static double ${name}767 MTT_UNUSED; +static double ${name}768 MTT_UNUSED; +static double ${name}769 MTT_UNUSED; +static double ${name}770 MTT_UNUSED; +static double ${name}771 MTT_UNUSED; +static double ${name}772 MTT_UNUSED; +static double ${name}773 MTT_UNUSED; +static double ${name}774 MTT_UNUSED; +static double ${name}775 MTT_UNUSED; +static double ${name}776 MTT_UNUSED; +static double ${name}777 MTT_UNUSED; +static double ${name}778 MTT_UNUSED; +static double ${name}779 MTT_UNUSED; +static double ${name}780 MTT_UNUSED; +static double ${name}781 MTT_UNUSED; +static double ${name}782 MTT_UNUSED; +static double ${name}783 MTT_UNUSED; +static double ${name}784 MTT_UNUSED; +static double ${name}785 MTT_UNUSED; +static double ${name}786 MTT_UNUSED; +static double ${name}787 MTT_UNUSED; +static double ${name}788 MTT_UNUSED; +static double ${name}789 MTT_UNUSED; +static double ${name}790 MTT_UNUSED; +static double ${name}791 MTT_UNUSED; +static double ${name}792 MTT_UNUSED; +static double ${name}793 MTT_UNUSED; +static double ${name}794 MTT_UNUSED; +static double ${name}795 MTT_UNUSED; +static double ${name}796 MTT_UNUSED; +static double ${name}797 MTT_UNUSED; +static double ${name}798 MTT_UNUSED; +static double ${name}799 MTT_UNUSED; +static double ${name}800 MTT_UNUSED; +static double ${name}801 MTT_UNUSED; +static double ${name}802 MTT_UNUSED; +static double ${name}803 MTT_UNUSED; +static double ${name}804 MTT_UNUSED; +static double ${name}805 MTT_UNUSED; +static double ${name}806 MTT_UNUSED; +static double ${name}807 MTT_UNUSED; +static double ${name}808 MTT_UNUSED; +static double ${name}809 MTT_UNUSED; +static double ${name}810 MTT_UNUSED; +static double ${name}811 MTT_UNUSED; +static double ${name}812 MTT_UNUSED; +static double ${name}813 MTT_UNUSED; +static double ${name}814 MTT_UNUSED; +static double ${name}815 MTT_UNUSED; +static double ${name}816 MTT_UNUSED; +static double ${name}817 MTT_UNUSED; +static double ${name}818 MTT_UNUSED; +static double ${name}819 MTT_UNUSED; +static double ${name}820 MTT_UNUSED; +static double ${name}821 MTT_UNUSED; +static double ${name}822 MTT_UNUSED; +static double ${name}823 MTT_UNUSED; +static double ${name}824 MTT_UNUSED; +static double ${name}825 MTT_UNUSED; +static double ${name}826 MTT_UNUSED; +static double ${name}827 MTT_UNUSED; +static double ${name}828 MTT_UNUSED; +static double ${name}829 MTT_UNUSED; +static double ${name}830 MTT_UNUSED; +static double ${name}831 MTT_UNUSED; +static double ${name}832 MTT_UNUSED; +static double ${name}833 MTT_UNUSED; +static double ${name}834 MTT_UNUSED; +static double ${name}835 MTT_UNUSED; +static double ${name}836 MTT_UNUSED; +static double ${name}837 MTT_UNUSED; +static double ${name}838 MTT_UNUSED; +static double ${name}839 MTT_UNUSED; +static double ${name}840 MTT_UNUSED; +static double ${name}841 MTT_UNUSED; +static double ${name}842 MTT_UNUSED; +static double ${name}843 MTT_UNUSED; +static double ${name}844 MTT_UNUSED; +static double ${name}845 MTT_UNUSED; +static double ${name}846 MTT_UNUSED; +static double ${name}847 MTT_UNUSED; +static double ${name}848 MTT_UNUSED; +static double ${name}849 MTT_UNUSED; +static double ${name}850 MTT_UNUSED; +static double ${name}851 MTT_UNUSED; +static double ${name}852 MTT_UNUSED; +static double ${name}853 MTT_UNUSED; +static double ${name}854 MTT_UNUSED; +static double ${name}855 MTT_UNUSED; +static double ${name}856 MTT_UNUSED; +static double ${name}857 MTT_UNUSED; +static double ${name}858 MTT_UNUSED; +static double ${name}859 MTT_UNUSED; +static double ${name}860 MTT_UNUSED; +static double ${name}861 MTT_UNUSED; +static double ${name}862 MTT_UNUSED; +static double ${name}863 MTT_UNUSED; +static double ${name}864 MTT_UNUSED; +static double ${name}865 MTT_UNUSED; +static double ${name}866 MTT_UNUSED; +static double ${name}867 MTT_UNUSED; +static double ${name}868 MTT_UNUSED; +static double ${name}869 MTT_UNUSED; +static double ${name}870 MTT_UNUSED; +static double ${name}871 MTT_UNUSED; +static double ${name}872 MTT_UNUSED; +static double ${name}873 MTT_UNUSED; +static double ${name}874 MTT_UNUSED; +static double ${name}875 MTT_UNUSED; +static double ${name}876 MTT_UNUSED; +static double ${name}877 MTT_UNUSED; +static double ${name}878 MTT_UNUSED; +static double ${name}879 MTT_UNUSED; +static double ${name}880 MTT_UNUSED; +static double ${name}881 MTT_UNUSED; +static double ${name}882 MTT_UNUSED; +static double ${name}883 MTT_UNUSED; +static double ${name}884 MTT_UNUSED; +static double ${name}885 MTT_UNUSED; +static double ${name}886 MTT_UNUSED; +static double ${name}887 MTT_UNUSED; +static double ${name}888 MTT_UNUSED; +static double ${name}889 MTT_UNUSED; +static double ${name}890 MTT_UNUSED; +static double ${name}891 MTT_UNUSED; +static double ${name}892 MTT_UNUSED; +static double ${name}893 MTT_UNUSED; +static double ${name}894 MTT_UNUSED; +static double ${name}895 MTT_UNUSED; +static double ${name}896 MTT_UNUSED; +static double ${name}897 MTT_UNUSED; +static double ${name}898 MTT_UNUSED; +static double ${name}899 MTT_UNUSED; +static double ${name}900 MTT_UNUSED; +static double ${name}901 MTT_UNUSED; +static double ${name}902 MTT_UNUSED; +static double ${name}903 MTT_UNUSED; +static double ${name}904 MTT_UNUSED; +static double ${name}905 MTT_UNUSED; +static double ${name}906 MTT_UNUSED; +static double ${name}907 MTT_UNUSED; +static double ${name}908 MTT_UNUSED; +static double ${name}909 MTT_UNUSED; +static double ${name}910 MTT_UNUSED; +static double ${name}911 MTT_UNUSED; +static double ${name}912 MTT_UNUSED; +static double ${name}913 MTT_UNUSED; +static double ${name}914 MTT_UNUSED; +static double ${name}915 MTT_UNUSED; +static double ${name}916 MTT_UNUSED; +static double ${name}917 MTT_UNUSED; +static double ${name}918 MTT_UNUSED; +static double ${name}919 MTT_UNUSED; +static double ${name}920 MTT_UNUSED; +static double ${name}921 MTT_UNUSED; +static double ${name}922 MTT_UNUSED; +static double ${name}923 MTT_UNUSED; +static double ${name}924 MTT_UNUSED; +static double ${name}925 MTT_UNUSED; +static double ${name}926 MTT_UNUSED; +static double ${name}927 MTT_UNUSED; +static double ${name}928 MTT_UNUSED; +static double ${name}929 MTT_UNUSED; +static double ${name}930 MTT_UNUSED; +static double ${name}931 MTT_UNUSED; +static double ${name}932 MTT_UNUSED; +static double ${name}933 MTT_UNUSED; +static double ${name}934 MTT_UNUSED; +static double ${name}935 MTT_UNUSED; +static double ${name}936 MTT_UNUSED; +static double ${name}937 MTT_UNUSED; +static double ${name}938 MTT_UNUSED; +static double ${name}939 MTT_UNUSED; +static double ${name}940 MTT_UNUSED; +static double ${name}941 MTT_UNUSED; +static double ${name}942 MTT_UNUSED; +static double ${name}943 MTT_UNUSED; +static double ${name}944 MTT_UNUSED; +static double ${name}945 MTT_UNUSED; +static double ${name}946 MTT_UNUSED; +static double ${name}947 MTT_UNUSED; +static double ${name}948 MTT_UNUSED; +static double ${name}949 MTT_UNUSED; +static double ${name}950 MTT_UNUSED; +static double ${name}951 MTT_UNUSED; +static double ${name}952 MTT_UNUSED; +static double ${name}953 MTT_UNUSED; +static double ${name}954 MTT_UNUSED; +static double ${name}955 MTT_UNUSED; +static double ${name}956 MTT_UNUSED; +static double ${name}957 MTT_UNUSED; +static double ${name}958 MTT_UNUSED; +static double ${name}959 MTT_UNUSED; +static double ${name}960 MTT_UNUSED; +static double ${name}961 MTT_UNUSED; +static double ${name}962 MTT_UNUSED; +static double ${name}963 MTT_UNUSED; +static double ${name}964 MTT_UNUSED; +static double ${name}965 MTT_UNUSED; +static double ${name}966 MTT_UNUSED; +static double ${name}967 MTT_UNUSED; +static double ${name}968 MTT_UNUSED; +static double ${name}969 MTT_UNUSED; +static double ${name}970 MTT_UNUSED; +static double ${name}971 MTT_UNUSED; +static double ${name}972 MTT_UNUSED; +static double ${name}973 MTT_UNUSED; +static double ${name}974 MTT_UNUSED; +static double ${name}975 MTT_UNUSED; +static double ${name}976 MTT_UNUSED; +static double ${name}977 MTT_UNUSED; +static double ${name}978 MTT_UNUSED; +static double ${name}979 MTT_UNUSED; +static double ${name}980 MTT_UNUSED; +static double ${name}981 MTT_UNUSED; +static double ${name}982 MTT_UNUSED; +static double ${name}983 MTT_UNUSED; +static double ${name}984 MTT_UNUSED; +static double ${name}985 MTT_UNUSED; +static double ${name}986 MTT_UNUSED; +static double ${name}987 MTT_UNUSED; +static double ${name}988 MTT_UNUSED; +static double ${name}989 MTT_UNUSED; +static double ${name}990 MTT_UNUSED; +static double ${name}991 MTT_UNUSED; +static double ${name}992 MTT_UNUSED; +static double ${name}993 MTT_UNUSED; +static double ${name}994 MTT_UNUSED; +static double ${name}995 MTT_UNUSED; +static double ${name}996 MTT_UNUSED; +static double ${name}997 MTT_UNUSED; +static double ${name}998 MTT_UNUSED; +static double ${name}999 MTT_UNUSED; +static double ${name}1000 MTT_UNUSED; EOF - if [ ${NUM_OF_TMP_VAR} -gt 500 ]; then - i=501 + if [ ${NUM_OF_TMP_VAR} -gt 1000 ]; then + i=1001 while [ ${i} -le ${NUM_OF_TMP_VAR} ] do echo "static double ${name}${i} MTT_UNUSED;" i=`expr ${i} + 1` done