]> cygwin.com Git - cygwin-apps/setup.git/blobdiff - iniparse.y
2002-05-19 Robert Collins <rbtcollins@hotmail.com>
[cygwin-apps/setup.git] / iniparse.y
index 31a17046c9dc66e3231dedd789e5fb379906f0f2..009b53c4543e4b86aa8db3cfa2d4b59072c199a6 100644 (file)
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
+#include "win32.h"
 #include "ini.h"
 #include "iniparse.h"
+#include "PackageTrust.h"
+
+extern int yyerror (String  const &s);
+int yylex ();
 
 #include "port.h"
 
+#include "IniDBBuilder.h"
+
 #define YYERROR_VERBOSE 1
+#define YYINITDEPTH 1000
 /*#define YYDEBUG 1*/
 
-static Package *cp;
-static int trust;
-extern unsigned int setup_timestamp;
-extern char *setup_version;
+IniDBBuilder *iniBuilder;
 extern int yylineno;
 
-#define cpt (cp->info+trust)
-
+void add_correct_version();
 %}
 
 %token STRING
-%token SETUP_TIMESTAMP SETUP_VERSION VERSION INSTALL SOURCE SDESC LDESC
+%token SETUP_TIMESTAMP SETUP_VERSION PACKAGEVERSION INSTALL SOURCE SDESC LDESC
+%token CATEGORY REQUIRES
+%token APATH PPATH INCLUDE_SETUP EXCLUDE_PACKAGE DOWNLOAD_URL
 %token T_PREV T_CURR T_TEST T_UNKNOWN
+%token MD5
 
 %%
 
@@ -53,8 +61,9 @@ setup_headers
  ;
 
 setup_header
- : SETUP_TIMESTAMP STRING '\n' { setup_timestamp = strtoul ($2, 0, 0); }
- | SETUP_VERSION STRING '\n' { setup_version = _strdup ($2); }
+ : SETUP_TIMESTAMP STRING '\n' { iniBuilder->buildTimestamp ($2); }
+ | SETUP_VERSION STRING '\n' { iniBuilder->buildVersion ($2); }
+ | '\n'
  | error { yyerror ("unrecognized line in setup.ini headers (do you have the latest setup?)"); } '\n'
  ;
 
@@ -64,59 +73,42 @@ packages
  ;
 
 package
- : '@' STRING '\n'             { new_package($2); }
+ : '@' STRING '\n'             { iniBuilder->buildPackage ($2);}
    lines
- | '\n'
  ;
 
 lines
- : simple_line '\n' lines
+ : lines '\n' simple_line
  | simple_line
  ;
 
 simple_line
- : VERSION STRING              { cpt->version = $2; }
- | SDESC STRING                        { cp->sdesc = $2; }
- | LDESC STRING                        { cp->ldesc = $2; }
- | INSTALL STRING STRING       { cpt->install = $2;
-                                 cpt->install_size = atoi($3); }
- | SOURCE STRING STRING                { cpt->source = $2;
-                                 cpt->source_size = atoi($3); }
- | T_PREV                      { trust = TRUST_PREV; }
- | T_CURR                      { trust = TRUST_CURR; }
- | T_TEST                      { trust = TRUST_TEST; }
- | T_UNKNOWN                   { trust = TRUST_UNKNOWN; }
+ : PACKAGEVERSION STRING       { iniBuilder->buildPackageVersion ($2); }
+ | SDESC STRING                        { iniBuilder->buildPackageSDesc($2); }
+ | LDESC STRING                        { iniBuilder->buildPackageLDesc($2); }
+ | CATEGORY categories
+ | REQUIRES requires
+ | INSTALL STRING STRING MD5    { iniBuilder->buildPackageInstall ($2, $3, (unsigned char *)$4); }
+ | INSTALL STRING STRING       { iniBuilder->buildPackageInstall ($2, $3); }
+ | SOURCE STRING STRING MD5    { iniBuilder->buildPackageSource ($2, $3, (unsigned char *)$4); }
+ | SOURCE STRING STRING                { iniBuilder->buildPackageSource ($2, $3); }
+ | T_PREV                      { iniBuilder->buildPackageTrust (TRUST_PREV); }
+ | T_CURR                      { iniBuilder->buildPackageTrust (TRUST_CURR); }
+ | T_TEST                      { iniBuilder->buildPackageTrust (TRUST_TEST); }
+ | T_UNKNOWN                   { iniBuilder->buildPackageTrust (TRUST_UNKNOWN); }
  | /* empty */
- | error '\n' { yylineno --;
-               yyerror ("unrecognized line in package %s (do you have the latest setup?)", cp->name);
-               yylineno ++;
-             }
+ | error { yyerror (String("unrecognized line ") + yylineno + " (do you have the latest setup?)");
+       }
  ;
 
-%%
+requires
+ : STRING                      { iniBuilder->buildPackageRequirement($1); } requires
+ | STRING                      { iniBuilder->buildPackageRequirement($1); }
+ ;
 
-Package *package = 0;
-int npackages = 0;
-static int maxpackages = 0;
-
-Package *
-new_package (char *name)
-{
-  if (npackages >= maxpackages)
-    {
-      maxpackages += 10;
-      if (package)
-       package = (Package *) realloc (package, maxpackages * sizeof (Package));
-      else
-       package = (Package *) malloc (maxpackages * sizeof (Package));
-    }
-  cp = package + npackages;
-  npackages ++;
-
-  memset (cp, 0, sizeof (Package));
-  cp->name = name;
-
-  trust = TRUST_CURR;
-
-  return cp;
-}
+categories
+ : STRING                      { iniBuilder->buildPackageCategory ($1); } categories
+ | STRING                      { iniBuilder->buildPackageCategory ($1); }
+ ;
+
+%%
This page took 0.027836 seconds and 5 git commands to generate.