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 |
|
|
} |
} |
|
|
/************************************************************************ |
/************************************************************************ |