Diff for /rpm2html/sql.c between versions 1.35 and 1.36

version 1.35, 2000/11/18 14:28:24 version 1.36, 2000/11/18 18:22:15
Line 678  int sql_rebuild_vendors(void) { Line 678  int sql_rebuild_vendors(void) {
     return(0);      return(0);
 }  }
   
   int sql_rebuild_distributions(void) {
       const char *query =
   "CREATE TABLE Distributions ( \n\
       ID int(11) NOT NULL auto_increment, \n\
       Name varchar(255) NOT NULL, \n\
       URL varchar(255), \n\
       Key1 text, \n\
       Key2 text, \n\
       Key3 text, \n\
       Description text, \n\
       PRIMARY KEY (ID), \n\
       KEY Name (Name(10)) \n\
   )";
   
       if (mysql_query(sql,query)) {
           printf("sql_rebuild_ditributions: CREATE TABLE Distributions failed %s\n",
                  mysql_error(sql));
           return(-1);
       }
       return(0);
   }
   
 int sql_rebuild_mirrors(void) {  int sql_rebuild_mirrors(void) {
     const char *query =      const char *query =
 "CREATE TABLE Mirrors ( \n\  "CREATE TABLE Mirrors ( \n\
Line 863  int sql_check_tables(void) { Line 885  int sql_check_tables(void) {
     int packages = 0;      int packages = 0;
     int files = 0;      int files = 0;
     int queries = 0;      int queries = 0;
       int distributions = 0;
   
     int rebuilt = 0;      int rebuilt = 0;
   
Line 901  int sql_check_tables(void) { Line 924  int sql_check_tables(void) {
                 provides = 1;                  provides = 1;
             if (!strcmp(row[0], "Queries"))              if (!strcmp(row[0], "Queries"))
                 queries = 1;                  queries = 1;
               if (!strcmp(row[0], "Distributions"))
                   distributions = 1;
         }          }
         mysql_free_result(result);          mysql_free_result(result);
     }      }
Line 959  int sql_check_tables(void) { Line 984  int sql_check_tables(void) {
         if (!sql_rebuild_queries())          if (!sql_rebuild_queries())
             rebuilt++;              rebuilt++;
     }      }
       if (!distributions) {
           fprintf(stderr, "Table Distributions disapeared: rebuilding it\n");
           if (!sql_rebuild_distributions())
               rebuilt++;
       }
     return(rebuilt);      return(rebuilt);
 }  }
   
Line 1078  int sql_add_vendor(const char *Name, con Line 1108  int sql_add_vendor(const char *Name, con
     return(id);      return(id);
 }  }
   
   int sql_add_distribution(const char *Name, const char *URL, const char *Description) {
       int id;
   
       if (Name == NULL)
           return(-1);
   
       id = sql_get_key("Distributions", "Name", Name);
       if (id <= 0) {
           id = sql_blind_insert("Distributions", "Name", Name, 0);
           if (id <= 0)
               return(id);
       }
       if (URL != NULL)
           sql_update_id("Distributions", id, "URL", URL);
       if (Description != NULL)
           sql_update_id("Distributions", id,
                                      "Description", Description);
       
       return(id);
   }
   
   
 int sql_add_package(const char *filename,  int sql_add_package(const char *filename,
         const char *Name, const char *Version, const char *Release,          const char *Name, const char *Version, const char *Release,
Line 1085  int sql_add_package(const char *filename Line 1136  int sql_add_package(const char *filename
         int dist, const char *URL, const char *URLSrc, int vendor,          int dist, const char *URL, const char *URLSrc, int vendor,
         const char *Packager, const char *Category, const char *Summary,          const char *Packager, const char *Category, const char *Summary,
         const char *Description, const char *Copyright, int Date,          const char *Description, const char *Copyright, int Date,
         const char *Os) {          const char *Os, const char *Distribution) {
     int id;      int id;
     int nb_fields = 0;      int nb_fields = 0;
     char installed_filename[500];      char installed_filename[500];
Line 1143  int sql_add_package(const char *filename Line 1194  int sql_add_package(const char *filename
         str[29] = 0;          str[29] = 0;
         nb_fields += sql_update_id("Packages", id, "Date", str);          nb_fields += sql_update_id("Packages", id, "Date", str);
     }      }
     if (vendor > 0) {  
         char str[30];  
         snprintf(str, 30, "%d", vendor);  
         str[29] = 0;  
         nb_fields += sql_update_id("Packages", id, "Vendor", str);  
     }  
     if (Os != NULL)      if (Os != NULL)
         nb_fields += sql_update_id("Packages", id, "Os", Os);          nb_fields += sql_update_id("Packages", id, "Os", Os);
     if (Packager != NULL) {      if (Packager != NULL) {
Line 1161  int sql_add_package(const char *filename Line 1206  int sql_add_package(const char *filename
             nb_fields += sql_update_id("Packages", id, "Packager", str);              nb_fields += sql_update_id("Packages", id, "Packager", str);
         }          }
     }      }
       if (Distribution != NULL) {
           char str[30];
           int packager = sql_add_distribution(Distribution, NULL, NULL);
   
           if (packager > 0) {
               snprintf(str, 30, "%d", packager);
               str[29] = 0;
               nb_fields += sql_update_id("Packages", id, "Vendor", str);
           }
       }
       /***************
       if (vendor > 0) {
           char str[30];
           snprintf(str, 30, "%d", vendor);
           str[29] = 0;
           nb_fields += sql_update_id("Packages", id, "Vendor", str);
       }
        ***************/
           
     return(id);      return(id);
 }  }
Line 1388  rpmDirPtr sqlDirList[SQL_MAX_DISTRIBS]; Line 1451  rpmDirPtr sqlDirList[SQL_MAX_DISTRIBS];
 int sqlVendorListInitialized = 0;  int sqlVendorListInitialized = 0;
 int sqlVendorListLen;  int sqlVendorListLen;
 char **sqlVendorList;  char **sqlVendorList;
   int sqlDistributionListInitialized = 0;
   int sqlDistributionListLen;
   char **sqlDistributionList;
   
   char *
   sqlRpmAnalyzeDistributionRow(MYSQL_ROW row) {
       const char *id;
       const char *name;
       char **tmp;
       int distribution;
   
       if (row == NULL)
           return(NULL);
       id = row[0];
       name = row[1];
       if ((id == NULL) || (name == NULL))
           return(NULL);
   
       if (sscanf(id, "%d", &distribution) != 1)
           return(NULL);
       if ((distribution <= 0) || (distribution > 100000)) {
           fprintf(stderr, "Dist number out of range %d\n", distribution);
           return(NULL);
       }
       if (distribution >= sqlDistributionListLen) {
           int i = sqlDistributionListLen;
           sqlDistributionListLen = distribution + 100;
           tmp = (char **) debugRealloc(sqlDistributionList,
                                        (sqlDistributionListLen) * sizeof(char *));
           if (sqlDistributionList == NULL) {
               fprintf(stderr, "sqlInitSqlDistributionList Error: out of memory\n");
               return(NULL);
           }
           sqlDistributionList = tmp;
           memset(&sqlDistributionList[i], 0, sizeof(char *) * (sqlDistributionListLen - i));
       }
   
       sqlDistributionList[distribution] = debugStrdup(name);
       return(sqlDistributionList[distribution]);
   }
   
   void
   sqlInitSqlDistributionList(void) {
       MYSQL_RES *result;
       MYSQL_ROW row;
       char *query;
       int i;
   
       if (sqlDistributionListInitialized != 0)
           return;
   
       if (rpm2htmlVerbose)
           printf("sqlInitSqlDistributionList query\n");
   
       /*
        * Allocate the array
        */
       sqlDistributionListLen = 100;
       sqlDistributionList = (char **) debugMalloc((sqlDistributionListLen) * sizeof(char *));
       if (sqlDistributionList == NULL) {
           fprintf(stderr, "sqlInitSqlDistributionList Error: out of memory\n");
           return;
       }
       
       /*
        * query the database for the values
        */
       query = "select ID,Name from Distributions";
   
       if (mysql_query(sql,query)) {
           printf("sqlInitSqlDistributionList: SELECT from Distributions failed: %s\n",
                  mysql_error(sql));
           return;
       }
   
       i = 0;
       result = mysql_use_result(sql);
       if (result) {
           while((row = mysql_fetch_row(result)))
           {
               if (sqlRpmAnalyzeDistributionRow(row) != NULL)
                   i++;
           }
           mysql_free_result(result);
       }
       if(mysql_errno(sql)) {
           fprintf(stderr, "sqlInitSqlDistributionList Error: %s\n", mysql_error(sql));
           return;
       }
   
   
       if (rpm2htmlVerbose)
           printf("sqlInitSqlDistributionList done: %d entries\n", i);
       sqlDistributionListInitialized++;
       return;
   }
   
   
 char *  char *
 sqlRpmAnalyzeVendorRow(MYSQL_ROW row) {  sqlRpmAnalyzeVendorRow(MYSQL_ROW row) {
Line 1455  sqlInitSqlVendorList(void) { Line 1615  sqlInitSqlVendorList(void) {
     query = "select ID,Name from Vendors";      query = "select ID,Name from Vendors";
   
     if (mysql_query(sql,query)) {      if (mysql_query(sql,query)) {
         printf("sqlInitSqlVendorList: SELECT from Packages failed: %s\n",          printf("sqlInitSqlVendorList: SELECT from Vendors failed: %s\n",
                mysql_error(sql));                 mysql_error(sql));
         return;          return;
     }      }
Line 1621  sqlRpmAnalyzeRow(MYSQL_ROW row) { Line 1781  sqlRpmAnalyzeRow(MYSQL_ROW row) {
     const char *group;      const char *group;
     const char *os;      const char *os;
     const char *packager;      const char *packager;
       const char *vendor;
     int dist;      int dist;
   
     if (row == NULL)      if (row == NULL)
Line 1637  sqlRpmAnalyzeRow(MYSQL_ROW row) { Line 1798  sqlRpmAnalyzeRow(MYSQL_ROW row) {
     group = row[9];      group = row[9];
     os = row[10];      os = row[10];
     packager = row[11];      packager = row[11];
       vendor = row[12];
     if ((id == NULL) || (name == NULL) || (version == NULL) ||      if ((id == NULL) || (name == NULL) || (version == NULL) ||
         (release == NULL) || (arch == NULL) || (date == NULL) ||          (release == NULL) || (arch == NULL) || (date == NULL) ||
         (summary == NULL) || (filename == NULL) || (distrib == NULL))          (summary == NULL) || (filename == NULL) || (distrib == NULL))
Line 1668  sqlRpmAnalyzeRow(MYSQL_ROW row) { Line 1830  sqlRpmAnalyzeRow(MYSQL_ROW row) {
                 ret->vendor = debugStrdup(sqlVendorList[tmp]);                  ret->vendor = debugStrdup(sqlVendorList[tmp]);
         }          }
     }      }
       if (vendor != NULL) {
           int tmp = 0;
           sscanf(vendor, "%d", (int *) &tmp);
           if ((tmp > 0) && (tmp < sqlDistributionListLen)) {
               if (sqlVendorList[tmp] != NULL)
                   ret->distribution = debugStrdup(sqlDistributionList[tmp]);
           }
       }
     if (ret->vendor == NULL)      if (ret->vendor == NULL)
         ret->vendor =  debugStrdup("Unknown");          ret->vendor =  debugStrdup("Unknown");
     if (ret->distribution == NULL)      if (ret->distribution == NULL)
Line 1706  sqlRpmByDate(void) { Line 1876  sqlRpmByDate(void) {
   
     sqlInitSqlDirList();      sqlInitSqlDirList();
     sqlInitSqlVendorList();      sqlInitSqlVendorList();
       sqlInitSqlDistributionList();
     if (rpm2htmlVerbose)      if (rpm2htmlVerbose)
         printf("sqlRpmByDate query\n");          printf("sqlRpmByDate query\n");
   
Line 1755  sqlRpmAll(void) { Line 1926  sqlRpmAll(void) {
   
     sqlInitSqlDirList();      sqlInitSqlDirList();
     sqlInitSqlVendorList();      sqlInitSqlVendorList();
       sqlInitSqlDistributionList();
     if (rpm2htmlVerbose)      if (rpm2htmlVerbose)
         printf("sqlRpmAll query\n");          printf("sqlRpmAll query\n");
   
Line 2204  void sql_show_all(void) { Line 2376  void sql_show_all(void) {
     last = cur;      last = cur;
 #endif  #endif
   
       rpmDistribSort(&list, 0);
       dumpRpmByDistribs(list, 0);
   
   #ifdef SQL_DEBUG_TIMING
       cur = time(NULL);
       fprintf(stderr, "dumpRpmByDistribs took %d seconds\n", (int)(cur - last));
       last = cur;
   #endif
   
 }  }
   
 /************************************************************************  /************************************************************************

Removed from v.1.35  
changed lines
  Added in v.1.36


Webmaster