This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch quake
in repository game-data-packager.

commit 2e240ac958b0d4b46993ad7cad1ee1ce6ee14a11
Author: Marc Leeman <marc.lee...@gmail.com>
Date:   Sun Jan 29 19:47:20 2006 +0000

    Load newtrunk into packages/quake3/trunk.
---
 code/qcommon/q_shared.h     |    2 +-
 code/qcommon/qcommon.h      |    5 +-
 code/server/sv_init.c       |    2 +-
 code/tools/lcc/lburg/gram.c | 1919 ++++++++++++++++++++++++++++++++-----------
 debian/README.Debian        |    9 +
 debian/changelog            |   63 ++
 debian/compat               |    1 +
 debian/control              |   18 +
 debian/copyright            |   27 +
 debian/dirs                 |    4 +
 debian/docs                 |    4 +
 debian/ioq3ded              |   10 +
 debian/ioq3ded.sgml         |  376 +++++++++
 debian/ioquake3             |   10 +
 debian/ioquake3.desktop     |    9 +
 debian/ioquake3.sgml        |  101 +++
 debian/ioquake3ta.desktop   |    9 +
 debian/ioquake3ta.xpm       |  254 ++++++
 debian/menu                 |   13 +
 debian/preinst              |   10 +
 debian/rules                |  126 +++
 debian/templates            |   23 +
 22 files changed, 2497 insertions(+), 498 deletions(-)

diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h
index 6e55a4d..ad1c0c1 100644
--- a/code/qcommon/q_shared.h
+++ b/code/qcommon/q_shared.h
@@ -26,7 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  
02110-1301  USA
 // q_shared.h -- included first by ALL program modules.
 // A user mod should never modify this file
 
-#define        Q3_VERSION              "ioQ3 1.33"
+#define        Q3_VERSION              "GNU/Debian ioQ3 1.33"
 // 1.32 released 7-10-2002
 
 #define MAX_TEAMNAME 32
diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h
index 21c74e9..6e622b6 100644
--- a/code/qcommon/qcommon.h
+++ b/code/qcommon/qcommon.h
@@ -239,7 +239,10 @@ extern int demo_protocols[];
 #define MASTER_SERVER_NAME     "master.quake3arena.com"
 #endif
 #ifndef AUTHORIZE_SERVER_NAME
-#define        AUTHORIZE_SERVER_NAME   "authorize.quake3arena.com"
+//  we set the authorize server to localhost. it will challenge twice
+// and let the clients in anyway.
+// #define     AUTHORIZE_SERVER_NAME   "authorize.quake3arena.com"
+#define        AUTHORIZE_SERVER_NAME   "localhost"
 #endif
 
 #define        PORT_MASTER                     27950
diff --git a/code/server/sv_init.c b/code/server/sv_init.c
index 4ce424e..f3a1e03 100644
--- a/code/server/sv_init.c
+++ b/code/server/sv_init.c
@@ -579,7 +579,7 @@ void SV_Init (void) {
        Cvar_Get ("protocol", va("%i", PROTOCOL_VERSION), CVAR_SERVERINFO | 
CVAR_ROM);
        sv_mapname = Cvar_Get ("mapname", "nomap", CVAR_SERVERINFO | CVAR_ROM);
        sv_privateClients = Cvar_Get ("sv_privateClients", "0", 
CVAR_SERVERINFO);
-       sv_hostname = Cvar_Get ("sv_hostname", "noname", CVAR_SERVERINFO | 
CVAR_ARCHIVE );
+       sv_hostname = Cvar_Get ("sv_hostname", "GNU/Debian server", 
CVAR_SERVERINFO | CVAR_ARCHIVE );
        sv_maxclients = Cvar_Get ("sv_maxclients", "8", CVAR_SERVERINFO | 
CVAR_LATCH);
 
        sv_maxRate = Cvar_Get ("sv_maxRate", "0", CVAR_ARCHIVE | 
CVAR_SERVERINFO );
diff --git a/code/tools/lcc/lburg/gram.c b/code/tools/lcc/lburg/gram.c
index a1cc890..052e542 100644
--- a/code/tools/lcc/lburg/gram.c
+++ b/code/tools/lcc/lburg/gram.c
@@ -1,262 +1,1469 @@
-#if defined(__STDC__) || defined(__cplusplus)
-#define YYCONST const
-#define YYPARAMS(x) x
-#define YYDEFUN(name, arglist, args) name(args)
-#define YYAND ,
-#define YYPTR void *
-#else
-#define YYCONST
-#define YYPARAMS(x) ()
-#define YYDEFUN(name, arglist, args) name arglist args;
-#define YYAND ;
-#define YYPTR char *
-#endif
-#ifndef lint
-YYCONST static char yysccsid[] = "@(#)yaccpar  1.8 (Berkeley +Cygnus.28) 
01/20/91";
-#endif
-#define YYBYACC 1
-#ifndef YYDONT_INCLUDE_STDIO
-#include <stdio.h>
+/* A Bison parser, made by GNU Bison 2.1.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free 
Software Foundation, Inc.
+
+   This program 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, 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, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
+
+/* Written by Richard Stallman by simplifying the original so called
+   ``semantic'' parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.1"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TERMINAL = 258,
+     START = 259,
+     PPERCENT = 260,
+     ID = 261,
+     TEMPLATE = 262,
+     CODE = 263,
+     INT = 264
+   };
 #endif
-//#ifdef __cplusplus TA <t...@ngus.net> stdlib.h applies to C too
-#include <stdlib.h> /* for malloc/realloc/free */
-//#endif
-#line 2 "lburg/gram.y"
+/* Tokens.  */
+#define TERMINAL 258
+#define START 259
+#define PPERCENT 260
+#define ID 261
+#define TEMPLATE 262
+#define CODE 263
+#define INT 264
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 1 "lburg/gram.y"
+
 #include <stdio.h>
 #include "lburg.h"
+static char rcsid[] = "$Id: gram.y 145 2001-10-17 21:53:10Z timo $";
 /*lint -e616 -e527 -e652 -esym(552,yynerrs) -esym(563,yynewstate,yyerrlab) */
 static int yylineno = 0;
+
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
 #line 8 "lburg/gram.y"
-typedef union {
+typedef union YYSTYPE {
        int n;
        char *string;
        Tree tree;
 } YYSTYPE;
-#line 37 "y.tab.c"
-#define TERMINAL 257
-#define START 258
-#define PPERCENT 259
-#define ID 260
-#define TEMPLATE 261
-#define CODE 262
-#define INT 263
-#define YYERRCODE 256
-static YYCONST short yylhs[] = {                                        -1,
-    0,    0,    4,    4,    6,    6,    6,    6,    7,    7,
-    5,    5,    5,    5,    1,    3,    3,    3,    2,
+/* Line 196 of yacc.c.  */
+#line 117 "y.tab.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 219 of yacc.c.  */
+#line 129 "y.tab.c"
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#ifndef YY_
+# if YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if defined (__STDC__) || defined (__cplusplus)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     define YYINCLUDED_STDLIB_H
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
+#  endif
+#  ifdef __cplusplus
+extern "C" {
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+       && (defined (__STDC__) || defined (__cplusplus)))
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+       && (defined (__STDC__) || defined (__cplusplus)))
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifdef __cplusplus
+}
+#  endif
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+        || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short int yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short int) + sizeof (YYSTYPE))                    \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined (__GNUC__) && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)             \
+      do                                       \
+       {                                       \
+         YYSIZE_T yyi;                         \
+         for (yyi = 0; yyi < (Count); yyi++)   \
+           (To)[yyi] = (From)[yyi];            \
+       }                                       \
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)                                       \
+    do                                                                 \
+      {                                                                        
\
+       YYSIZE_T yynewbytes;                                            \
+       YYCOPY (&yyptr->Stack, Stack, yysize);                          \
+       Stack = &yyptr->Stack;                                          \
+       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+       yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                        
\
+    while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+   typedef signed char yysigned_char;
+#else
+   typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL  3
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   35
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS  16
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS  9
+/* YYNRULES -- Number of rules. */
+#define YYNRULES  20
+/* YYNRULES -- Number of states. */
+#define YYNSTATES  37
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   264
+
+#define YYTRANSLATE(YYX)                                               \
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const unsigned char yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      10,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      13,    14,     2,     2,    15,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    12,     2,
+       2,    11,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9
 };
-static YYCONST short yylen[] = {                                         2,
-    3,    1,    0,    2,    3,    3,    1,    2,    0,    4,
-    0,    7,    2,    3,    1,    1,    4,    6,    1,
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const unsigned char yyprhs[] =
+{
+       0,     0,     3,     7,     9,    10,    13,    17,    21,    23,
+      26,    27,    32,    33,    41,    44,    48,    50,    52,    57,
+      64
 };
-static YYCONST short yydefred[] = {                                      3,
-    0,    0,    0,    9,    0,   11,    7,    4,    8,    0,
-   15,    0,    0,    0,    5,    6,    0,   13,    0,    0,
-   14,    0,   10,    0,    0,    0,    0,    0,   19,    0,
-   17,    0,   12,    0,   18,
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+      17,     0,    -1,    18,     5,    21,    -1,    18,    -1,    -1,
+      18,    19,    -1,     3,    20,    10,    -1,     4,    22,    10,
+      -1,    10,    -1,     1,    10,    -1,    -1,    20,     6,    11,
+       9,    -1,    -1,    21,    22,    12,    23,     7,    24,    10,
+      -1,    21,    10,    -1,    21,     1,    10,    -1,     6,    -1,
+       6,    -1,     6,    13,    23,    14,    -1,     6,    13,    23,
+      15,    23,    14,    -1,     8,    -1
 };
-static YYCONST short yydgoto[] = {                                       1,
-   12,   30,   25,    2,   13,    8,   10,
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const unsigned char yyrline[] =
+{
+       0,    22,    22,    23,    26,    27,    30,    31,    35,    36,
+      39,    40,    43,    44,    45,    46,    49,    52,    53,    54,
+      57
 };
-static YYCONST short yysindex[] = {                                      0,
-    0,   -4,   -2,    0, -250,    0,    0,    0,    0,   -9,
-    0,    1,  -10,  -49,    0,    0,    3,    0,  -44, -248,
-    0, -244,    0,  -22, -242, -244, -245,  -37,    0,   10,
-    0, -244,    0,  -20,    0,
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "TERMINAL", "START", "PPERCENT", "ID",
+  "TEMPLATE", "CODE", "INT", "'\\n'", "'='", "':'", "'('", "')'", "','",
+  "$accept", "spec", "decls", "decl", "blist", "rules", "nonterm", "tree",
+  "cost", 0
 };
-static YYCONST short yyrindex[] = {                                      0,
-    0,   22,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,  -39,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const unsigned short int yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+      10,    61,    58,    40,    41,    44
 };
-static YYCONST short yygindex[] = {                                      0,
-   11,    0,  -23,    0,    0,    0,    0,
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const unsigned char yyr1[] =
+{
+       0,    16,    17,    17,    18,    18,    19,    19,    19,    19,
+      20,    20,    21,    21,    21,    21,    22,    23,    23,    23,
+      24
 };
-#define YYTABLESIZE 255
-static YYCONST short yytable[] = {                                      18,
-   15,   16,   28,   31,   16,    7,   32,    9,   34,   11,
-   16,   20,   21,   22,   23,   24,   29,   26,   27,   33,
-   35,    2,    1,   19,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,   16,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,   17,    0,    0,    0,   11,
-   14,    3,    4,    5,    6,
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const unsigned char yyr2[] =
+{
+       0,     2,     3,     1,     0,     2,     3,     3,     1,     2,
+       0,     4,     0,     7,     2,     3,     1,     1,     4,     6,
+       1
 };
-static YYCONST short yycheck[] = {                                      10,
-   10,   41,   26,   41,   44,   10,   44,   10,   32,  260,
-   10,   61,   10,   58,  263,  260,  262,   40,  261,   10,
-   41,    0,    0,   13,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,  261,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,   -1,  260,
-  260,  256,  257,  258,  259,
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const unsigned char yydefact[] =
+{
+       4,     0,     0,     1,     0,    10,     0,    12,     8,     5,
+       9,     0,    16,     0,     0,     0,     6,     7,     0,    14,
+       0,     0,    15,     0,    11,    17,     0,     0,     0,     0,
+      20,     0,    18,     0,    13,     0,    19
 };
-#define YYFINAL 1
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 263
-#if YYDEBUG
-static YYCONST char *YYCONST yyname[] = {
-"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,"':'",0,0,
-"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-"TERMINAL","START","PPERCENT","ID","TEMPLATE","CODE","INT",
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+      -1,     1,     2,     9,    11,    14,    13,    26,    31
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -26
+static const yysigned_char yypact[] =
+{
+     -26,    11,     0,   -26,     5,   -26,     8,   -26,   -26,   -26,
+     -26,     3,   -26,     7,     6,     9,   -26,   -26,    12,   -26,
+      13,    14,   -26,    15,   -26,    16,    17,    15,    18,     4,
+     -26,    20,   -26,    15,   -26,    19,   -26
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yysigned_char yypgoto[] =
+{
+     -26,   -26,   -26,   -26,   -26,   -26,    21,   -25,   -26
 };
-static YYCONST char *YYCONST yyrule[] = {
-"$accept : spec",
-"spec : decls PPERCENT rules",
-"spec : decls",
-"decls :",
-"decls : decls decl",
-"decl : TERMINAL blist '\\n'",
-"decl : START nonterm '\\n'",
-"decl : '\\n'",
-"decl : error '\\n'",
-"blist :",
-"blist : blist ID '=' INT",
-"rules :",
-"rules : rules nonterm ':' tree TEMPLATE cost '\\n'",
-"rules : rules '\\n'",
-"rules : rules error '\\n'",
-"nonterm : ID",
-"tree : ID",
-"tree : ID '(' tree ')'",
-"tree : ID '(' tree ',' tree ')'",
-"cost : CODE",
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -4
+static const yysigned_char yytable[] =
+{
+      -3,     4,    29,     5,     6,     7,    -2,    18,    35,    15,
+       8,     3,    12,    16,    12,    10,    19,    17,    32,    33,
+      21,    25,    22,    24,    28,    23,    30,     0,     0,    27,
+      34,     0,     0,    36,     0,    20
+};
+
+static const yysigned_char yycheck[] =
+{
+       0,     1,    27,     3,     4,     5,     0,     1,    33,     6,
+      10,     0,     6,    10,     6,    10,    10,    10,    14,    15,
+      11,     6,    10,     9,     7,    12,     8,    -1,    -1,    13,
+      10,    -1,    -1,    14,    -1,    14
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const unsigned char yystos[] =
+{
+       0,    17,    18,     0,     1,     3,     4,     5,    10,    19,
+      10,    20,     6,    22,    21,     6,    10,    10,     1,    10,
+      22,    11,    10,    12,     9,     6,    23,    13,     7,    23,
+       8,    24,    14,    15,    10,    23,    14
 };
+
+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin      (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF          0
+
+#define YYACCEPT       goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL         goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)                                 \
+do                                                             \
+  if (yychar == YYEMPTY && yylen == 1)                         \
+    {                                                          \
+      yychar = (Token);                                                \
+      yylval = (Value);                                                \
+      yytoken = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    {                                                          \
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;                                                 \
+    }                                                          \
+while (0)
+
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
+    do                                                                 \
+      if (N)                                                           \
+       {                                                               \
+         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+       }                                                               \
+      else                                                             \
+       {                                                               \
+         (Current).first_line   = (Current).last_line   =              \
+           YYRHSLOC (Rhs, 0).last_line;                                \
+         (Current).first_column = (Current).last_column =              \
+           YYRHSLOC (Rhs, 0).last_column;                              \
+       }                                                               \
+    while (0)
 #endif
-#define YYLEX yylex()
-#define YYEMPTY -1
-#define yyclearin (yychar=(YYEMPTY))
-#define yyerrok (yyerrflag=0)
-#ifndef YYINITDEPTH
-#define YYINITDEPTH 200
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)                 \
+     fprintf (File, "%d.%d-%d.%d",                     \
+              (Loc).first_line, (Loc).first_column,    \
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
 #endif
-#ifdef YYSTACKSIZE
-#ifndef YYMAXDEPTH
-#define YYMAXDEPTH YYSTACKSIZE
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
 #endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)                       \
+do {                                           \
+  if (yydebug)                                 \
+    YYFPRINTF Args;                            \
+} while (0)
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)         \
+do {                                                           \
+  if (yydebug)                                                 \
+    {                                                          \
+      YYFPRINTF (stderr, "%s ", Title);                                \
+      yysymprint (stderr,                                      \
+                  Type, Value);        \
+      YYFPRINTF (stderr, "\n");                                        \
+    }                                                          \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
 #else
-#ifdef YYMAXDEPTH
-#define YYSTACKSIZE YYMAXDEPTH
+static void
+yy_stack_print (bottom, top)
+    short int *bottom;
+    short int *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (/* Nothing. */; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)                           \
+do {                                                           \
+  if (yydebug)                                                 \
+    yy_stack_print ((Bottom), (Top));                          \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
 #else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH 500
+static void
+yy_reduce_print (yyrule)
+    int yyrule;
 #endif
+{
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+             yyrule - 1, yylno);
+  /* Print the symbols being reduced, and their result.  */
+  for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+    YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+  YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule)         \
+do {                                   \
+  if (yydebug)                         \
+    yy_reduce_print (Rule);            \
+} while (0)
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef        YYINITDEPTH
+# define YYINITDEPTH 200
 #endif
-#ifndef YYMAXSTACKSIZE
-#define YYMAXSTACKSIZE 10000
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
 #endif
-int yydebug;
-int yynerrs;
-int yyerrflag;
-int yychar;
-YYSTYPE yyval;
-YYSTYPE yylval;
-static short *yyss;
-static YYSTYPE *yyvs;
-static int yystacksize;
-#define yyfree(x) free(x)
-extern int yylex();
-
-static YYPTR
-YYDEFUN (yymalloc, (bytes), unsigned bytes)
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
 {
-    YYPTR ptr = (YYPTR) malloc (bytes);
-    if (ptr != 0) return (ptr);
-    yyerror ("yyparse: memory exhausted");
-    return (0);
+  const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
 }
+#  endif
+# endif
 
-static YYPTR
-YYDEFUN (yyrealloc, (old, bytes), YYPTR old YYAND unsigned bytes)
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
 {
-    YYPTR ptr = (YYPTR) realloc (old, bytes);
-    if (ptr != 0) return (ptr);
-    yyerror ("yyparse: memory exhausted");
-    return (0);
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
 }
+#  endif
+# endif
 
-static int
-#ifdef __GNUC__
-inline
-#endif
-yygrow ()
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
 {
+  if (*yystr == '"')
+    {
+      size_t yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+       switch (*++yyp)
+         {
+         case '\'':
+         case ',':
+           goto do_not_strip_quotes;
+
+         case '\\':
+           if (*++yyp != '\\')
+             goto do_not_strip_quotes;
+           /* Fall through.  */
+         default:
+           if (yyres)
+             yyres[yyn] = *yyp;
+           yyn++;
+           break;
+
+         case '"':
+           if (yyres)
+             yyres[yyn] = '\0';
+           return yyn;
+         }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+#endif /* YYERROR_VERBOSE */
+
+
+
 #if YYDEBUG
-    int old_stacksize = yystacksize;
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE *yyvaluep;
 #endif
-    short *new_yyss;
-    YYSTYPE *new_yyvs;
-
-    if (yystacksize == YYMAXSTACKSIZE)
-        return (1);
-    yystacksize += (yystacksize + 1 ) / 2;
-    if (yystacksize > YYMAXSTACKSIZE)
-        yystacksize = YYMAXSTACKSIZE;
-#if YYDEBUG
-    if (yydebug)
-        printf("yydebug: growing stack size from %d to %d\n",
-               old_stacksize, yystacksize);
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+  switch (yytype)
+    {
+      default:
+        break;
+    }
+  YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvaluep;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+        break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol.  */
+int yychar;
+
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+  void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+    ;
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  short int yyssa[YYINITDEPTH];
+  short int *yyss = yyssa;
+  short int *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule.  */
+  int yylen;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;            /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+       /* Give user a chance to reallocate the stack. Use copies of
+          these so that the &'s don't force the real ones into
+          memory.  */
+       YYSTYPE *yyvs1 = yyvs;
+       short int *yyss1 = yyss;
+
+
+       /* Each stack pointer address is followed by the size of the
+          data in use in that stack, in bytes.  This used to be a
+          conditional around just the two extra args, but that might
+          be undefined if yyoverflow is a macro.  */
+       yyoverflow (YY_("memory exhausted"),
+                   &yyss1, yysize * sizeof (*yyssp),
+                   &yyvs1, yysize * sizeof (*yyvsp),
+
+                   &yystacksize);
+
+       yyss = yyss1;
+       yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+       goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+       yystacksize = YYMAXDEPTH;
+
+      {
+       short int *yyss1 = yyss;
+       union yyalloc *yyptr =
+         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+       if (! yyptr)
+         goto yyexhaustedlab;
+       YYSTACK_RELOCATE (yyss);
+       YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+       if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+                 (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+       YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+       goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the token being shifted unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  *++yyvsp = yylval;
+
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 2:
+#line 22 "lburg/gram.y"
+    { yylineno = 0; }
+    break;
+
+  case 3:
+#line 23 "lburg/gram.y"
+    { yylineno = 0; }
+    break;
+
+  case 7:
+#line 31 "lburg/gram.y"
+    {
+               if (nonterm((yyvsp[-1].string))->number != 1)
+                       yyerror("redeclaration of the start symbol\n");
+               }
+    break;
+
+  case 9:
+#line 36 "lburg/gram.y"
+    { yyerrok; }
+    break;
+
+  case 11:
+#line 40 "lburg/gram.y"
+    { term((yyvsp[-2].string), (yyvsp[0].n)); }
+    break;
+
+  case 13:
+#line 44 "lburg/gram.y"
+    { rule((yyvsp[-5].string), (yyvsp[-3].tree), (yyvsp[-2].string), 
(yyvsp[-1].string)); }
+    break;
+
+  case 15:
+#line 46 "lburg/gram.y"
+    { yyerrok; }
+    break;
+
+  case 16:
+#line 49 "lburg/gram.y"
+    { nonterm((yyval.string) = (yyvsp[0].string)); }
+    break;
+
+  case 17:
+#line 52 "lburg/gram.y"
+    { (yyval.tree) = tree((yyvsp[0].string),  0,  0); }
+    break;
+
+  case 18:
+#line 53 "lburg/gram.y"
+    { (yyval.tree) = tree((yyvsp[-3].string), (yyvsp[-1].tree),  0); }
+    break;
+
+  case 19:
+#line 54 "lburg/gram.y"
+    { (yyval.tree) = tree((yyvsp[-5].string), (yyvsp[-3].tree), 
(yyvsp[-1].tree)); }
+    break;
+
+  case 20:
+#line 57 "lburg/gram.y"
+    { if (*(yyvsp[0].string) == 0) (yyval.string) = "0"; }
+    break;
+
+
+      default: break;
+    }
+
+/* Line 1126 of yacc.c.  */
+#line 1198 "y.tab.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+       {
+         int yytype = YYTRANSLATE (yychar);
+         YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+         YYSIZE_T yysize = yysize0;
+         YYSIZE_T yysize1;
+         int yysize_overflow = 0;
+         char *yymsg = 0;
+#        define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+         char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+         int yyx;
+
+#if 0
+         /* This is so xgettext sees the translatable formats that are
+            constructed on the fly.  */
+         YY_("syntax error, unexpected %s");
+         YY_("syntax error, unexpected %s, expecting %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+         YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+         char *yyfmt;
+         char const *yyf;
+         static char const yyunexpected[] = "syntax error, unexpected %s";
+         static char const yyexpecting[] = ", expecting %s";
+         static char const yyor[] = " or %s";
+         char yyformat[sizeof yyunexpected
+                       + sizeof yyexpecting - 1
+                       + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+                          * (sizeof yyor - 1))];
+         char const *yyprefix = yyexpecting;
+
+         /* Start YYX at -YYN if negative to avoid negative indexes in
+            YYCHECK.  */
+         int yyxbegin = yyn < 0 ? -yyn : 0;
+
+         /* Stay within bounds of both yycheck and yytname.  */
+         int yychecklim = YYLAST - yyn;
+         int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+         int yycount = 1;
+
+         yyarg[0] = yytname[yytype];
+         yyfmt = yystpcpy (yyformat, yyunexpected);
+
+         for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+           if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+             {
+               if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                 {
+                   yycount = 1;
+                   yysize = yysize0;
+                   yyformat[sizeof yyunexpected - 1] = '\0';
+                   break;
+                 }
+               yyarg[yycount++] = yytname[yyx];
+               yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+               yysize_overflow |= yysize1 < yysize;
+               yysize = yysize1;
+               yyfmt = yystpcpy (yyfmt, yyprefix);
+               yyprefix = yyor;
+             }
+
+         yyf = YY_(yyformat);
+         yysize1 = yysize + yystrlen (yyf);
+         yysize_overflow |= yysize1 < yysize;
+         yysize = yysize1;
+
+         if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+           yymsg = (char *) YYSTACK_ALLOC (yysize);
+         if (yymsg)
+           {
+             /* Avoid sprintf, as that infringes on the user's name space.
+                Don't have undefined behavior even if the translation
+                produced a string with the wrong number of "%s"s.  */
+             char *yyp = yymsg;
+             int yyi = 0;
+             while ((*yyp = *yyf))
+               {
+                 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+                   {
+                     yyp += yytnamerr (yyp, yyarg[yyi++]);
+                     yyf += 2;
+                   }
+                 else
+                   {
+                     yyp++;
+                     yyf++;
+                   }
+               }
+             yyerror (yymsg);
+             YYSTACK_FREE (yymsg);
+           }
+         else
+           {
+             yyerror (YY_("syntax error"));
+             goto yyexhaustedlab;
+           }
+       }
+      else
+#endif /* YYERROR_VERBOSE */
+       yyerror (YY_("syntax error"));
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse look-ahead token after an
+        error, discard it.  */
+
+      if (yychar <= YYEOF)
+        {
+         /* Return failure if at end of input.  */
+         if (yychar == YYEOF)
+           YYABORT;
+        }
+      else
+       {
+         yydestruct ("Error: discarding", yytoken, &yylval);
+         yychar = YYEMPTY;
+       }
+    }
+
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (0)
+     goto yyerrorlab;
+
+yyvsp -= yylen;
+  yyssp -= yylen;
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+       {
+         yyn += YYTERROR;
+         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+           {
+             yyn = yytable[yyn];
+             if (0 < yyn)
+               break;
+           }
+       }
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+       YYABORT;
+
+
+      yydestruct ("Error: popping", yystos[yystate], yyvsp);
+      YYPOPSTACK;
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
 #endif
-    new_yyss = (short *) yyrealloc ((char *)yyss, yystacksize * sizeof 
(short));
-    if (new_yyss == 0)
-        return (1);
-    new_yyvs = (YYSTYPE *) yyrealloc ((char *)yyvs, yystacksize * sizeof 
(YYSTYPE));
-    if (new_yyvs == 0)
+
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+                yytoken, &yylval);
+  while (yyssp != yyss)
     {
-        yyfree (new_yyss);
-        return (1);
+      yydestruct ("Cleanup: popping",
+                 yystos[*yyssp], yyvsp);
+      YYPOPSTACK;
     }
-    yyss = new_yyss;
-    yyvs = new_yyvs;
-    return (0);
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+  return yyresult;
 }
-#line 60 "lburg/gram.y"
+
+
+#line 59 "lburg/gram.y"
+
 #include <assert.h>
 #include <stdarg.h>
 #include <ctype.h>
@@ -400,283 +1607,5 @@ void yywarn(char *fmt, ...) {
        fprintf(stderr, "warning: ");
        vfprintf(stderr, fmt, ap);
 }
-#line 403 "y.tab.c"
-#define YYABORT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
 
-#if YYDEBUG
-#ifdef __cplusplus
-extern "C" char *getenv();
-#else
-extern char *getenv();
-#endif
-#endif
 
-int
-yyparse()
-{
-    register int yym, yyn, yystate;
-    register YYSTYPE *yyvsp;
-    register short *yyssp;
-    short *yysse;
-#if YYDEBUG
-    register YYCONST char *yys;
-
-    if (yys = getenv("YYDEBUG"))
-    {
-        yyn = *yys;
-        if (yyn >= '0' && yyn <= '9')
-            yydebug = yyn - '0';
-    }
-#endif
-
-    yynerrs = 0;
-    yyerrflag = 0;
-    yychar = (-1);
-
-    if (yyss == 0)
-    {
-        yyss = (short *) yymalloc (YYSTACKSIZE * sizeof (short));
-        if (yyss == 0)
-          goto yyabort;
-        yyvs = (YYSTYPE *) yymalloc (YYSTACKSIZE * sizeof (YYSTYPE));
-        if (yyvs == 0)
-        {
-            yyfree (yyss);
-            goto yyabort;
-        }
-        yystacksize = YYSTACKSIZE;
-    }
-    yysse = yyss + yystacksize - 1;
-    yyssp = yyss;
-    yyvsp = yyvs;
-    *yyssp = yystate = 0;
-    goto yyloop;
-
-yypush_lex:
-    yyval = yylval;
-    yystate = yytable[yyn];
-yypush:
-    if (yyssp >= yysse)
-    {
-        int depth = yyssp - yyss;
-        if (yygrow() != 0)
-             goto yyoverflow;
-        yysse = yyss + yystacksize -1;
-        yyssp = depth + yyss;
-        yyvsp = depth + yyvs;
-    }
-    *++yyssp = yystate;
-    *++yyvsp = yyval;
-
-yyloop:
-    if ((yyn = yydefred[yystate])) goto yyreduce;
-    yyn = yysindex[yystate];
-    if (yychar < 0)
-    {
-        if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
-        if (yydebug)
-        {
-            yys = 0;
-            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-            if (!yys) yys = "illegal-symbol";
-            printf("yydebug: state %d, reading %d (%s)\n", yystate,
-                    yychar, yys);
-        }
-#endif
-    }
-    if (yyn != 0
-        && ((yyn += yychar), ((unsigned)yyn <= (unsigned)YYTABLESIZE))
-        && yycheck[yyn] == yychar)
-    {
-#if YYDEBUG
-        if (yydebug)
-            printf("yydebug: state %d, shifting to state %d\n",
-                    yystate, yytable[yyn]);
-#endif
-        if (yyerrflag > 0)  --yyerrflag;
-        yychar = (-1);
-        goto yypush_lex;
-    }
-    yyn = yyrindex[yystate];
-    if (yyn != 0
-        && ((yyn += yychar), ((unsigned)yyn <= (unsigned)YYTABLESIZE))
-        && yycheck[yyn] == yychar)
-    {
-        yyn = yytable[yyn];
-        goto yyreduce;
-    }
-    if (yyerrflag) goto yyinrecovery;
-#ifdef lint
-    goto yynewerror;
-yynewerror:
-#endif
-    yyerror("syntax error");
-#ifdef lint
-    goto yyerrlab;
-yyerrlab:
-#endif
-    ++yynerrs;
-yyinrecovery:
-    if (yyerrflag < 3)
-    {
-        yyerrflag = 3;
-        for (;;)
-        {
-            yyn = yysindex[*yyssp];
-            if (yyn != 0
-                && ((yyn += YYERRCODE), ((unsigned)yyn <= 
(unsigned)YYTABLESIZE))
-                && yycheck[yyn] == YYERRCODE)
-            {
-#if YYDEBUG
-                if (yydebug)
-                    printf("yydebug: state %d, error recovery shifting\
- to state %d\n", *yyssp, yytable[yyn]);
-#endif
-                goto yypush_lex;
-            }
-            else
-            {
-#if YYDEBUG
-                if (yydebug)
-                    printf("yydebug: error recovery discarding state %d\n",
-                            *yyssp);
-#endif
-                if (yyssp <= yyss) goto yyabort;
-                --yyssp;
-                --yyvsp;
-            }
-        }
-    }
-    else
-    {
-        if (yychar == 0) goto yyabort;
-#if YYDEBUG
-        if (yydebug)
-        {
-            yys = 0;
-            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-            if (!yys) yys = "illegal-symbol";
-            printf("yydebug: state %d, error recovery discards token %d 
(%s)\n",
-                    yystate, yychar, yys);
-        }
-#endif
-        yychar = (-1);
-        goto yyloop;
-    }
-yyreduce:
-#if YYDEBUG
-    if (yydebug)
-        printf("yydebug: state %d, reducing by rule %d (%s)\n",
-                yystate, yyn, yyrule[yyn]);
-#endif
-    yym = yylen[yyn];
-    yyval = yyvsp[1-yym];
-    switch (yyn)
-    {
-case 1:
-#line 22 "lburg/gram.y"
-{ yylineno = 0; }
-break;
-case 2:
-#line 23 "lburg/gram.y"
-{ yylineno = 0; }
-break;
-case 6:
-#line 31 "lburg/gram.y"
-{
-               if (nonterm(yyvsp[-1].string)->number != 1)
-                       yyerror("redeclaration of the start symbol\n");
-               }
-break;
-case 8:
-#line 36 "lburg/gram.y"
-{ yyerrok; }
-break;
-case 10:
-#line 40 "lburg/gram.y"
-{ term(yyvsp[-2].string, yyvsp[0].n); }
-break;
-case 12:
-#line 44 "lburg/gram.y"
-{ rule(yyvsp[-5].string, yyvsp[-3].tree, yyvsp[-2].string, yyvsp[-1].string); }
-break;
-case 14:
-#line 46 "lburg/gram.y"
-{ yyerrok; }
-break;
-case 15:
-#line 49 "lburg/gram.y"
-{ nonterm(yyval.string = yyvsp[0].string); }
-break;
-case 16:
-#line 52 "lburg/gram.y"
-{ yyval.tree = tree(yyvsp[0].string,  0,  0); }
-break;
-case 17:
-#line 53 "lburg/gram.y"
-{ yyval.tree = tree(yyvsp[-3].string, yyvsp[-1].tree,  0); }
-break;
-case 18:
-#line 54 "lburg/gram.y"
-{ yyval.tree = tree(yyvsp[-5].string, yyvsp[-3].tree, yyvsp[-1].tree); }
-break;
-case 19:
-#line 57 "lburg/gram.y"
-{ if (*yyvsp[0].string == 0) yyval.string = "0"; }
-break;
-#line 630 "y.tab.c"
-    }
-    yyssp -= yym;
-    yyvsp -= yym;
-    yym = yylhs[yyn];
-    yystate = *yyssp;
-    if (yystate == 0 && yym == 0)
-    {
-#if YYDEBUG
-        if (yydebug)
-            printf("yydebug: after reduction, shifting from state 0 to\
- state %d\n", YYFINAL);
-#endif
-        yystate = YYFINAL;
-        *++yyssp = YYFINAL;
-        *++yyvsp = yyval;
-        if (yychar < 0)
-        {
-            if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
-            if (yydebug)
-            {
-                yys = 0;
-                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-                if (!yys) yys = "illegal-symbol";
-                printf("yydebug: state %d, reading %d (%s)\n",
-                        YYFINAL, yychar, yys);
-            }
-#endif
-        }
-        if (yychar == 0) goto yyaccept;
-        goto yyloop;
-    }
-    yyn = yygindex[yym];
-        if (yyn != 0
-        && ((yyn += yystate), ((unsigned)yyn <= (unsigned)YYTABLESIZE))
-        && yycheck[yyn] == yystate)
-        yystate = yytable[yyn];
-    else
-        yystate = yydgoto[yym];
-#if YYDEBUG
-    if (yydebug)
-        printf("yydebug: after reduction, shifting from state %d \
-to state %d\n", *yyssp, yystate);
-#endif
-    goto yypush;
-yyoverflow:
-    yyerror("yacc stack overflow");
-yyabort:
-    return (1);
-yyaccept:
-    return (0);
-}
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..ecbc0f3
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,9 @@
+Quake3 is a 3D engine and can be used for a number of games, especially
+now that people are porting in new models. A data installer should
+reflect this. However, this is still work in progress. Until then,
+you can use the quake3-data package from:
+
+http://scorpius.homelinux.org/~marc/debian/
+
+This will provide a nice automated way to install either the data from
+the CD-Rom or the dhareware package.
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..640c14c
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,63 @@
+quake3 (1.33+svn530-1) unstable; urgency=low
+
+  * further feedback Moritz, cleanup of copies, fix of q3a to ioquake3
+  * Added preinst menu message
+  * synced to SVN release 530 and changed naming: svn releases instead of
+    timestamps.
+  * Debian-Games maintenance
+  * Close ITP Closes:#337937
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Sat, 28 Jan 2006 01:02:56 +0100
+
+quake3 (1.33-svn20051231-2) unstable; urgency=low
+
+  * after discussion, default pure back enabled
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Tue,  3 Jan 2006 19:44:49 +0100
+
+quake3 (1.33-svn20051231-1) unstable; urgency=low
+
+  * new sync with icculus SVN
+  * build depend on libopenal-dev
+  * new documentation files in upstream
+  * adjusted to renamed upstream scripts and binaries (ioquake3.sh,
+    quake3.i386)
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Sat, 31 Dec 2005 14:19:38 +0100
+
+quake3 (1.33-svn20051104-5) unstable; urgency=low
+
+  * added q3ded and q3a manpage
+  * noname changed to GNU/Debian Server
+  * pure server default disabled
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Fri, 30 Dec 2005 19:48:22 +0100
+
+quake3 (1.33-svn20051104-4) unstable; urgency=low
+
+  * depend on quake3-data
+  * resolve authorize.quake3arena.com to localhost
+  * install in /usr/lib, since quake3 binaries and libs are platform
+    dependent.
+  * add wrapper script for q3ded
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Sun,  6 Nov 2005 20:22:58 +0100
+
+quake3 (1.33-svn20051104-3) unstable; urgency=low
+
+  * The new and proper release
+  * added credit to Jamie Wilkinson for the quake2 packages
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Sat,  5 Nov 2005 13:19:07 +0100
+
+quake3 (1.33-svn20051104-2) unstable; urgency=low
+
+  * checked build dependencies (libsdl1.2-dev)
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Sat,  5 Nov 2005 11:26:30 +0100
+
+quake3 (1.33-svn20051104-1) unstable; urgency=low
+
+  * Initial testing release based on the quake3-20051104 snapshot
+
+ -- Marc Leeman <marc.lee...@gmail.com>  Fri,  4 Nov 2005 19:49:28 +0100
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+4
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..ce7c930
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,18 @@
+Source: quake3
+Section: contrib/games
+Priority: optional
+Maintainer: Marc Leeman <marc.lee...@gmail.com>, Debian Games Team 
<pkg-games-de...@lists.alioth.debian.org>
+Build-Depends: debhelper (>> 4.0.0), libsdl1.2-dev, docbook-to-man, 
libopenal-dev
+Standards-Version: 3.6.2
+
+Package: quake3
+Architecture: any
+Depends: ${shlibs:Depends}, debconf (>= 0.5.00)
+Suggests: xqf, qstat
+Description: improved version of id Software's Quake III engine
+ Quake III is a 3D action game engine in first-person perspective, commonly
+ known as a ``first person shooter''.
+ .
+ This package contains no data files.  You will need to either install the
+ commercial data from the Quake III CD-ROM with the ``quake3-data'' package,
+ or install some free data files.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..16a9be0
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,27 @@
+This package was debianized by Marc Leeman <marc.lee...@gmail.com> on
+Fri, 04 Nov 2005 20:01:00 +0100
+
+It was downloaded from 
+
+Upstream Authors: Icculus svn://svn.icculus.org/quake3/trunk quake3
+
+Tnx to Jamie Wilkinson <j...@debian.org> for the base packaging for quake2
+on which I based these packages.
+
+Copyright: 2005, 2006
+
+   This package 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; version 2 dated June, 1991.
+
+   This package 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 package; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 0000000..b1d6703
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1,4 @@
+usr/share/pixmaps
+usr/lib/games/quake3/baseq3
+usr/games
+usr/share/applications
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..d03c805
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,4 @@
+BUGS
+id-readme.txt
+README
+TODO
diff --git a/debian/ioq3ded b/debian/ioq3ded
new file mode 100644
index 0000000..270deef
--- /dev/null
+++ b/debian/ioq3ded
@@ -0,0 +1,10 @@
+#!/bin/sh
+cd "/usr/lib/games/quake3/"
+
+arch=`uname -m`
+case "$arch" in
+i?86) arch=i386 ;;
+esac
+
+./ioq3ded.$arch $*
+exit $?
diff --git a/debian/ioq3ded.sgml b/debian/ioq3ded.sgml
new file mode 100644
index 0000000..0dd65a3
--- /dev/null
+++ b/debian/ioq3ded.sgml
@@ -0,0 +1,376 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+  <!ENTITY dhfirstname "<firstname>Marc</firstname>">
+  <!ENTITY dhsurname   "<surname>Leeman</surname>">
+  <!ENTITY dhdate      "<date>Fri Dec 30 19:47:26 CET 2005</date>">
+  <!ENTITY dhsection   "<manvolnum>6</manvolnum>">
+  <!ENTITY dhemail     "<email>marc.lee...@gmail.com</email>">
+  <!ENTITY dhusername  "Marc Leeman">
+  <!ENTITY dhucpackage "<refentrytitle>ioq3ded</refentrytitle>">
+  <!ENTITY dhpackage   "ioq3ded">
+
+  <!ENTITY debian      "<productname>Debian</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+  <refentryinfo>
+    <address>
+      &dhemail;
+    </address>
+    <author>
+      &dhfirstname;
+      &dhsurname;
+    </author>
+    <copyright>
+      <year>2003</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    &dhdate;
+  </refentryinfo>
+  <refmeta>
+    &dhucpackage;
+
+    &dhsection;
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+
+    <refpurpose>Quake III Arena dedicated server</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+
+      <arg><option>+set <replaceable>option</replaceable> 
<replaceable>value</replaceable></option></arg>
+
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1>
+    <title>DESCRIPTION</title>
+
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and <command>ioquake3</command>
+      programs.</para>
+
+    <para>This manual page was written for the &debian; distribution
+      because the original program does not have a manual page.</para>
+
+    <para><command>&dhpackage;</command> launches the dedicated server for the 
First Person Shooter Quake III Arena.</para>
+    <para><command>ioquake3</command> launches the client for the Quake III 
Arena game.</para>
+    <para><command>ioquake3</command> or <command>&dhpackage;</command> can be 
used to start a server, but <command>&dhpackage;</command> does not require X11 
or GL. <command>&dhpackage;</command> will start in dedicated mode.</para>
+
+  </refsect1>
+  <refsect1>
+    <title>OPTIONS</title>
+    <para>Command line options must be set on the command line and will not 
work if executed in a config file.</para>
+    <variablelist>
+      <varlistentry>
+        <term><option>+set com_hunkmegs <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+          <para>allocates a certain amount of memory for map and item loading. 
 The default of 56 is required for the client but is overkill for a dedicated 
server, and thus wasting precious server memory.  For general use free for all, 
tournament maps, and team deathmatch, a com_hunkmegs setting of 16 is 
sufficient.  Using the included tournament maps only, a com_hunkmegs setting of 
12 may be used to conserve more memory.  Capture The Flag requires a minimum 
com_hunkmegs setting of 26 w [...]
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>+set net_ip <replaceable>ip 
address</replaceable></option>
+        </term>
+        <listitem>
+          <para>If you are on a multi-homed server and the default IP is not 
what you want to use for your Quake III Arena server, the net_ip command will 
need to be used.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>+set net_port <replaceable>port</replaceable></option>
+        </term>
+        <listitem>
+          <para>Changing the default server port requires the net_port command 
be run on the command line.  It is useful for running multiple servers on the 
same computer or making the server somewhat more private.  The default port is 
27960 and is incremented automatically by 1 if another server is started 
without a specified port.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>+exec <replaceable>config.cfg</replaceable></option>
+        </term>
+        <listitem>
+          <para>
+         To simplify setting up a dedicated server, a several server 
configurations file have been created for different game types.  You can modify 
each configuration file to your liking if the default settings are not 
sufficient.  If you wish, you may run these config files from the console, 
assuming com_hunkmegs is sufficient for each game type.  
+         </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  
+  <refsect1>
+    <title>SERVER ONLY OPTIONS</title>
+    <para>Server settings are only used only on the server and may be used at 
the console or command line.  Command line usage requires a <option>+set 
</option> before each command; for usage in a configuration file, this is not 
needed.</para>
+
+    <variablelist>
+      <varlistentry>
+        <term><option>sv_maxclients <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the maximum amount of clients that can connect to the server.  The 
default setting is 8.  Setting should be increased for large free for all, team 
deathmatch, or CTF maps.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>sv_privatePassword 
<replaceable>password</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets a password on the server so only clients that know the password 
can connect to the server.  Clients use the \password command.  The default is 
for no password required.  Set to "" for no password.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>sv_hostname 
<replaceable>servername</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the server name that will show up in the master server list.  The 
name must be enclosed in quotes if a space is in the name.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>sv_master1 
<replaceable>master.domain.com</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the primary master server to which your server reports.  The 
default is master3.idsoftware.com and it is not recommended that this be 
changed.  Additional master servers can be added with the sv_master2 through 5 
command.  The maximum number of masters that can be reported to is 5.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>v_maxRate <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the maximum allowable rate a client may have set when connected to 
the server.  The default is 0, which is no limit.  A suggested setting is 8000 
or 10000 so server bandwidth is not used up by high speed clients, thus 
allowing modem players to have a smoother game.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>sv_pure <replaceable>N</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       controls crc/zip check of client pk3 files to make sure the pk3 file 
has not been modified for cheating or other purposes.  Client pk3 files must 
match that of the server to connect.  The default is set to 1, or on. Set to 0 
to turn off the check.
+       </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  
+  <refsect1>
+    <title>SERVER CONSOLE COMMANDS</title>
+    <para>
+    Server console commands are used from the server console or the remote 
console.
+    </para>
+
+    <variablelist>
+      <varlistentry>
+        <term><option>status</option>
+        </term>
+        <listitem>
+       <para>
+       shows the client number (num), score, ping, player name (name), client 
IP address (address), and port connected through (qport).  Client number is 
used in conjunction with the kick command.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>kick <replaceable>player</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       removes a player from the server. Particularly useful for removing 
disruptive players.  To kick a player, first find the number (num) associated 
with the player name via the <command>status</command> command.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>capturelimit <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the number of flag captures that must be reached before the level 
ends and the next level starts in CTF.  Setting capturelimit only has an effect 
if the server is in CTF mode.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>fraglimit <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the amount of frags that much be reached before the level ends and 
the next level starts.  Setting fraglimit to 0 results in no fraglimit.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>timelimit <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the number of minutes that must be reached before the level ends 
and the next level starts.  Setting timelimit to 0 results in no timelimit.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>rconpassword <replaceable>password</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets remote console password so clients may change server settings 
without direct access to the server console.  The default is set to none.  
Client can control the server by entering commands on the console with the 
format of <command>rconpassword</command> <replaceable>mypass</replaceable> and 
then adding server commands after the <command>rcon</command> command.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>killserver</option>
+        </term>
+        <listitem>
+       <para>
+       will stop all server services from running but leaves the Quake III 
Arena executable running on the server.
+       </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>GAME COMMANDS</title>
+    <para>
+    Generally, all game commands must be entered after the level loads either 
in the config file or on the command line/console.  Exceptions include the 
<option>g_gametype</option> and <option>g_motd</option> command.  The following 
are the most useful game commands for a dedicated server.
+    </para>
+
+    <variablelist>
+      <varlistentry>
+        <term><option>g_warmup  <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the amount of time in seconds that players may practice before the 
actual tournament match starts.  The default is 20 seconds.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_friendlyFire <replaceable>N</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       determines if players can damage their own teammates.  Set to 1 to 
allow players to damage their own teammates.  Set to 0 so players can not 
damage their own teammates.  Setting has no effect for free-for-all or 
tournament modes.  A setting of 1 is suggested for team deathmatch, while a 
setting of 0 is suggested for Capture The Flag.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_gametype <replaceable>N</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       controls the type of gameplay (free for all, tournament, team 
deathmatch, CTF). 0: Free For All, 1: Tournament, 2: Single Player Free For 
All, 3: Team Deathmatch, 4: Capture The Flag, 5: One Flag, 6: Overload and 7: 
Harverster (modes 5-7 are only available with the Quake III Team Arena 
expension pak installed).
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_motd <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the message that clients will see when they first connect to your 
server.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_log <replaceable>file.log</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sets the name of the server log file.  The default is games.log and 
does not need to be modified unless running multiple dedicated servers on the 
same computer.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_quadfactor <replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       sed to set multiples of damage caused by the quad damage powerup.  The 
default is 3 times damage, with 1 being equal to no quad damage powerup.  
Decimals may be used (e.g. 0.25).
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_syncronousclients 
<replaceable>NN</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       syncs all clients up to allow demo recording. The default is the more 
desired 0 which allows smoother net play.  Set to 1 to allow client demo 
recording.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_weaponsrespawn <replaceable>N</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       used to set the number of seconds between the time a weapon is picked 
up and the time it respawns.  The default is 5 seconds in free for all and 
should only be modified if a free for all server has a large number of players 
on it, in which case lower it slightly.  It is not recommend that it be set to 
0 or modified for other game types.
+       </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>g_allowvote <replaceable>N</replaceable></option>
+        </term>
+        <listitem>
+       <para>
+       enable players connected to the server to call for and vote on changes 
including: map, map restart, kick, and g_gametype.  The default is 1, which is 
on.  Set to 0 to turn off voting.
+       </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>EXAMPLES</title>
+
+    <para>To start a server that does not report to the master server, use the 
command line below. This is also the default for the dedicated server 
binary.</para>
+    <para><command>ioquake3 +set dedicated 1</command></param>
+
+    <para>To start a server (either binary) that notifies the master server of 
its presence, please use the following command line:</para>
+    <para><command>ioquake3 +set dedicated 2</command></para>
+
+    <para>Start a dedicated server and read further options from a 
configuration file.</para>
+    <para><command>ioq3ded +set com_hunkmegs 16 +exec 
ffa.config</command></para>
+
+  </refsect1>
+  
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &dhemail; for
+      the &debian; system (but may be used by others).  Permission is
+      granted to copy, distribute and/or modify this document under
+      the terms of the &gnu; General Public License, Version 2 any 
+         later version published by the Free Software Foundation.
+    </para>
+       <para>
+         On Debian systems, the complete text of the GNU General Public
+         License can be found in /usr/share/common-licenses/GPL.
+       </para>
+
+  </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/debian/ioquake3 b/debian/ioquake3
new file mode 100644
index 0000000..bd5f121
--- /dev/null
+++ b/debian/ioquake3
@@ -0,0 +1,10 @@
+#!/bin/sh
+cd "/usr/lib/games/quake3/"
+
+arch=`uname -m`
+case "$arch" in
+i?86) arch=i386 ;;
+esac
+
+./ioquake3.$arch $*
+exit $?
diff --git a/debian/ioquake3.desktop b/debian/ioquake3.desktop
new file mode 100644
index 0000000..08e7647
--- /dev/null
+++ b/debian/ioquake3.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=q3a
+Comment=Quake III Arena (GPL)
+Exec=/usr/games/q3a
+Terminal=false
+Icon=/usr/share/pixmaps/quake3.xpm
+Type=Application
+Categories=Application;Game;
diff --git a/debian/ioquake3.sgml b/debian/ioquake3.sgml
new file mode 100644
index 0000000..fc36eca
--- /dev/null
+++ b/debian/ioquake3.sgml
@@ -0,0 +1,101 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+  <!ENTITY dhfirstname "<firstname>Marc</firstname>">
+  <!ENTITY dhsurname   "<surname>Leeman</surname>">
+  <!ENTITY dhdate      "<date>Fri Dec 30 19:47:26 CET 2005</date>">
+  <!ENTITY dhsection   "<manvolnum>6</manvolnum>">
+  <!ENTITY dhemail     "<email>marc.lee...@gmail.com</email>">
+  <!ENTITY dhusername  "Marc Leeman">
+  <!ENTITY dhucpackage "<refentrytitle>ioquake3</refentrytitle>">
+  <!ENTITY dhpackage   "ioquake3">
+
+  <!ENTITY debian      "<productname>Debian</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+  <refentryinfo>
+    <address>
+      &dhemail;
+    </address>
+    <author>
+      &dhfirstname;
+      &dhsurname;
+    </author>
+    <copyright>
+      <year>2003</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    &dhdate;
+  </refentryinfo>
+  <refmeta>
+    &dhucpackage;
+
+    &dhsection;
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+
+    <refpurpose>Quake III Arena</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+
+      <arg><option>+set <replaceable>option</replaceable> 
<replaceable>value</replaceable></option></arg>
+
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1>
+    <title>DESCRIPTION</title>
+
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and program.</para>
+
+    <para>This manual page was written for the &debian; distribution
+      because the original program does not have a manual page.</para>
+
+    <para><command>ioquake3</command> launches the client for the Quake III 
Arena game.</para>
+
+  </refsect1>
+  <refsect1>
+    <title>OPTIONS</title>
+    <para>See man ioq3ded (6) for a full description of the the options.</para>
+  </refsect1>
+  
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &dhemail; for
+      the &debian; system (but may be used by others).  Permission is
+      granted to copy, distribute and/or modify this document under
+      the terms of the &gnu; General Public License, Version 2 any 
+         later version published by the Free Software Foundation.
+    </para>
+       <para>
+         On Debian systems, the complete text of the GNU General Public
+         License can be found in /usr/share/common-licenses/GPL.
+       </para>
+
+  </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/debian/ioquake3ta.desktop b/debian/ioquake3ta.desktop
new file mode 100644
index 0000000..e5160df
--- /dev/null
+++ b/debian/ioquake3ta.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=q3ta
+Comment=Quake III Team Arena (GPL)
+Exec=/usr/games/ioquake3 +set fs_game missionpack
+Terminal=false
+Icon=/usr/share/pixmaps/ioquake3ta.xpm
+Type=Application
+Categories=Application;Game;
diff --git a/debian/ioquake3ta.xpm b/debian/ioquake3ta.xpm
new file mode 100644
index 0000000..d509f61
--- /dev/null
+++ b/debian/ioquake3ta.xpm
@@ -0,0 +1,254 @@
+/* XPM */
+static char *q3ta[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 216 2",
+"   c black",
+".  c #040404",
+"X  c #0D0202",
+"o  c #090A09",
+"O  c #0D100D",
+"+  c #160606",
+"@  c #1B100E",
+"#  c #131614",
+"$  c #161212",
+"%  c #1B1B18",
+"&  c #1F201D",
+"*  c #1B2222",
+"=  c #260302",
+"-  c #220A0A",
+";  c #2B110E",
+":  c #281515",
+">  c #320100",
+",  c #320908",
+"<  c #320E0B",
+"1  c #3B0301",
+"2  c #3F0705",
+"3  c #371616",
+"4  c #391110",
+"5  c #3D191A",
+"6  c #311E20",
+"7  c #2C2420",
+"8  c #292A26",
+"9  c #2C2F2C",
+"0  c #2F2B34",
+"q  c #352B26",
+"w  c #392F36",
+"e  c #38302B",
+"r  c #333533",
+"t  c #303038",
+"y  c #373A36",
+"u  c #38333E",
+"i  c #3F3A36",
+"p  c #383C3A",
+"a  c #3F3D3A",
+"s  c #3E4644",
+"d  c #440502",
+"f  c #460806",
+"g  c #4B0400",
+"h  c #421312",
+"j  c #411F1E",
+"k  c #441A18",
+"l  c #4B1413",
+"z  c #4E1817",
+"x  c #4D1C1B",
+"c  c #550400",
+"v  c #540A05",
+"b  c #500B08",
+"n  c #5B0603",
+"m  c #5E0A05",
+"M  c #59130E",
+"N  c #541412",
+"B  c #541817",
+"V  c #5A1312",
+"C  c #5B1915",
+"Z  c #5E1E1B",
+"A  c #4A2322",
+"S  c #4D2C2F",
+"D  c #42312C",
+"F  c #413631",
+"G  c #4A3C36",
+"H  c #562120",
+"J  c #552726",
+"K  c #5B302C",
+"L  c #553638",
+"P  c #650602",
+"I  c #660902",
+"U  c #640A06",
+"Y  c #670D03",
+"T  c #6A0902",
+"R  c #6A0905",
+"E  c #6A0C06",
+"W  c #6E0A02",
+"Q  c #6E0A05",
+"!  c #6E0D07",
+"~  c #6A110D",
+"^  c #621512",
+"/  c #601717",
+"(  c #631916",
+")  c #621E1B",
+"_  c #6B1512",
+"`  c #6D1A16",
+"'  c #6A1D1B",
+"]  c #700600",
+"[  c #720B05",
+"{  c #740800",
+"}  c #760903",
+"|  c #7A0B05",
+" . c #7E0A04",
+".. c #751106",
+"X. c #73130E",
+"o. c #76100A",
+"O. c #7C140D",
+"+. c #7E1711",
+"@. c #791815",
+"#. c #7E1F1C",
+"$. c #70201E",
+"%. c #672726",
+"&. c #642E2D",
+"*. c #673937",
+"=. c #6B3031",
+"-. c #762723",
+";. c #7C3534",
+":. c #40423C",
+">. c #4C403D",
+",. c #534038",
+"<. c #57453E",
+"1. c #63473E",
+"2. c #414241",
+"3. c #444948",
+"4. c #4C4644",
+"5. c #4A4C45",
+"6. c #4C4D4B",
+"7. c #4B514D",
+"8. c #4D5456",
+"9. c #5B4942",
+"0. c #554B55",
+"q. c #52514B",
+"w. c #525551",
+"e. c #535A59",
+"r. c #5F5151",
+"t. c #585D5C",
+"y. c #5E6263",
+"u. c #60444E",
+"i. c #664B45",
+"p. c #69544B",
+"a. c #605B55",
+"s. c #68595A",
+"d. c #774C49",
+"f. c #715C52",
+"g. c #795951",
+"h. c #66596A",
+"j. c #7B6158",
+"k. c #666B69",
+"l. c #686560",
+"z. c #646A7A",
+"x. c #6D706C",
+"c. c #6B7579",
+"v. c #746B64",
+"b. c #786E71",
+"n. c #76756A",
+"m. c #757A78",
+"M. c #707E8B",
+"N. c #7C8280",
+"B. c #79858E",
+"V. c #850E07",
+"C. c #8C0F05",
+"Z. c #82130C",
+"A. c #85170F",
+"S. c #8C130B",
+"D. c #8D180F",
+"F. c #8D1E17",
+"G. c #9C0D06",
+"H. c #94130A",
+"J. c #971608",
+"K. c #9A150B",
+"L. c #951910",
+"P. c #961D15",
+"I. c #9E1B12",
+"U. c #91241B",
+"Y. c #8B2E25",
+"T. c #81302C",
+"R. c #A8180C",
+"E. c #A61E16",
+"W. c #B7170B",
+"Q. c #AE2214",
+"!. c #BA2112",
+"~. c #A83021",
+"^. c #8D4A4A",
+"/. c #81685D",
+"(. c #886D62",
+"). c #8F6F65",
+"_. c #8A736A",
+"`. c #8C7D7B",
+"'. c #957669",
+"]. c #A85854",
+"[. c #AC766D",
+"{. c #CC180A",
+"}. c #CD2515",
+"|. c #F01004",
+" X c #E86260",
+".X c #998277",
+"XX c #AA8879",
+"oX c #B68F7F",
+"OX c #888885",
+"+X c #828F91",
+"@X c #8D908E",
+"#X c #82939D",
+"$X c #9D948C",
+"%X c #979995",
+"&X c #8C9BA5",
+"*X c #9DA09D",
+"=X c #8DA4B6",
+"-X c #9FADB5",
+";X c #A9A49D",
+":X c #A6AAA5",
+">X c #A4B4BB",
+",X c #AFB2B0",
+"<X c #ABBCC6",
+"1X c #BCC2C0",
+"2X c #B5CAD9",
+"3X c #C49B8B",
+"4X c #D1A999",
+"5X c #D0B0A5",
+"6X c #FC9E9D",
+"7X c #E7C4B5",
+"8X c #C3CED3",
+"9X c #C2E2F5",
+"0X c #D7E2E2",
+"qX c #FBD4CC",
+"wX c #FFE3D3",
+"eX c #F2F9F9",
+/* pixels */
+"@.@.x K ^.3X[.;.-.$._ ~ o.S.W.{.|.|.{.R.L.+._ ^ M M C =.`.6.m.1X",
+"@.+.( A S *.L %.-.$._ ~ o.J.{.|.|.|.{.W.L.+.` / V N B &.x.a m.*X",
+"+.A.S.^ j j &.-.$.' ` ~ o.K.{.|.|.|.{.W.P.@.` / V l z &.n.:.a.OX",
+"A.S.H.V #.P.~.#.) ' ` _ X.S.W.{.|.|.{.E.F.#.' / B l z K n.:.2.l.",
+"S.K.R.E. X6X XE.' ) ( _ X.Z.K.W.W.W.R.P.#.$.$.) B l x J /.N.w.m.",
+"G.G.R.I.5XeX5XU.@./ / ^ ~ X.Z.D.L.L.F.#.-.%.&.%.H z k A r.OX1X,X",
+"G.G.H.d.+X#X@Xj.#.( C C ^ ~ X.@.+.#.#.-.=.*.*.L S A 5 3 L t.:X%X",
+"C.G.@.N.<X0X+X+Xs.) B N V ^ ^ _ ` $.%.*.i.u.u.u.L S 5 - j t.t.6.",
+" .V.) e.m.>X3.8.8.J B N N N N V ( ' &.i.s.h.h.h.0.G 6 $ 3 4.& $ ",
+"} } B 7.r & s 8.i H B z z l l l B Z &.u.z.M.B.B.z.0.0 : D y.8 8 ",
+"I n H 7.o . % 7.>.N C l h h 4 h l z H L z.#X2X2X=Xz.w 6 5.& 8 a ",
+"n c L 8 o o @ 6.y.j M l h 4 4 4 4 h z J u.z.=X9X9Xz.u <.8 O :.w.",
+"n l r o $ 7 9.p.y.y.A x h 4 4 < < < 4 z A L 0.z.8.t s.4.O % 7.y.",
+"U >.& 7 D <.XXoX9.6.y.<.J k 4 < - - + - 3 5 j 5 5 s.6.% # % p x.",
+"L y % p.i.(.4X3Xj.G a.N.m.*.J x k 3 , = = - 4 S `.6.& & 8 8 r e.",
+"+Xr F oX'.XX4X3Xg.,.,.e q.N.m.b.l.L 1.i.i.r.`.*Xx.9 s a :.p 2.y.",
+"k.p e 4X3X3X'.f.q 7 q D <.G 4.v.+X+XB.v.$X;Xl.i 7 e.7.7.e.e.t.c.",
+"e.s & 3X4X7X5X/.<.,.F 9.f.p.<.G G i a q :.% & % 8 c.7.3.y.+XN.#X",
+"k.2.# /.4X7X7X3X).f.p.f.j.f./.f.p.,.F e 7 7 e q l.c.e.3.c.+X#XeX",
+"m.r # F 4X7XqXoXXXXX'._._.(._.'.f.f.p.f.p.i.<.>.&X+Xe.8.+XB.<X<X",
+"N.y & % XX7X7XXX[.[.).)._.(.(._./.i.i.j./.f.G l.-XN.2.k.&X&X<X&X",
+"c.y 9 & /.3Xp.p.g.1.,.,.<.i.i.f._./.p.p.j.i.G &X&X9 y B.#X<X>X-X",
+"m.9 & 8 >.)././.g.1.G F q q D ,./.(.f.i.p.9.a.<X&Xz.z.&X&X<X=Xc.",
+"y.8 # 9 y XX4X3XoXoX'.g.i.,.e 7 p.j.p.<.9.1.m.>X<X8X2X2X<X=X4.- ",
+"t.8 & 9 & [.4XXXXXXXXX[.).j.p.<.9.p.<.<.9.9.,.k.y.8.OX1X>X4.X = ",
+"7.9 # + P ].XX).(./.j.g.j./.(.f.9.9.<.9.9.,.G 9.3.* 8 <.3 X = > ",
+"o   = A.C.#./.j.j./.(.j.).'./.f.p.<.9.p.<.L ' O.%.; - = = > > c ",
+"  = F.S.] X.XX5X7X5X3X_._./.j.f.p.<.9.1.%.A.K.L.D.X.n d > > g } ",
+", F.Z.n P P [.wXqX7X5X4XXX_._.g.a.G *.U.R.!.I.D.o.n d 1 > E C.d ",
+"S.| T P T c ;.7X7X4X5X5X3X.X(.p.*.Y.Q.}.!.I.A.! n d 2 1 ! K.g > ",
+"[ T I I W E v j..X_..X$X(.y.i.Y.E.}.}.E.D.O.U v f 2 2 o.R.I > J.",
+"Y I P T Q ! m , ; - - ; B ;.Q.!.}.E.A.X.o.U v f f f O.!.m 1 ..}."
+};
diff --git a/debian/menu b/debian/menu
new file mode 100644
index 0000000..b3f02ce
--- /dev/null
+++ b/debian/menu
@@ -0,0 +1,13 @@
+?package(quake3): \
+  needs="X11" \
+  section="Games/Arcade" \
+  title="Quake III Arena" \
+  command="/usr/games/ioquake3" \
+  icon="/usr/share/pixmaps/quake3.xpm"
+
+?package(quake3): \
+  needs="X11" \
+  section="Games/Arcade" \
+  title="Quake III Team Arena" \
+  command="/usr/games/ioquake3 +set fs_game missionpack" \
+  icon="/usr/share/pixmaps/ioquake3ta.xpm"
diff --git a/debian/preinst b/debian/preinst
new file mode 100644
index 0000000..ad3d1da
--- /dev/null
+++ b/debian/preinst
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+. /usr/share/debconf/confmodule
+
+db_version 2.0
+db_set quake3/datafiles true
+db_input low quake3/datafiles || true
+db_go || true
+
+#DEBHELPER#
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..988e867
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,126 @@
+#!/usr/bin/make -f
+
+#export DH_VERBOSE=1
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -g
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+       INSTALL_PROGRAM += -s
+endif
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+#      ./configure \
+               --prefix=/usr \
+               --bindir=\$${prefix}/games \
+               --libdir=\$${prefix}/lib/games \
+               --datadir=\$${prefix}/share/games \
+               --mandir=\$${prefix}/share/man \
+               --infodir=\$${prefix}/share/info \
+               --disable-static
+       touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+       dh_testdir
+       $(MAKE)
+       /usr/bin/docbook-to-man debian/ioq3ded.sgml > ioq3ded.6
+       /usr/bin/docbook-to-man debian/ioquake3.sgml > ioquake3.6
+       touch build-stamp
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp ioq3ded.6 ioquake3.6
+       -$(MAKE) distclean
+       dh_clean
+
+install: DH_OPTIONS=
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k
+       dh_installdirs
+       $(MAKE) copyfiles COPYDIR=$(CURDIR)/debian/quake3/usr/lib/games/quake3/
+       install -p -m 644 code/unix/quake3.xpm 
$(CURDIR)/debian/quake3/usr/share/pixmaps/
+       install -p -m 755 debian/ioquake3 $(CURDIR)/debian/quake3/usr/games/
+       install -p -m 755 debian/ioq3ded $(CURDIR)/debian/quake3/usr/games/
+       # install -p -m 755 code/unix/setup/ioquake3.sh 
$(CURDIR)/debian/quake3/usr/lib/games/quake3/
+       install -p -m 644 debian/ioquake3.desktop 
$(CURDIR)/debian/quake3/usr/share/applications/
+       install -p -m 644 debian/ioquake3ta.xpm 
$(CURDIR)/debian/quake3/usr/share/pixmaps/
+       install -p -m 644 debian/ioquake3ta.desktop 
$(CURDIR)/debian/quake3/usr/share/applications/
+
+# Build architecture-independent files here.
+# Pass -i to all debhelper commands in this target to reduce clutter.
+binary-indep: build install
+       dh_testdir -i
+       dh_testroot -i
+       dh_installdebconf -i
+       dh_installdocs -i
+       dh_installexamples -i
+       dh_installmenu -i
+#      dh_installlogrotate -i
+#      dh_installemacsen -i
+#      dh_installpam -i
+#      dh_installmime -i
+#      dh_installinit -i
+       dh_installcron -i
+       dh_installinfo -i
+#      dh_undocumented -i
+       dh_installchangelogs ChangeLog -i
+       dh_link -i
+       dh_compress -i
+       dh_fixperms -i
+       dh_installdeb -i
+#      dh_perl -i
+       dh_gencontrol -i
+       dh_md5sums -i
+       dh_builddeb -i
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir -a
+       dh_testroot -a
+       dh_installdebconf -a
+       dh_installdocs -a
+       dh_installexamples -a
+       dh_installmenu -a
+#      dh_installlogrotate -a
+#      dh_installemacsen -a
+#      dh_installpam -a
+#      dh_installmime -a
+#      dh_installinit -a
+       dh_installcron -a
+#      dh_installman -a debian/quake3.6
+       dh_installman -a ioq3ded.6 ioquake3.6
+       dh_installinfo -a
+#      dh_undocumented -a
+       dh_installchangelogs ChangeLog -a
+       dh_strip -a
+       dh_link -a
+       dh_compress -a
+       dh_fixperms -a
+#      dh_makeshlibs -a
+       dh_installdeb -a
+#      dh_perl -a
+       dh_shlibdeps -a
+       dh_gencontrol -a
+       dh_md5sums -a
+       dh_builddeb -a
+
+#binary: binary-indep binary-arch
+binary: binary-arch
+
+.PHONY: build clean binary-indep binary-arch binary install 
diff --git a/debian/templates b/debian/templates
new file mode 100644
index 0000000..cf75110
--- /dev/null
+++ b/debian/templates
@@ -0,0 +1,23 @@
+Template: quake3/datafiles
+Type: note
+Description: Quake III Data Files
+ This package only provides the Quake III Engine (GPL) that is being
+ improved by volunteers. In order to play, you need some (currently)
+ non GPL data-files. Since they are non-free, they cannot be distributed
+ by GNU/Debian.
+ .
+ You can choose to manually copy the data files into the
+ right location or use the quake3-data package available from
+ .
+ http://scorpius.homelinux.org/~marc/debian/
+ .
+ This installer will give you the choice to play with the Demo files or
+ install from a Quake III Arena CD.  In any case, you will need to
+ install the point release in order to be able to play the game. Note
+ that the shareware version does not allow you to play on full servers
+ (or the other way around).
+ .
+ This package is not distributed in GNU/Debian because we are working on
+ a better, more general and more flexible solution instead of limiting
+ users to only Quake III Arena since this engine supports more Q3 based
+ games and (total) conversions.

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/game-data-packager.git

_______________________________________________
Pkg-games-commits mailing list
Pkg-games-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to