]> granicus.if.org Git - graphviz/commitdiff
Add build files and extra source files for windows
authorerg <devnull@localhost>
Thu, 20 Jan 2005 19:57:36 +0000 (19:57 +0000)
committererg <devnull@localhost>
Thu, 20 Jan 2005 19:57:36 +0000 (19:57 +0000)
windows/cmd/lefty/dot2l/dotparse.c [new file with mode: 0644]
windows/cmd/lefty/dot2l/dotparse.h [new file with mode: 0644]
windows/cmd/lefty/gfx/gfx.dsp [new file with mode: 0755]
windows/cmd/lefty/gfx/gfx.mak [new file with mode: 0755]
windows/cmd/lefty/lefty.dsp [new file with mode: 0644]
windows/cmd/lefty/lefty.mak [new file with mode: 0755]

diff --git a/windows/cmd/lefty/dot2l/dotparse.c b/windows/cmd/lefty/dot2l/dotparse.c
new file mode 100644 (file)
index 0000000..abdd78f
--- /dev/null
@@ -0,0 +1,1245 @@
+/* $Id$ $Revision$ */
+/* vim:set shiftwidth=4 ts=8: */
+
+/**********************************************************
+*      This software is part of the graphviz package      *
+*                http://www.graphviz.org/                 *
+*                                                         *
+*            Copyright (c) 1994-2004 AT&T Corp.           *
+*                and is licensed under the                *
+*            Common Public License, Version 1.0           *
+*                      by AT&T Corp.                      *
+*                                                         *
+*        Information and Software Systems Research        *
+*              AT&T Research, Florham Park NJ             *
+**********************************************************/
+
+
+/*  A Bison parser, made from dotparse.y
+    by GNU Bison version 1.28  */
+
+#define YYBISON 1              /* Identify Bison output.  */
+
+#define        T_graph 257
+#define        T_digraph       258
+#define        T_strict        259
+#define        T_node  260
+#define        T_edge  261
+#define        T_edgeop        262
+#define        T_id    263
+#define        T_subgraph      264
+
+#line 1 "dotparse.y"
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+typedef void *Tobj;
+
+#include "dot2l.h"
+
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#include <string.h>
+
+static char portstr[SMALLBUF];
+
+#line 19 "dotparse.y"
+typedef union {
+    long i;
+    char *s;
+    void *o;
+} YYSTYPE;
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define        YYFINAL         88
+#define        YYFLAG          -32768
+#define        YYNTBASE        22
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 264 ? yytranslate[x] : 56)
+
+static const char yytranslate[] = { 0,
+    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, 15,
+    17, 2, 2, 16, 2, 2, 2, 2, 2, 2,
+    2, 2, 2, 2, 2, 2, 2, 14, 13, 2,
+    21, 2, 2, 18, 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,
+    19, 2, 20, 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, 11, 2, 12, 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, 3, 4, 5, 6,
+    7, 8, 9, 10
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+    0, 1, 8, 10, 11, 13, 16, 18, 21, 23,
+    24, 26, 29, 31, 34, 36, 38, 40, 42, 43,
+    47, 50, 52, 53, 54, 60, 61, 62, 68, 71,
+    72, 77, 80, 81, 86, 87, 89, 91, 94, 97,
+    100, 107, 110, 111, 115, 117, 119, 121, 123, 125,
+    128, 129, 133, 137, 138, 142, 143, 145, 150, 151,
+    156, 158
+};
+
+static const short yyrhs[] = { -1,
+    24, 9, 23, 11, 25, 12, 0, 1, 0, 0,
+    3, 0, 5, 3, 0, 4, 0, 5, 4, 0,
+    26, 0, 0, 27, 0, 26, 27, 0, 28, 0,
+    28, 13, 0, 29, 0, 33, 0, 44, 0, 53,
+    0, 0, 31, 30, 47, 0, 32, 41, 0, 9,
+    0, 0, 0, 31, 34, 38, 35, 47, 0, 0,
+    0, 53, 36, 38, 37, 47, 0, 8, 31, 0,
+    0, 8, 31, 39, 38, 0, 8, 53, 0, 0,
+    8, 53, 40, 38, 0, 0, 42, 0, 43, 0,
+    43, 42, 0, 42, 43, 0, 14, 9, 0, 14,
+    15, 9, 16, 9, 17, 0, 18, 9, 0, 0,
+    46, 45, 49, 0, 51, 0, 3, 0, 6, 0,
+    7, 0, 48, 0, 48, 49, 0, 0, 19, 50,
+    20, 0, 51, 52, 50, 0, 0, 9, 21, 9,
+    0, 0, 16, 0, 55, 11, 25, 12, 0, 0,
+    11, 54, 25, 12, 0, 55, 0, 10, 9, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+    33, 35, 37, 39, 43, 45, 47, 49, 53, 54,
+    57, 58, 61, 62, 65, 66, 67, 68, 71, 72,
+    75, 79, 83, 86, 88, 89, 92, 94, 97, 99,
+    101, 101, 103, 105, 107, 108, 109, 110, 111, 114,
+    118, 127, 133, 136, 137, 141, 143, 145, 149, 152,
+    153, 156, 159, 160, 163, 167, 168, 171, 173, 173,
+    175, 179
+};
+#endif
+
+
+#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
+
+static const char *const yytname[] =
+    { "$", "error", "$undefined.", "T_graph",
+    "T_digraph", "T_strict", "T_node", "T_edge", "T_edgeop", "T_id",
+       "T_subgraph", "'{'",
+    "'}'", "';'", "':'", "'('", "','", "')'", "'@'", "'['", "']'", "'='",
+       "file", "@1", "graph_type",
+    "stmt_list", "stmt_list1", "stmt", "stmt1", "node_stmt", "@2",
+       "node_id", "node_name",
+    "edge_stmt", "@3", "@4", "@5", "@6", "edgeRHS", "@7", "@8",
+       "node_port", "port_location",
+    "port_angle", "attr_stmt", "@9", "attr_class", "opt_attr_list",
+       "rec_attr_list", "attr_list",
+    "inside_attr_list", "attr_set", "optcomma", "subg_stmt", "@10",
+       "subg_hdr", NULL
+};
+#endif
+
+static const short yyr1[] = { 0,
+    23, 22, 22, 22, 24, 24, 24, 24, 25, 25,
+    26, 26, 27, 27, 28, 28, 28, 28, 30, 29,
+    31, 32, 34, 35, 33, 36, 37, 33, 38, 39,
+    38, 38, 40, 38, 41, 41, 41, 41, 41, 42,
+    42, 43, 45, 44, 44, 46, 46, 46, 47, 48,
+    48, 49, 50, 50, 51, 52, 52, 53, 54, 53,
+    53, 55
+};
+
+static const short yyr2[] = { 0,
+    0, 6, 1, 0, 1, 2, 1, 2, 1, 0,
+    1, 2, 1, 2, 1, 1, 1, 1, 0, 3,
+    2, 1, 0, 0, 5, 0, 0, 5, 2, 0,
+    4, 2, 0, 4, 0, 1, 1, 2, 2, 2,
+    6, 2, 0, 3, 1, 1, 1, 1, 1, 2,
+    0, 3, 3, 0, 3, 0, 1, 4, 0, 4,
+    1, 2
+};
+
+static const short yydefact[] = { 0,
+    3, 5, 7, 0, 0, 6, 8, 1, 0, 10,
+    46, 47, 48, 22, 0, 59, 0, 9, 11, 13,
+    15, 19, 35, 16, 17, 43, 45, 18, 61, 0,
+    62, 10, 2, 12, 14, 51, 0, 0, 0, 21,
+    36, 37, 0, 0, 10, 55, 0, 20, 49, 0,
+    24, 40, 0, 42, 39, 38, 54, 44, 27, 0,
+    60, 50, 22, 29, 32, 51, 0, 0, 0, 56,
+    51, 58, 0, 0, 25, 0, 52, 57, 54, 28,
+    31, 34, 0, 53, 41, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 86,
+    9, 5, 17, 18, 19, 20, 21, 36, 22, 23,
+    24, 37, 66, 44, 71, 51, 73, 74, 40, 41,
+    42, 25, 43, 26, 48, 49, 58, 69, 27, 79,
+    28, 32, 29
+};
+
+static const short yypact[] = { 16,
+    -32768, -32768, -32768, 1, 3, -32768, -32768, -32768, 13, 0,
+    -32768, -32768, -32768, 4, 18, -32768, 23, 0, -32768, 15,
+    -32768, 26, 8, -32768, -32768, -32768, -32768, 28, 27, 30,
+    -32768, 0, -32768, -32768, -32768, -32768, 29, -1, 31, -32768,
+    24, 32, 25, 29, 0, -32768, 33, -32768, 25, 22,
+    -32768, -32768, 34, -32768, -32768, -32768, 38, -32768, -32768, 36,
+    -32768, -32768, -32768, 41, 42, -32768, 35, 4, 21, 37,
+    -32768, -32768, 29, 29, -32768, 43, -32768, -32768, 38, -32768,
+    -32768, -32768, 39, -32768, -32768, 54, 55, -32768
+};
+
+static const short yypgoto[] = { -32768,
+    -32768, -32768, -30, -32768, 40, -32768, -32768, -32768, 7, -32768,
+    -32768, -32768, -32768, -32768, -32768, -44, -32768, -32768, -32768,
+       17,
+    19, -32768, -32768, -32768, -53, -32768, 12, -17, -56, -32768,
+    14, -32768, -32768
+};
+
+
+#define        YYLAST          64
+
+
+static const short yytable[] = { 59,
+    70, 47, 11, 6, 7, 12, 13, 52, 14, 15,
+    16, 8, 75, 53, 60, -4, 1, 80, 2, 3,
+    4, 38, 70, 10, 30, 39, 31, 35, 81, 82,
+    63, 15, 16, -23, 33, -26, 50, 45, 46, 54,
+    77, 39, 67, 57, 61, 38, 68, 72, -30, -33,
+    76, 83, 78, 87, 88, 85, 64, 34, 56, 55,
+    62, 84, 0, 65
+};
+
+static const short yycheck[] = { 44,
+    57, 32, 3, 3, 4, 6, 7, 9, 9, 10,
+    11, 9, 66, 15, 45, 0, 1, 71, 3, 4,
+    5, 14, 79, 11, 21, 18, 9, 13, 73, 74,
+    9, 10, 11, 8, 12, 8, 8, 11, 9, 9,
+    20, 18, 9, 19, 12, 14, 9, 12, 8, 8,
+    16, 9, 16, 0, 0, 17, 50, 18, 42, 41,
+    49, 79, -1, 50
+};
+
+/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
+#line 3 "/usr/lib/bison.simple"
+/* This file comes from bison-1.28.  */
+
+/* Skeleton output parser for bison,
+   Copyright (C) 1984, 1989, 1990 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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, 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.  */
+
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
+
+#ifndef YYSTACK_USE_ALLOCA
+#ifdef alloca
+#define YYSTACK_USE_ALLOCA
+#else                          /* alloca not defined */
+#ifdef __GNUC__
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
+#else                          /* not GNU C.  */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
+#define YYSTACK_USE_ALLOCA
+#include <alloca.h>
+#else                          /* not sparc */
+/* We think this test detects Watcom and Microsoft C.  */
+/* This used to test MSDOS, but that is a bad idea
+   since that symbol is in the user namespace.  */
+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
+#if 0                          /* No need for malloc.h, which pollutes the namespace;
+                                  instead, just don't use alloca.  */
+#include <malloc.h>
+#endif
+#else                          /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+/* I don't know what this was needed for, but it pollutes the namespace.
+   So I turned it off.   rms, 2 May 1997.  */
+/* #include <malloc.h>  */
+#pragma alloca
+#define YYSTACK_USE_ALLOCA
+#else                          /* not MSDOS, or __TURBOC__, or _AIX */
+#if 0
+#ifdef __hpux                  /* haible@ilog.fr says this works for HPUX 9.05 and up,
+                                  and on HPUX 10.  Eventually we can turn this on.  */
+#define YYSTACK_USE_ALLOCA
+#define alloca __builtin_alloca
+#endif                         /* __hpux */
+#endif
+#endif                         /* not _AIX */
+#endif                         /* not MSDOS, or __TURBOC__ */
+#endif                         /* not sparc */
+#endif                         /* not GNU C */
+#endif                         /* alloca not defined */
+#endif                         /* YYSTACK_USE_ALLOCA not defined */
+
+#ifdef YYSTACK_USE_ALLOCA
+#define YYSTACK_ALLOC alloca
+#else
+#define YYSTACK_ALLOC malloc
+#endif
+
+/* Note: there must be only one dollar sign in this file.
+   It is replaced by the list of actions, each action
+   as one case of the switch.  */
+
+#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 yyerrlab1
+/* 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);                      \
+      yychar1 = YYTRANSLATE (yychar);                          \
+      YYPOPSTACK;                                              \
+      goto yybackup;                                           \
+    }                                                          \
+  else                                                         \
+    { yyerror ("syntax error: cannot back up"); YYERROR; }     \
+while (0)
+
+#define YYTERROR       1
+#define YYERRCODE      256
+
+#ifndef YYPURE
+#define YYLEX          yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#ifdef YYLEX_PARAM
+#define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
+#else
+#define YYLEX          yylex(&yylval, &yylloc)
+#endif
+#else                          /* not YYLSP_NEEDED */
+#ifdef YYLEX_PARAM
+#define YYLEX          yylex(&yylval, YYLEX_PARAM)
+#else
+#define YYLEX          yylex(&yylval)
+#endif
+#endif                         /* not YYLSP_NEEDED */
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar;                    /*  the lookahead symbol                */
+YYSTYPE yylval;                        /*  the semantic value of the           */
+                               /*  lookahead symbol                    */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc;                        /*  location data for the lookahead     */
+                               /*  symbol                              */
+#endif
+
+int yynerrs;                   /*  number of parse errors so far       */
+#endif                         /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug;                   /*  nonzero means print parse trace     */
+/* Since this is uninitialized, it does not stop multiple parsers
+   from coexisting.  */
+#endif
+
+/*  YYINITDEPTH indicates the initial size of the parser's stacks      */
+
+#ifndef        YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/*  YYMAXDEPTH is the maximum size the stacks can grow to
+    (effective only if the built-in stack extension method is used).  */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+\f
+/* Define __yy_memcpy.  Note that the size argument
+   should be passed with type unsigned int, because that is what the non-GCC
+   definitions require.  With GCC, __builtin_memcpy takes an arg
+   of type size_t, but it can handle unsigned int.  */
+
+#if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
+#define __yy_memcpy(TO,FROM,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
+#else                          /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void __yy_memcpy(to, from, count)
+char *to;
+char *from;
+unsigned int count;
+{
+    register char *f = from;
+    register char *t = to;
+    register int i = count;
+
+    while (i-- > 0)
+       *t++ = *f++;
+}
+
+#else                          /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+   in available built-in functions on various systems.  */
+static void __yy_memcpy(char *to, char *from, unsigned int count)
+{
+    register char *t = to;
+    register char *f = from;
+    register int i = count;
+
+    while (i-- > 0)
+       *t++ = *f++;
+}
+
+#endif
+#endif
+\f
+#line 217 "/usr/lib/bison.simple"
+
+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
+   into yyparse.  The argument should have type void *.
+   It should actually point to an object.
+   Grammar actions can access the variable by casting it
+   to the proper pointer type.  */
+
+#ifdef YYPARSE_PARAM
+#ifdef __cplusplus
+#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#else                          /* not __cplusplus */
+#define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+#endif                         /* not __cplusplus */
+#else                          /* not YYPARSE_PARAM */
+#define YYPARSE_PARAM_ARG
+#define YYPARSE_PARAM_DECL
+#endif                         /* not YYPARSE_PARAM */
+
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+#ifdef YYPARSE_PARAM
+int yyparse(void *);
+#else
+int yyparse(void);
+#endif
+#endif
+
+int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL
+{
+    register int yystate;
+    register int yyn;
+    register short *yyssp;
+    register YYSTYPE *yyvsp;
+    int yyerrstatus;           /*  number of tokens to shift before error messages enabled */
+    int yychar1 = 0;           /*  lookahead token as an internal (translated) token number */
+
+    short yyssa[YYINITDEPTH];  /*  the state stack                     */
+    YYSTYPE yyvsa[YYINITDEPTH];        /*  the semantic value stack            */
+
+    short *yyss = yyssa;       /*  refer to the stacks thru separate pointers */
+    YYSTYPE *yyvs = yyvsa;     /*  to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+    YYLTYPE yylsa[YYINITDEPTH];        /*  the location stack                  */
+    YYLTYPE *yyls = yylsa;
+    YYLTYPE *yylsp;
+
+#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK   (yyvsp--, yyssp--)
+#endif
+
+    int yystacksize = YYINITDEPTH;
+    int yyfree_stacks = 0;
+
+#ifdef YYPURE
+    int yychar;
+    YYSTYPE yylval;
+    int yynerrs;
+#ifdef YYLSP_NEEDED
+    YYLTYPE yylloc;
+#endif
+#endif
+
+    YYSTYPE yyval;             /*  the variable used to return         */
+    /*  semantic values from the action     */
+    /*  routines                            */
+
+    int yylen;
+
+#if YYDEBUG != 0
+    if (yydebug)
+       fprintf(stderr, "Starting parse\n");
+#endif
+
+    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 - 1;
+    yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+    yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in  yystate  .  */
+/* In all cases, when you get here, the value and location stacks
+   have just been pushed. so pushing a state here evens the stacks.  */
+  yynewstate:
+
+    *++yyssp = yystate;
+
+    if (yyssp >= yyss + yystacksize - 1) {
+       /* 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 *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+       YYLTYPE *yyls1 = yyls;
+#endif
+
+       /* Get the current used size of the three stacks, in elements.  */
+       int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+       /* Each stack pointer address is followed by the size of
+          the data in use in that stack, in bytes.  */
+#ifdef YYLSP_NEEDED
+       /* This used to be a conditional around just the two extra args,
+          but that might be undefined if yyoverflow is a macro.  */
+       yyoverflow("parser stack overflow",
+                  &yyss1, size * sizeof(*yyssp),
+                  &yyvs1, size * sizeof(*yyvsp),
+                  &yyls1, size * sizeof(*yylsp), &yystacksize);
+#else
+       yyoverflow("parser stack overflow",
+                  &yyss1, size * sizeof(*yyssp),
+                  &yyvs1, size * sizeof(*yyvsp), &yystacksize);
+#endif
+
+       yyss = yyss1;
+       yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+       yyls = yyls1;
+#endif
+#else                          /* no yyoverflow */
+       /* Extend the stack our own way.  */
+       if (yystacksize >= YYMAXDEPTH) {
+           yyerror("parser stack overflow");
+           if (yyfree_stacks) {
+               free(yyss);
+               free(yyvs);
+#ifdef YYLSP_NEEDED
+               free(yyls);
+#endif
+           }
+           return 2;
+       }
+       yystacksize *= 2;
+       if (yystacksize > YYMAXDEPTH)
+           yystacksize = YYMAXDEPTH;
+#ifndef YYSTACK_USE_ALLOCA
+       yyfree_stacks = 1;
+#endif
+       yyss = (short *) YYSTACK_ALLOC(yystacksize * sizeof(*yyssp));
+       __yy_memcpy((char *) yyss, (char *) yyss1,
+                   size * (unsigned int) sizeof(*yyssp));
+       yyvs = (YYSTYPE *) YYSTACK_ALLOC(yystacksize * sizeof(*yyvsp));
+       __yy_memcpy((char *) yyvs, (char *) yyvs1,
+                   size * (unsigned int) sizeof(*yyvsp));
+#ifdef YYLSP_NEEDED
+       yyls = (YYLTYPE *) YYSTACK_ALLOC(yystacksize * sizeof(*yylsp));
+       __yy_memcpy((char *) yyls, (char *) yyls1,
+                   size * (unsigned int) sizeof(*yylsp));
+#endif
+#endif                         /* no yyoverflow */
+
+       yyssp = yyss + size - 1;
+       yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+       yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+       if (yydebug)
+           fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+       if (yyssp >= yyss + yystacksize - 1)
+           YYABORT;
+    }
+#if YYDEBUG != 0
+    if (yydebug)
+       fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+    goto yybackup;
+  yybackup:
+
+/* Do appropriate processing given the current state.  */
+/* Read a lookahead token if we need one and don't already have one.  */
+/* yyresume: */
+
+    /* First try to decide what to do without reference to lookahead token.  */
+
+    yyn = yypact[yystate];
+    if (yyn == YYFLAG)
+       goto yydefault;
+
+    /* Not known => get a lookahead token if don't already have one.  */
+
+    /* yychar is either YYEMPTY or YYEOF
+       or a valid token in external form.  */
+
+    if (yychar == YYEMPTY) {
+#if YYDEBUG != 0
+       if (yydebug)
+           fprintf(stderr, "Reading a token: ");
+#endif
+       yychar = YYLEX;
+    }
+
+    /* Convert token to internal form (in yychar1) for indexing tables with */
+
+    if (yychar <= 0) {         /* This means end of input. */
+       yychar1 = 0;
+       yychar = YYEOF;         /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+       if (yydebug)
+           fprintf(stderr, "Now at end of input.\n");
+#endif
+    } else {
+       yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+       if (yydebug) {
+           fprintf(stderr, "Next token is %d (%s", yychar,
+                   yytname[yychar1]);
+           /* Give the individual parser a way to print the precise meaning
+              of a token, for further debugging info.  */
+#ifdef YYPRINT
+           YYPRINT(stderr, yychar, yylval);
+#endif
+           fprintf(stderr, ")\n");
+       }
+#endif
+    }
+
+    yyn += yychar1;
+    if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+       goto yydefault;
+
+    yyn = yytable[yyn];
+
+    /* yyn is what to do for this token type in this state.
+       Negative => reduce, -yyn is rule number.
+       Positive => shift, yyn is new state.
+       New state is final state => don't bother to shift,
+       just return success.
+       0, or most negative number => error.  */
+
+    if (yyn < 0) {
+       if (yyn == YYFLAG)
+           goto yyerrlab;
+       yyn = -yyn;
+       goto yyreduce;
+    } else if (yyn == 0)
+       goto yyerrlab;
+
+    if (yyn == YYFINAL)
+       YYACCEPT;
+
+    /* Shift the lookahead token.  */
+
+#if YYDEBUG != 0
+    if (yydebug)
+       fprintf(stderr, "Shifting token %d (%s), ", yychar,
+               yytname[yychar1]);
+#endif
+
+    /* Discard the token being shifted unless it is eof.  */
+    if (yychar != YYEOF)
+       yychar = YYEMPTY;
+
+    *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+    *++yylsp = yylloc;
+#endif
+
+    /* count tokens shifted since error; after three, turn off error status.  */
+    if (yyerrstatus)
+       yyerrstatus--;
+
+    yystate = yyn;
+    goto yynewstate;
+
+/* Do the default action for the current state.  */
+  yydefault:
+
+    yyn = yydefact[yystate];
+    if (yyn == 0)
+       goto yyerrlab;
+
+/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+  yyreduce:
+    yylen = yyr2[yyn];
+    if (yylen > 0)
+       yyval = yyvsp[1 - yylen];       /* implement default value of the action */
+
+#if YYDEBUG != 0
+    if (yydebug) {
+       int i;
+
+       fprintf(stderr, "Reducing via rule %d (line %d), ",
+               yyn, yyrline[yyn]);
+
+       /* Print the symbols being reduced, and their result.  */
+       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+           fprintf(stderr, "%s ", yytname[yyrhs[i]]);
+       fprintf(stderr, " -> %s\n", yytname[yyr1[yyn]]);
+    }
+#endif
+
+
+    switch (yyn) {
+
+    case 1:
+#line 34 "dotparse.y"
+       {
+           D2Lbegin(yyvsp[0].s);
+           free(yyvsp[0].s);;
+           break;
+       }
+    case 2:
+#line 36 "dotparse.y"
+       {
+           D2Lend();;
+           break;
+       }
+    case 3:
+#line 38 "dotparse.y"
+       {
+           D2Labort();;
+           break;
+       }
+    case 4:
+#line 40 "dotparse.y"
+       {
+           D2Labort();;
+           break;
+       }
+    case 5:
+#line 44 "dotparse.y"
+       {
+           gtype = "graph";
+           etype = "--";;
+           break;
+       }
+    case 6:
+#line 46 "dotparse.y"
+       {
+           gtype = "strict graph";
+           etype = "--";;
+           break;
+       }
+    case 7:
+#line 48 "dotparse.y"
+       {
+           gtype = "digraph";
+           etype = "->";;
+           break;
+       }
+    case 8:
+#line 50 "dotparse.y"
+       {
+           gtype = "strict digraph";
+           etype = "->";;
+           break;
+       }
+    case 18:
+#line 68 "dotparse.y"
+       {;
+           break;
+       }
+    case 19:
+#line 71 "dotparse.y"
+       {
+           attrclass = NODE;
+           portstr[0] = '\000';;
+           break;
+       }
+    case 20:
+#line 72 "dotparse.y"
+       {
+           attrclass = GRAPH;;
+           break;
+       }
+    case 21:
+#line 76 "dotparse.y"
+       {
+           yyval.o = yyvsp[-1].o;;
+           break;
+       }
+    case 22:
+#line 80 "dotparse.y"
+       {
+           yyval.o = D2Linsertnode(yyvsp[0].s);
+           free(yyvsp[0].s);;
+           break;
+       }
+    case 23:
+#line 84 "dotparse.y"
+       {
+           D2Lbeginedge(NODE, yyvsp[0].o, portstr);
+           portstr[0] = '\000';;
+           break;
+       }
+    case 24:
+#line 86 "dotparse.y"
+       {
+           attrclass = EDGE;;
+           break;
+       }
+    case 25:
+#line 88 "dotparse.y"
+       {
+           D2Lendedge();
+           attrclass = GRAPH;;
+           break;
+       }
+    case 26:
+#line 90 "dotparse.y"
+       {
+           D2Lbeginedge(GRAPH, yyvsp[0].o, "");;
+           break;
+       }
+    case 27:
+#line 92 "dotparse.y"
+       {
+           attrclass = EDGE;;
+           break;
+       }
+    case 28:
+#line 94 "dotparse.y"
+       {
+           D2Lendedge();
+           attrclass = GRAPH;;
+           break;
+       }
+    case 29:
+#line 98 "dotparse.y"
+       {
+           D2Lmidedge(NODE, yyvsp[0].o, portstr);
+           portstr[0] = '\000';;
+           break;
+       }
+    case 30:
+#line 100 "dotparse.y"
+       {
+           D2Lmidedge(NODE, yyvsp[0].o, portstr);
+           portstr[0] = '\000';;
+           break;
+       }
+    case 32:
+#line 102 "dotparse.y"
+       {
+           D2Lmidedge(GRAPH, yyvsp[0].o, "");
+           portstr[0] = '\000';;
+           break;
+       }
+    case 33:
+#line 104 "dotparse.y"
+       {
+           D2Lmidedge(GRAPH, yyvsp[0].o, "");
+           portstr[0] = '\000';;
+           break;
+       }
+    case 40:
+#line 115 "dotparse.y"
+       {
+           strcat(portstr, yyvsp[0].s);
+           free(yyvsp[0].s);
+           ;
+           break;
+       }
+    case 41:
+#line 119 "dotparse.y"
+       {
+           strcat(portstr, "(");
+           strcat(portstr, yyvsp[-3].s);
+           strcat(portstr, ",");
+           strcat(portstr, yyvsp[-1].s);
+           strcat(portstr, ")");
+           free(yyvsp[-3].s), free(yyvsp[-1].s);
+           ;
+           break;
+       }
+    case 42:
+#line 128 "dotparse.y"
+       {
+           strcat(portstr, "@");
+           strcat(portstr, yyvsp[0].s);
+           free(yyvsp[0].s);
+           ;
+           break;
+       }
+    case 43:
+#line 134 "dotparse.y"
+       {
+           inattrstmt = TRUE;;
+           break;
+       }
+    case 44:
+#line 136 "dotparse.y"
+       {
+           attrclass = GRAPH;
+           inattrstmt = FALSE;;
+           break;
+       }
+    case 45:
+#line 138 "dotparse.y"
+       {
+           attrclass = GRAPH;;
+           break;
+       }
+    case 46:
+#line 142 "dotparse.y"
+       {
+           attrclass = GRAPH;;
+           break;
+       }
+    case 47:
+#line 144 "dotparse.y"
+       {
+           attrclass = NODE;;
+           break;
+       }
+    case 48:
+#line 146 "dotparse.y"
+       {
+           attrclass = EDGE;;
+           break;
+       }
+    case 55:
+#line 164 "dotparse.y"
+       {
+           D2Lsetattr(yyvsp[-2].s, yyvsp[0].s);
+           free(yyvsp[-2].s);
+           free(yyvsp[0].s);;
+           break;
+       }
+    case 58:
+#line 172 "dotparse.y"
+       {
+           yyval.o = D2Lpopgraph();;
+           break;
+       }
+    case 59:
+#line 173 "dotparse.y"
+       {
+           D2Lpushgraph(NULL);;
+           break;
+       }
+    case 60:
+#line 174 "dotparse.y"
+       {
+           yyval.o = D2Lpopgraph();;
+           break;
+       }
+    case 61:
+#line 176 "dotparse.y"
+       {
+           yyval.o = D2Lpopgraph();;
+           break;
+       }
+    case 62:
+#line 180 "dotparse.y"
+       {
+           D2Lpushgraph(yyvsp[0].s);
+           free(yyvsp[0].s);;
+           break;
+       }
+    }
+    /* the action file gets copied in in place of this dollarsign */
+#line 543 "/usr/lib/bison.simple"
+\f
+    yyvsp -= yylen;
+    yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+    yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+    if (yydebug) {
+       short *ssp1 = yyss - 1;
+       fprintf(stderr, "state stack now");
+       while (ssp1 != yyssp)
+           fprintf(stderr, " %d", *++ssp1);
+       fprintf(stderr, "\n");
+    }
+#endif
+
+    *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+    yylsp++;
+    if (yylen == 0) {
+       yylsp->first_line = yylloc.first_line;
+       yylsp->first_column = yylloc.first_column;
+       yylsp->last_line = (yylsp - 1)->last_line;
+       yylsp->last_column = (yylsp - 1)->last_column;
+       yylsp->text = 0;
+    } else {
+       yylsp->last_line = (yylsp + yylen - 1)->last_line;
+       yylsp->last_column = (yylsp + yylen - 1)->last_column;
+    }
+#endif
+
+    /* 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 - YYNTBASE] + *yyssp;
+    if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+       yystate = yytable[yystate];
+    else
+       yystate = yydefgoto[yyn - YYNTBASE];
+
+    goto yynewstate;
+
+  yyerrlab:                    /* here on detecting error */
+
+    if (!yyerrstatus)
+       /* If not already recovering from an error, report this error.  */
+    {
+       ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+       yyn = yypact[yystate];
+
+       if (yyn > YYFLAG && yyn < YYLAST) {
+           int size = 0;
+           char *msg;
+           int x, count;
+
+           count = 0;
+           /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
+           for (x = (yyn < 0 ? -yyn : 0);
+                x < (sizeof(yytname) / sizeof(char *)); x++)
+               if (yycheck[x + yyn] == x)
+                   size += strlen(yytname[x]) + 15, count++;
+           msg = (char *) malloc(size + 15);
+           if (msg != 0) {
+               strcpy(msg, "parse error");
+
+               if (count < 5) {
+                   count = 0;
+                   for (x = (yyn < 0 ? -yyn : 0);
+                        x < (sizeof(yytname) / sizeof(char *)); x++)
+                       if (yycheck[x + yyn] == x) {
+                           strcat(msg,
+                                  count == 0 ? ", expecting `" : " or `");
+                           strcat(msg, yytname[x]);
+                           strcat(msg, "'");
+                           count++;
+                       }
+               }
+               yyerror(msg);
+               free(msg);
+           } else
+               yyerror("parse error; also virtual memory exceeded");
+       } else
+#endif                         /* YYERROR_VERBOSE */
+           yyerror("parse error");
+    }
+
+    goto yyerrlab1;
+  yyerrlab1:                   /* here on error raised explicitly by an action */
+
+    if (yyerrstatus == 3) {
+       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+
+       /* return failure if at end of input */
+       if (yychar == YYEOF)
+           YYABORT;
+
+#if YYDEBUG != 0
+       if (yydebug)
+           fprintf(stderr, "Discarding token %d (%s).\n", yychar,
+                   yytname[yychar1]);
+#endif
+
+       yychar = YYEMPTY;
+    }
+
+    /* Else will try to reuse lookahead token
+       after shifting the error token.  */
+
+    yyerrstatus = 3;           /* Each real token shifted decrements this */
+
+    goto yyerrhandle;
+
+  yyerrdefault:                /* current state does not do anything special for the error token. */
+
+#if 0
+    /* This is wrong; only states that explicitly want error tokens
+       should shift them.  */
+    yyn = yydefact[yystate];   /* If its default is to accept any token, ok.  Otherwise pop it. */
+    if (yyn)
+       goto yydefault;
+#endif
+
+  yyerrpop:                    /* pop the current state because it cannot handle the error token */
+
+    if (yyssp == yyss)
+       YYABORT;
+    yyvsp--;
+    yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+    yylsp--;
+#endif
+
+#if YYDEBUG != 0
+    if (yydebug) {
+       short *ssp1 = yyss - 1;
+       fprintf(stderr, "Error: state stack now");
+       while (ssp1 != yyssp)
+           fprintf(stderr, " %d", *++ssp1);
+       fprintf(stderr, "\n");
+    }
+#endif
+
+  yyerrhandle:
+
+    yyn = yypact[yystate];
+    if (yyn == YYFLAG)
+       goto yyerrdefault;
+
+    yyn += YYTERROR;
+    if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+       goto yyerrdefault;
+
+    yyn = yytable[yyn];
+    if (yyn < 0) {
+       if (yyn == YYFLAG)
+           goto yyerrpop;
+       yyn = -yyn;
+       goto yyreduce;
+    } else if (yyn == 0)
+       goto yyerrpop;
+
+    if (yyn == YYFINAL)
+       YYACCEPT;
+
+#if YYDEBUG != 0
+    if (yydebug)
+       fprintf(stderr, "Shifting error token, ");
+#endif
+
+    *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+    *++yylsp = yylloc;
+#endif
+
+    yystate = yyn;
+    goto yynewstate;
+
+  yyacceptlab:
+    /* YYACCEPT comes here.  */
+    if (yyfree_stacks) {
+       free(yyss);
+       free(yyvs);
+#ifdef YYLSP_NEEDED
+       free(yyls);
+#endif
+    }
+    return 0;
+
+  yyabortlab:
+    /* YYABORT comes here.  */
+    if (yyfree_stacks) {
+       free(yyss);
+       free(yyvs);
+#ifdef YYLSP_NEEDED
+       free(yyls);
+#endif
+    }
+    return 1;
+}
+
+#line 182 "dotparse.y"
diff --git a/windows/cmd/lefty/dot2l/dotparse.h b/windows/cmd/lefty/dot2l/dotparse.h
new file mode 100644 (file)
index 0000000..1f03893
--- /dev/null
@@ -0,0 +1,40 @@
+/* $Id$ $Revision$ */
+/* vim:set shiftwidth=4 ts=8: */
+
+/**********************************************************
+*      This software is part of the graphviz package      *
+*                http://www.graphviz.org/                 *
+*                                                         *
+*            Copyright (c) 1994-2004 AT&T Corp.           *
+*                and is licensed under the                *
+*            Common Public License, Version 1.0           *
+*                      by AT&T Corp.                      *
+*                                                         *
+*        Information and Software Systems Research        *
+*              AT&T Research, Florham Park NJ             *
+**********************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    typedef union {
+       long i;
+       char *s;
+       void *o;
+    } YYSTYPE;
+#define        T_graph 257
+#define        T_digraph       258
+#define        T_strict        259
+#define        T_node  260
+#define        T_edge  261
+#define        T_edgeop        262
+#define        T_id    263
+#define        T_subgraph      264
+
+
+    extern YYSTYPE yylval;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/windows/cmd/lefty/gfx/gfx.dsp b/windows/cmd/lefty/gfx/gfx.dsp
new file mode 100755 (executable)
index 0000000..a5e889a
--- /dev/null
@@ -0,0 +1,182 @@
+# Microsoft Developer Studio Project File - Name="gfx" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+\r
+CFG=gfx - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "gfx.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "gfx.mak" CFG="gfx - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "gfx - Win32 Release" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "gfx - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+# ADD CPP /nologo /W3 /GX /O2 /I ".." /I "..\ws\mswin32" /I "..\..\.." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSWIN32" /D "HAVE_CONFIG_H" /YX /FD /c\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo\r
+# ADD LIB32 /nologo\r
+# Begin Special Build Tool\r
+SOURCE="$(InputPath)"\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I ".." /I "..\ws\mswin32" /I "..\..\.." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSWIN32" /D "HAVE_CONFIG_H" /FR /YX /FD /GZ /c\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo\r
+# ADD LIB32 /nologo\r
+# Begin Special Build Tool\r
+SOURCE="$(InputPath)"\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "gfx - Win32 Release"\r
+# Name "gfx - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\common.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\g.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\garray.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gbutton.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gcanvas.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gcommon.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\glabel.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gmenu.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gpcanvas.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gquery.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gscroll.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gtext.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gview.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\mem.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\common.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\g.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\gcommon.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\mem.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\resource.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Ressource Files"\r
+\r
+# PROP Default_Filter ".rc"\r
+# Begin Source File\r
+\r
+SOURCE=..\ws\mswin32\lefty.rc\r
+# End Source File\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/windows/cmd/lefty/gfx/gfx.mak b/windows/cmd/lefty/gfx/gfx.mak
new file mode 100755 (executable)
index 0000000..9667c05
--- /dev/null
@@ -0,0 +1,536 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on gfx.dsp\r
+!IF "$(CFG)" == ""\r
+CFG=gfx - Win32 Debug\r
+!MESSAGE No configuration specified. Defaulting to gfx - Win32 Debug.\r
+!ENDIF \r
+\r
+!IF "$(CFG)" != "gfx - Win32 Release" && "$(CFG)" != "gfx - Win32 Debug"\r
+!MESSAGE Invalid configuration "$(CFG)" specified.\r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "gfx.mak" CFG="gfx - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "gfx - Win32 Release" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "gfx - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+!MESSAGE \r
+!ERROR An invalid configuration is specified.\r
+!ENDIF \r
+\r
+!IF "$(OS)" == "Windows_NT"\r
+NULL=\r
+!ELSE \r
+NULL=nul\r
+!ENDIF \r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+OUTDIR=.\Release\r
+INTDIR=.\Release\r
+# Begin Custom Macros\r
+OutDir=.\Release\r
+# End Custom Macros\r
+\r
+ALL : "$(OUTDIR)\gfx.lib"\r
+\r
+\r
+CLEAN :\r
+       -@erase "$(INTDIR)\common.obj"\r
+       -@erase "$(INTDIR)\g.obj"\r
+       -@erase "$(INTDIR)\garray.obj"\r
+       -@erase "$(INTDIR)\gbutton.obj"\r
+       -@erase "$(INTDIR)\gcanvas.obj"\r
+       -@erase "$(INTDIR)\gcommon.obj"\r
+       -@erase "$(INTDIR)\glabel.obj"\r
+       -@erase "$(INTDIR)\gmenu.obj"\r
+       -@erase "$(INTDIR)\gpcanvas.obj"\r
+       -@erase "$(INTDIR)\gquery.obj"\r
+       -@erase "$(INTDIR)\gscroll.obj"\r
+       -@erase "$(INTDIR)\gtext.obj"\r
+       -@erase "$(INTDIR)\gview.obj"\r
+       -@erase "$(INTDIR)\mem.obj"\r
+       -@erase "$(INTDIR)\vc60.idb"\r
+       -@erase "$(OUTDIR)\gfx.lib"\r
+\r
+"$(OUTDIR)" :\r
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"\r
+\r
+CPP=cl.exe\r
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /I ".." /I "..\ws\mswin32" /I "..\..\.." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSWIN32" /D "HAVE_CONFIG_H" /Fp"$(INTDIR)\gfx.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c \r
+\r
+.c{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.c{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+RSC=rc.exe\r
+BSC32=bscmake.exe\r
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\gfx.bsc" \r
+BSC32_SBRS= \\r
+       \r
+LIB32=link.exe -lib\r
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\gfx.lib" \r
+LIB32_OBJS= \\r
+       "$(INTDIR)\common.obj" \\r
+       "$(INTDIR)\g.obj" \\r
+       "$(INTDIR)\garray.obj" \\r
+       "$(INTDIR)\gbutton.obj" \\r
+       "$(INTDIR)\gcanvas.obj" \\r
+       "$(INTDIR)\gcommon.obj" \\r
+       "$(INTDIR)\glabel.obj" \\r
+       "$(INTDIR)\gmenu.obj" \\r
+       "$(INTDIR)\gpcanvas.obj" \\r
+       "$(INTDIR)\gquery.obj" \\r
+       "$(INTDIR)\gscroll.obj" \\r
+       "$(INTDIR)\gtext.obj" \\r
+       "$(INTDIR)\gview.obj" \\r
+       "$(INTDIR)\mem.obj"\r
+\r
+"$(OUTDIR)\gfx.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)\r
+    $(LIB32) @<<\r
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)\r
+<<\r
+\r
+SOURCE="$(InputPath)"\r
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep\r
+\r
+ALL : $(DS_POSTBUILD_DEP)\r
+\r
+# Begin Custom Macros\r
+OutDir=.\Release\r
+# End Custom Macros\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+OUTDIR=.\Debug\r
+INTDIR=.\Debug\r
+# Begin Custom Macros\r
+OutDir=.\Debug\r
+# End Custom Macros\r
+\r
+ALL : "$(OUTDIR)\gfx.lib" "$(OUTDIR)\gfx.bsc"\r
+\r
+\r
+CLEAN :\r
+       -@erase "$(INTDIR)\common.obj"\r
+       -@erase "$(INTDIR)\common.sbr"\r
+       -@erase "$(INTDIR)\g.obj"\r
+       -@erase "$(INTDIR)\g.sbr"\r
+       -@erase "$(INTDIR)\garray.obj"\r
+       -@erase "$(INTDIR)\garray.sbr"\r
+       -@erase "$(INTDIR)\gbutton.obj"\r
+       -@erase "$(INTDIR)\gbutton.sbr"\r
+       -@erase "$(INTDIR)\gcanvas.obj"\r
+       -@erase "$(INTDIR)\gcanvas.sbr"\r
+       -@erase "$(INTDIR)\gcommon.obj"\r
+       -@erase "$(INTDIR)\gcommon.sbr"\r
+       -@erase "$(INTDIR)\glabel.obj"\r
+       -@erase "$(INTDIR)\glabel.sbr"\r
+       -@erase "$(INTDIR)\gmenu.obj"\r
+       -@erase "$(INTDIR)\gmenu.sbr"\r
+       -@erase "$(INTDIR)\gpcanvas.obj"\r
+       -@erase "$(INTDIR)\gpcanvas.sbr"\r
+       -@erase "$(INTDIR)\gquery.obj"\r
+       -@erase "$(INTDIR)\gquery.sbr"\r
+       -@erase "$(INTDIR)\gscroll.obj"\r
+       -@erase "$(INTDIR)\gscroll.sbr"\r
+       -@erase "$(INTDIR)\gtext.obj"\r
+       -@erase "$(INTDIR)\gtext.sbr"\r
+       -@erase "$(INTDIR)\gview.obj"\r
+       -@erase "$(INTDIR)\gview.sbr"\r
+       -@erase "$(INTDIR)\mem.obj"\r
+       -@erase "$(INTDIR)\mem.sbr"\r
+       -@erase "$(INTDIR)\vc60.idb"\r
+       -@erase "$(INTDIR)\vc60.pdb"\r
+       -@erase "$(OUTDIR)\gfx.bsc"\r
+       -@erase "$(OUTDIR)\gfx.lib"\r
+\r
+"$(OUTDIR)" :\r
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"\r
+\r
+CPP=cl.exe\r
+CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I ".." /I "..\ws\mswin32" /I "..\..\.." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSWIN32" /D "HAVE_CONFIG_H" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\gfx.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c \r
+\r
+.c{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.c{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+RSC=rc.exe\r
+BSC32=bscmake.exe\r
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\gfx.bsc" \r
+BSC32_SBRS= \\r
+       "$(INTDIR)\common.sbr" \\r
+       "$(INTDIR)\g.sbr" \\r
+       "$(INTDIR)\garray.sbr" \\r
+       "$(INTDIR)\gbutton.sbr" \\r
+       "$(INTDIR)\gcanvas.sbr" \\r
+       "$(INTDIR)\gcommon.sbr" \\r
+       "$(INTDIR)\glabel.sbr" \\r
+       "$(INTDIR)\gmenu.sbr" \\r
+       "$(INTDIR)\gpcanvas.sbr" \\r
+       "$(INTDIR)\gquery.sbr" \\r
+       "$(INTDIR)\gscroll.sbr" \\r
+       "$(INTDIR)\gtext.sbr" \\r
+       "$(INTDIR)\gview.sbr" \\r
+       "$(INTDIR)\mem.sbr"\r
+\r
+"$(OUTDIR)\gfx.bsc" : "$(OUTDIR)" $(BSC32_SBRS)\r
+    $(BSC32) @<<\r
+  $(BSC32_FLAGS) $(BSC32_SBRS)\r
+<<\r
+\r
+LIB32=link.exe -lib\r
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\gfx.lib" \r
+LIB32_OBJS= \\r
+       "$(INTDIR)\common.obj" \\r
+       "$(INTDIR)\g.obj" \\r
+       "$(INTDIR)\garray.obj" \\r
+       "$(INTDIR)\gbutton.obj" \\r
+       "$(INTDIR)\gcanvas.obj" \\r
+       "$(INTDIR)\gcommon.obj" \\r
+       "$(INTDIR)\glabel.obj" \\r
+       "$(INTDIR)\gmenu.obj" \\r
+       "$(INTDIR)\gpcanvas.obj" \\r
+       "$(INTDIR)\gquery.obj" \\r
+       "$(INTDIR)\gscroll.obj" \\r
+       "$(INTDIR)\gtext.obj" \\r
+       "$(INTDIR)\gview.obj" \\r
+       "$(INTDIR)\mem.obj"\r
+\r
+"$(OUTDIR)\gfx.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)\r
+    $(LIB32) @<<\r
+  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)\r
+<<\r
+\r
+SOURCE="$(InputPath)"\r
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep\r
+\r
+ALL : $(DS_POSTBUILD_DEP)\r
+\r
+# Begin Custom Macros\r
+OutDir=.\Debug\r
+# End Custom Macros\r
+\r
+\r
+!ENDIF \r
+\r
+\r
+!IF "$(NO_EXTERNAL_DEPS)" != "1"\r
+!IF EXISTS("gfx.dep")\r
+!INCLUDE "gfx.dep"\r
+!ELSE \r
+!MESSAGE Warning: cannot find "gfx.dep"\r
+!ENDIF \r
+!ENDIF \r
+\r
+\r
+!IF "$(CFG)" == "gfx - Win32 Release" || "$(CFG)" == "gfx - Win32 Debug"\r
+SOURCE=..\common.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\common.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\common.obj" "$(INTDIR)\common.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\g.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\g.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\g.obj"      "$(INTDIR)\g.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\garray.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\garray.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\garray.obj" "$(INTDIR)\garray.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gbutton.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gbutton.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gbutton.obj"        "$(INTDIR)\gbutton.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gcanvas.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gcanvas.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gcanvas.obj"        "$(INTDIR)\gcanvas.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gcommon.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gcommon.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gcommon.obj"        "$(INTDIR)\gcommon.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\glabel.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\glabel.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\glabel.obj" "$(INTDIR)\glabel.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gmenu.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gmenu.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gmenu.obj"  "$(INTDIR)\gmenu.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gpcanvas.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gpcanvas.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gpcanvas.obj"       "$(INTDIR)\gpcanvas.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gquery.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gquery.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gquery.obj" "$(INTDIR)\gquery.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gscroll.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gscroll.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gscroll.obj"        "$(INTDIR)\gscroll.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gtext.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gtext.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gtext.obj"  "$(INTDIR)\gtext.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\ws\mswin32\gview.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\gview.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\gview.obj"  "$(INTDIR)\gview.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=..\mem.c\r
+\r
+!IF  "$(CFG)" == "gfx - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\mem.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "gfx - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\mem.obj"    "$(INTDIR)\mem.sbr" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+\r
+!ENDIF \r
+\r
diff --git a/windows/cmd/lefty/lefty.dsp b/windows/cmd/lefty/lefty.dsp
new file mode 100644 (file)
index 0000000..72c9e96
--- /dev/null
@@ -0,0 +1,245 @@
+# Microsoft Developer Studio Project File - Name="lefty" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Application" 0x0101\r
+\r
+CFG=lefty - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "lefty.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "lefty.mak" CFG="lefty - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "lefty - Win32 Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "lefty - Win32 Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "lefty - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c\r
+# ADD CPP /nologo /W3 /GX /O2 /I "." /I "..\.." /I ".\dot2l" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "MSWIN32" /D "FEATURE_DOT" /D "HAVE_CONFIG_H" /YX /FD /c\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386\r
+# ADD LINK32 gfx.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /libpath:"gfx\Release"\r
+# Begin Special Build Tool\r
+SOURCE="$(InputPath)"\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "lefty - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "lefty___Win32_Debug"\r
+# PROP BASE Intermediate_Dir "lefty___Win32_Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /I "..\.." /I ".\dot2l" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "MSWIN32" /D "FEATURE_DOT" /D "HAVE_CONFIG_H" /YX /FD /GZ /c\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 gfx.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"gfx\Debug"\r
+# Begin Special Build Tool\r
+SOURCE="$(InputPath)"\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "lefty - Win32 Release"\r
+# Name "lefty - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=.\code.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\display.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\exec.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\gfxview.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\internal.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\os\mswin32\io.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\lefty.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\lex.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\mem.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\parse.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\str.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\tbl.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\txtview.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=.\code.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\display.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\exec.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\gfxview.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\internal.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\lex.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\parse.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\str.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\tbl.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\txtview.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# Begin Source File\r
+\r
+SOURCE=.\ws\mswin32\lefty.rc\r
+# End Source File\r
+# End Group\r
+# Begin Group "Dot2Lefty"\r
+\r
+# PROP Default_Filter ""\r
+# Begin Group "Source Files dot2l"\r
+\r
+# PROP Default_Filter ".c"\r
+# Begin Source File\r
+\r
+SOURCE=.\dot2l\dot2l.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\dot2l\dotlex.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\dot2l\dotparse.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\dot2l\dottrie.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files dot2l"\r
+\r
+# PROP Default_Filter ".h"\r
+# Begin Source File\r
+\r
+SOURCE=.\dot2l\dot2l.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\dot2l\dotparse.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\dot2l\triefa.h\r
+# End Source File\r
+# End Group\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/windows/cmd/lefty/lefty.mak b/windows/cmd/lefty/lefty.mak
new file mode 100755 (executable)
index 0000000..9d85c29
--- /dev/null
@@ -0,0 +1,382 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on lefty.dsp\r
+!IF "$(CFG)" == ""\r
+CFG=lefty - Win32 Debug\r
+!MESSAGE No configuration specified. Defaulting to lefty - Win32 Debug.\r
+!ENDIF \r
+\r
+!IF "$(CFG)" != "lefty - Win32 Release" && "$(CFG)" != "lefty - Win32 Debug"\r
+!MESSAGE Invalid configuration "$(CFG)" specified.\r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "lefty.mak" CFG="lefty - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "lefty - Win32 Release" (based on "Win32 (x86) Application")\r
+!MESSAGE "lefty - Win32 Debug" (based on "Win32 (x86) Application")\r
+!MESSAGE \r
+!ERROR An invalid configuration is specified.\r
+!ENDIF \r
+\r
+!IF "$(OS)" == "Windows_NT"\r
+NULL=\r
+!ELSE \r
+NULL=nul\r
+!ENDIF \r
+\r
+!IF  "$(CFG)" == "lefty - Win32 Release"\r
+\r
+OUTDIR=.\Release\r
+INTDIR=.\Release\r
+# Begin Custom Macros\r
+OutDir=.\Release\r
+# End Custom Macros\r
+\r
+ALL : "$(OUTDIR)\lefty.exe"\r
+\r
+\r
+CLEAN :\r
+       -@erase "$(INTDIR)\code.obj"\r
+       -@erase "$(INTDIR)\display.obj"\r
+       -@erase "$(INTDIR)\dot2l.obj"\r
+       -@erase "$(INTDIR)\dotlex.obj"\r
+       -@erase "$(INTDIR)\dotparse.obj"\r
+       -@erase "$(INTDIR)\dottrie.obj"\r
+       -@erase "$(INTDIR)\exec.obj"\r
+       -@erase "$(INTDIR)\gfxview.obj"\r
+       -@erase "$(INTDIR)\internal.obj"\r
+       -@erase "$(INTDIR)\io.obj"\r
+       -@erase "$(INTDIR)\lefty.obj"\r
+       -@erase "$(INTDIR)\lefty.res"\r
+       -@erase "$(INTDIR)\lex.obj"\r
+       -@erase "$(INTDIR)\mem.obj"\r
+       -@erase "$(INTDIR)\parse.obj"\r
+       -@erase "$(INTDIR)\str.obj"\r
+       -@erase "$(INTDIR)\tbl.obj"\r
+       -@erase "$(INTDIR)\txtview.obj"\r
+       -@erase "$(INTDIR)\vc60.idb"\r
+       -@erase "$(OUTDIR)\lefty.exe"\r
+\r
+"$(OUTDIR)" :\r
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"\r
+\r
+CPP=cl.exe\r
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "." /I "..\.." /I ".\dot2l" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "MSWIN32" /D "FEATURE_DOT" /D "HAVE_CONFIG_H" /Fp"$(INTDIR)\lefty.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c \r
+\r
+.c{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.c{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+MTL=midl.exe\r
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 \r
+RSC=rc.exe\r
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\lefty.res" /d "NDEBUG" \r
+BSC32=bscmake.exe\r
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\lefty.bsc" \r
+BSC32_SBRS= \\r
+       \r
+LINK32=link.exe\r
+LINK32_FLAGS=gfx.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\lefty.pdb" /machine:I386 /out:"$(OUTDIR)\lefty.exe" /libpath:"..\gfx\Release" \r
+LINK32_OBJS= \\r
+       "$(INTDIR)\code.obj" \\r
+       "$(INTDIR)\display.obj" \\r
+       "$(INTDIR)\exec.obj" \\r
+       "$(INTDIR)\gfxview.obj" \\r
+       "$(INTDIR)\internal.obj" \\r
+       "$(INTDIR)\io.obj" \\r
+       "$(INTDIR)\lefty.obj" \\r
+       "$(INTDIR)\lex.obj" \\r
+       "$(INTDIR)\mem.obj" \\r
+       "$(INTDIR)\parse.obj" \\r
+       "$(INTDIR)\str.obj" \\r
+       "$(INTDIR)\tbl.obj" \\r
+       "$(INTDIR)\txtview.obj" \\r
+       "$(INTDIR)\dot2l.obj" \\r
+       "$(INTDIR)\dotlex.obj" \\r
+       "$(INTDIR)\dotparse.obj" \\r
+       "$(INTDIR)\dottrie.obj" \\r
+       "$(INTDIR)\lefty.res"\r
+\r
+"$(OUTDIR)\lefty.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)\r
+    $(LINK32) @<<\r
+  $(LINK32_FLAGS) $(LINK32_OBJS)\r
+<<\r
+\r
+SOURCE="$(InputPath)"\r
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep\r
+\r
+ALL : $(DS_POSTBUILD_DEP)\r
+\r
+# Begin Custom Macros\r
+OutDir=.\Release\r
+# End Custom Macros\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "lefty - Win32 Debug"\r
+\r
+OUTDIR=.\Debug\r
+INTDIR=.\Debug\r
+# Begin Custom Macros\r
+OutDir=.\Debug\r
+# End Custom Macros\r
+\r
+ALL : "$(OUTDIR)\lefty.exe"\r
+\r
+\r
+CLEAN :\r
+       -@erase "$(INTDIR)\code.obj"\r
+       -@erase "$(INTDIR)\display.obj"\r
+       -@erase "$(INTDIR)\dot2l.obj"\r
+       -@erase "$(INTDIR)\dotlex.obj"\r
+       -@erase "$(INTDIR)\dotparse.obj"\r
+       -@erase "$(INTDIR)\dottrie.obj"\r
+       -@erase "$(INTDIR)\exec.obj"\r
+       -@erase "$(INTDIR)\gfxview.obj"\r
+       -@erase "$(INTDIR)\internal.obj"\r
+       -@erase "$(INTDIR)\io.obj"\r
+       -@erase "$(INTDIR)\lefty.obj"\r
+       -@erase "$(INTDIR)\lefty.res"\r
+       -@erase "$(INTDIR)\lex.obj"\r
+       -@erase "$(INTDIR)\mem.obj"\r
+       -@erase "$(INTDIR)\parse.obj"\r
+       -@erase "$(INTDIR)\str.obj"\r
+       -@erase "$(INTDIR)\tbl.obj"\r
+       -@erase "$(INTDIR)\txtview.obj"\r
+       -@erase "$(INTDIR)\vc60.idb"\r
+       -@erase "$(INTDIR)\vc60.pdb"\r
+       -@erase "$(OUTDIR)\lefty.exe"\r
+       -@erase "$(OUTDIR)\lefty.ilk"\r
+       -@erase "$(OUTDIR)\lefty.pdb"\r
+\r
+"$(OUTDIR)" :\r
+    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"\r
+\r
+CPP=cl.exe\r
+CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /I "." /I "..\.." /I ".\dot2l" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "MSWIN32" /D "FEATURE_DOT" /D "HAVE_CONFIG_H" /Fp"$(INTDIR)\lefty.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c \r
+\r
+.c{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.obj::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.c{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cpp{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+.cxx{$(INTDIR)}.sbr::\r
+   $(CPP) @<<\r
+   $(CPP_PROJ) $< \r
+<<\r
+\r
+MTL=midl.exe\r
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 \r
+RSC=rc.exe\r
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\lefty.res" /d "_DEBUG" \r
+BSC32=bscmake.exe\r
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\lefty.bsc" \r
+BSC32_SBRS= \\r
+       \r
+LINK32=link.exe\r
+LINK32_FLAGS=gfx.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\lefty.pdb" /debug /machine:I386 /out:"$(OUTDIR)\lefty.exe" /pdbtype:sept /libpath:"gfx\Debug" \r
+LINK32_OBJS= \\r
+       "$(INTDIR)\code.obj" \\r
+       "$(INTDIR)\display.obj" \\r
+       "$(INTDIR)\exec.obj" \\r
+       "$(INTDIR)\gfxview.obj" \\r
+       "$(INTDIR)\internal.obj" \\r
+       "$(INTDIR)\io.obj" \\r
+       "$(INTDIR)\lefty.obj" \\r
+       "$(INTDIR)\lex.obj" \\r
+       "$(INTDIR)\mem.obj" \\r
+       "$(INTDIR)\parse.obj" \\r
+       "$(INTDIR)\str.obj" \\r
+       "$(INTDIR)\tbl.obj" \\r
+       "$(INTDIR)\txtview.obj" \\r
+       "$(INTDIR)\dot2l.obj" \\r
+       "$(INTDIR)\dotlex.obj" \\r
+       "$(INTDIR)\dotparse.obj" \\r
+       "$(INTDIR)\dottrie.obj" \\r
+       "$(INTDIR)\lefty.res"\r
+\r
+"$(OUTDIR)\lefty.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)\r
+    $(LINK32) @<<\r
+  $(LINK32_FLAGS) $(LINK32_OBJS)\r
+<<\r
+\r
+SOURCE="$(InputPath)"\r
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep\r
+\r
+ALL : $(DS_POSTBUILD_DEP)\r
+\r
+# Begin Custom Macros\r
+OutDir=.\Debug\r
+# End Custom Macros\r
+\r
+\r
+!ENDIF \r
+\r
+\r
+!IF "$(NO_EXTERNAL_DEPS)" != "1"\r
+!IF EXISTS("lefty.dep")\r
+!INCLUDE "lefty.dep"\r
+!ELSE \r
+!MESSAGE Warning: cannot find "lefty.dep"\r
+!ENDIF \r
+!ENDIF \r
+\r
+\r
+!IF "$(CFG)" == "lefty - Win32 Release" || "$(CFG)" == "lefty - Win32 Debug"\r
+SOURCE=.\code.c\r
+\r
+"$(INTDIR)\code.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\display.c\r
+\r
+"$(INTDIR)\display.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\exec.c\r
+\r
+"$(INTDIR)\exec.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\gfxview.c\r
+\r
+"$(INTDIR)\gfxview.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\internal.c\r
+\r
+"$(INTDIR)\internal.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\os\mswin32\io.c\r
+\r
+"$(INTDIR)\io.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+SOURCE=.\lefty.c\r
+\r
+"$(INTDIR)\lefty.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\lex.c\r
+\r
+"$(INTDIR)\lex.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\mem.c\r
+\r
+"$(INTDIR)\mem.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\parse.c\r
+\r
+"$(INTDIR)\parse.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\str.c\r
+\r
+"$(INTDIR)\str.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\tbl.c\r
+\r
+"$(INTDIR)\tbl.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\txtview.c\r
+\r
+"$(INTDIR)\txtview.obj" : $(SOURCE) "$(INTDIR)"\r
+\r
+\r
+SOURCE=.\ws\mswin32\lefty.rc\r
+\r
+!IF  "$(CFG)" == "lefty - Win32 Release"\r
+\r
+\r
+"$(INTDIR)\lefty.res" : $(SOURCE) "$(INTDIR)"\r
+       $(RSC) /l 0x409 /fo"$(INTDIR)\lefty.res" /i "ws\mswin32" /d "NDEBUG" $(SOURCE)\r
+\r
+\r
+!ELSEIF  "$(CFG)" == "lefty - Win32 Debug"\r
+\r
+\r
+"$(INTDIR)\lefty.res" : $(SOURCE) "$(INTDIR)"\r
+       $(RSC) /l 0x409 /fo"$(INTDIR)\lefty.res" /i "ws\mswin32" /d "_DEBUG" $(SOURCE)\r
+\r
+\r
+!ENDIF \r
+\r
+SOURCE=.\dot2l\dot2l.c\r
+\r
+"$(INTDIR)\dot2l.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+SOURCE=.\dot2l\dotlex.c\r
+\r
+"$(INTDIR)\dotlex.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+SOURCE=.\dot2l\dotparse.c\r
+\r
+"$(INTDIR)\dotparse.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+SOURCE=.\dot2l\dottrie.c\r
+\r
+"$(INTDIR)\dottrie.obj" : $(SOURCE) "$(INTDIR)"\r
+       $(CPP) $(CPP_PROJ) $(SOURCE)\r
+\r
+\r
+\r
+!ENDIF \r
+\r