distroquery: various fixes

This commit is contained in:
Silvan Calarco 2020-06-27 16:30:53 +02:00
parent 160acba232
commit ece2fe900b
3 changed files with 31 additions and 31 deletions

View File

@ -14,7 +14,8 @@ list(GET VERSION_LIST 1 RPM_VERSION_MINOR)
list(GET VERSION_LIST 2 RPM_VERSION_MICRO) list(GET VERSION_LIST 2 RPM_VERSION_MICRO)
add_compile_definitions( add_compile_definitions(
PACKAGE="Distromatic" PACKAGE="distromatic"
PACKAGE_NAME="Distromatic"
PACKAGE_VERSION="1.5.0" PACKAGE_VERSION="1.5.0"
DEFAULT_CONFIGFILE="/etc/distromatic.conf" DEFAULT_CONFIGFILE="/etc/distromatic.conf"
off64_t=__off64_t off64_t=__off64_t

View File

@ -112,7 +112,7 @@ int compareRequiredList(const void *ptr1, const void *ptr2);
int handleObsoletedPackages(struct configTag *ct, int arch); int handleObsoletedPackages(struct configTag *ct, int arch);
static const char *copyright[] = { static const char *copyright[] = {
PACKAGE " version " PACKAGE_VERSION, PACKAGE_NAME " version " PACKAGE_VERSION,
"Copyright (C) 2004-2020 by Silvan Calarco <silvan.calarco@mambasoft.it>", "Copyright (C) 2004-2020 by Silvan Calarco <silvan.calarco@mambasoft.it>",
"Copyright (C) 2006 by Davide Madrisan <davide.madrisan@gmail.com>", "Copyright (C) 2006 by Davide Madrisan <davide.madrisan@gmail.com>",
(char *)0 (char *)0

View File

@ -93,12 +93,12 @@ char query_next[PATH_MAX] = "";
char *reply_xmltag = "queryreply"; char *reply_xmltag = "queryreply";
int reply_plain = 0; int reply_plain = 0;
char *lang = ""; char *lang = "";
int query_archs[ARCHS_MAX] = { 1, 0, 0, 0, 0 }; int query_archs[ARCHS_MAX] = { 0, 1, 0, 0, 0 };
char *query_path = NULL; char *query_path = NULL;
struct configTag *query_repositories[100]; struct configTag *query_repositories[100];
int search_milestone1 = 0, search_milestone2 = 0, search_milestone3 = 1, search_devel = 1; int search_milestone1 = 0, search_milestone2 = 0, search_milestone3 = 0, search_devel = 1;
int search_sources = 0, searchbox = 0; int search_sources = 0, searchbox = 0;
int search_files = 0; int search_files = 0;
@ -186,12 +186,12 @@ void printRPMFlags(int flags) {
void printTagsLine(const char* arch, const char* tag, const char* group, const char* license) { void printTagsLine(const char* arch, const char* tag, const char* group, const char* license) {
if (!arch) if (!arch)
printf("<div style='display:inline;color:white;background-color:red'> %s </div>&nbsp;", _("Source")); printf("<div class='querytag querytag-red'> %s </div>&nbsp;", _("Source"));
else else
printf("<div style='display:inline;color:white;background-color:green'> %s </div>&nbsp;", arch); printf("<div class='querytag querytag-green'> %s </div>&nbsp;", arch);
printf("<div style='display:inline;color:black;background-color:yellow'> %s </div>&nbsp;" printf("<div class='querytag querytag-yellow'> %s </div>&nbsp;"
"<div style='display:inline;color:black;background-color:lightblue'>&nbsp%s&nbsp;</div>&nbsp;" "<div class='querytag querytag-lightblue'> %s </div>&nbsp;"
"<div style='display:inline;color:black;background-color:orange'>&nbsp%s&nbsp;</div>", "<div class='querytag querytag-orange'> %s </div>",
tag, group, license); tag, group, license);
} }
@ -442,7 +442,7 @@ void printFileBrowser() {
snprintf(sql, PATH_MAX, "SELECT * FROM files WHERE" snprintf(sql, PATH_MAX, "SELECT * FROM files WHERE"
" parent=%d" " parent=%d"
" ORDER BY name", startid); " ORDER BY name", startid);
printf("<table>"); printf("<table class='queryfiletable'>");
if (sqlite3_prepare_v2(dbf, sql, strlen(sql), &stmt1, NULL) == SQLITE_OK) { if (sqlite3_prepare_v2(dbf, sql, strlen(sql), &stmt1, NULL) == SQLITE_OK) {
while (sqlite3_step(stmt1) == SQLITE_ROW) { while (sqlite3_step(stmt1) == SQLITE_ROW) {
snprintf(sql, PATH_MAX, "SELECT * FROM packages_files_rel,fileusers,filegroups WHERE" snprintf(sql, PATH_MAX, "SELECT * FROM packages_files_rel,fileusers,filegroups WHERE"
@ -456,21 +456,18 @@ void printFileBrowser() {
cnt++; cnt++;
flags = sqlite3_column_int(stmt2,sqlite3_find_column_id(stmt2, "packages_files_rel", "flags")); flags = sqlite3_column_int(stmt2,sqlite3_find_column_id(stmt2, "packages_files_rel", "flags"));
if (flags >> 12 & 4) { if (flags >> 12 & 4) {
printf("<tr><td style=\"font-family:courier\">%s</td><td style=\"font-family:courier\">%s</td>" printf("<tr><td>%s</td><td>%s</td><td>%s</td><td width=50%%>"
"<td style=\"font-family:courier\">%s</td>"
"<td width=50%% style=\"font-family:courier\">"
"<a href='javascript:distroquery_request(\"repository=%s&arch=%s&path=%s/%s\")'>%s</a></td>", "<a href='javascript:distroquery_request(\"repository=%s&arch=%s&path=%s/%s\")'>%s</a></td>",
expandFileFlags(flags, sql),
sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "fileusers", "name")), sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "fileusers", "name")),
sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "filegroups", "name")), sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "filegroups", "name")),
expandFileFlags(flags, sql),
query_repository, query_repository,
query_arch, query_arch,
query_path, query_path,
sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, NULL, "name")), sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, NULL, "name")),
sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, NULL, "name"))); sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, NULL, "name")));
} else { } else {
printf("<tr><td style=\"font-family:courier\">%s</td><td style=\"font-family:courier\">%s</td>" printf("<tr><td>%s</td><td>%s</td><td>%s</td><td width=50%%>%s</td>",
"<td style=\"font-family:courier\">%s</td><td width=50%% style=\"font-family:courier\">%s</td>",
sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "fileusers", "name")), sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "fileusers", "name")),
sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "filegroups", "name")), sqlite3_column_text(stmt2,sqlite3_find_column_id(stmt2, "filegroups", "name")),
expandFileFlags(flags, sql), expandFileFlags(flags, sql),
@ -485,8 +482,8 @@ void printFileBrowser() {
sqlite3_finalize(stmt2); sqlite3_finalize(stmt2);
} }
if (cnt == 0) { if (cnt == 0) {
printf("<tr><td></td><td></td><td></td>" printf("<tr><td></td><td></td><td></td><td width=50%%>"
"<td width=50%% style=\"font-family:courier\"><a href='javascript:distroquery_request(\"repository=%s&arch=%s&path=%s/%s\")'>%s</a></td>" "<a href='javascript:distroquery_request(\"repository=%s&arch=%s&path=%s/%s\")'>%s</a></td>"
"<td></td></tr>", "<td></td></tr>",
query_repository, query_repository,
query_arch, query_arch,
@ -584,7 +581,7 @@ void printQueryResponse() {
query_repositories[i]->tag, query_repositories[i]->tag,
(const char*)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "groupdescr")), (const char*)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "groupdescr")),
(const char*)sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, NULL, "license"))); (const char*)sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, NULL, "license")));
printf("<br><img class=\"distroqueryimg16\" src=\"%s\" width=\"16\" height=\"16\">&nbsp;", buffer); printf("<br><br><img class=\"distroqueryimg16\" src=\"%s\" width=\"16\" height=\"16\">&nbsp;", buffer);
sqlite3_finalize(stmt1); sqlite3_finalize(stmt1);
} }
if (query_compact) { if (query_compact) {
@ -618,9 +615,10 @@ void printQueryResponse() {
sqlite3_column_text(statement,6), sqlite3_column_text(statement,6),
sqlite3_column_text(statement,1));*/ sqlite3_column_text(statement,1));*/
printf("<br>");
/* download */ /* download */
if (!query_repositories[i]->arch[a]) { if (!query_repositories[i]->arch[a]) {
printf("<div style='display:inline;background-color:green'>" printf("<div class='querytag querytag-green'>"
"&nbsp;<a href=\"%s%s/SRPMS.base/%s-%s-%s.src.rpm\" style=\"color:white\">%s</a>&nbsp;</div>", "&nbsp;<a href=\"%s%s/SRPMS.base/%s-%s-%s.src.rpm\" style=\"color:white\">%s</a>&nbsp;</div>",
query_repositories[i]->download_prefix, query_repositories[i]->download_prefix,
query_repositories[i]->download_dir, query_repositories[i]->download_dir,
@ -629,10 +627,11 @@ void printQueryResponse() {
sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "release")), sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "release")),
_("Download")); _("Download"));
} else { } else {
printf("<div style='display:inline;background-color:green'>" printf("<div class='querytag querytag-green'>"
"&nbsp;<a href=\"%s%s/SRPMS.base/%s-%s-%s.%s.rpm\" style=\"color:white\">%s</a>&nbsp;</div>", "&nbsp;<a href=\"%s%s/RPMS.%s/%s-%s-%s.%s.rpm\" style=\"color:white\">%s</a>&nbsp;</div>",
query_repositories[i]->download_prefix, query_repositories[i]->download_prefix,
query_repositories[i]->download_dir, query_repositories[i]->download_dir,
query_repositories[i]->arch[a],
sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "name")), sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "name")),
sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "version")), sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "version")),
sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "release")), sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "release")),
@ -641,7 +640,7 @@ void printQueryResponse() {
} }
/* details */ /* details */
printf("&nbsp;<div style='display:inline;background-color:lightblue;font-weight:strong'>" printf("&nbsp;<div class='querytag querytag-lightblue'>"
"&nbsp;<a href=#reply onclick='distroquery_request(" "&nbsp;<a href=#reply onclick='distroquery_request("
"\"repository=%s&package=%s&arch=%s\")' style=\"color:black\">%s</a>&nbsp;</div>", "\"repository=%s&package=%s&arch=%s\")' style=\"color:black\">%s</a>&nbsp;</div>",
query_repositories[i]->tag, query_repositories[i]->tag,
@ -1153,7 +1152,7 @@ void printPackageData() {
htmlclean((const char*)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "description")),buffer,PATH_MAX)); htmlclean((const char*)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "description")),buffer,PATH_MAX));
/* download */ /* download */
printf("<div style='display:inline;background-color:green'>" printf("<div class='querytag querytag-green'>"
"&nbsp;<a href=\"%s%s/RPMS.%s/%s-%s-%s.%s.rpm\" style=\"color:white\">%s</a>&nbsp;</div>", "&nbsp;<a href=\"%s%s/RPMS.%s/%s-%s-%s.%s.rpm\" style=\"color:white\">%s</a>&nbsp;</div>",
ct->download_prefix, ct->download_prefix,
ct->download_dir, ct->download_dir,
@ -1164,7 +1163,7 @@ void printPackageData() {
query_arch, query_arch,
_("Download")); _("Download"));
printf("<hr><br><b>%s:</b>",_("Developers details")); printf("<br><br><hr><br><b>%s:</b>",_("Developers details"));
printf("<br>%s:", _("Source package")); printf("<br>%s:", _("Source package"));
printf(" <a href=#reply onclick='distroquery_request(\"repository=%s&package=%s\")'>%s</a>", printf(" <a href=#reply onclick='distroquery_request(\"repository=%s&package=%s\")'>%s</a>",
@ -1317,17 +1316,17 @@ void printPackageData() {
/* files list */ /* files list */
snprintf(dbname, PATH_MAX, "%s%s-%s-files.db", ct->repository_dir, ct->tag, query_arch); snprintf(dbname, PATH_MAX, "%s%s-%s-files.db", ct->repository_dir, ct->tag, query_arch);
if (!sqlite3_open_v2(dbname, &dbf, SQLITE_OPEN_READONLY, NULL)) { if (!sqlite3_open_v2(dbname, &dbf, SQLITE_OPEN_READONLY, NULL)) {
printf("<br><br>%s:<br><table>", _("Files list")); printf("<br><br>%s:<br><table class='queryfiletable'>", _("Files list"));
snprintf(sql, PATH_MAX, "SELECT * FROM packages_files_rel,fileusers,filegroups WHERE" snprintf(sql, PATH_MAX, "SELECT * FROM packages_files_rel,fileusers,filegroups WHERE"
" packages_files_rel.name='%s' AND" " packages_files_rel.name='%s' AND"
" packages_files_rel.id_user=fileusers.id AND " " packages_files_rel.id_user=fileusers.id AND "
" packages_files_rel.id_group=filegroups.id", query_package); " packages_files_rel.id_group=filegroups.id", query_package);
if (sqlite3_prepare_v2(dbf, sql, strlen(sql), &stmt1, NULL) == SQLITE_OK) { if (sqlite3_prepare_v2(dbf, sql, strlen(sql), &stmt1, NULL) == SQLITE_OK) {
while (sqlite3_step(stmt1) == SQLITE_ROW) { while (sqlite3_step(stmt1) == SQLITE_ROW) {
printf("<tr><td style=\"font-family:courier\">%s</td><td style=\"font-family:courier\">%s</td><td style=\"font-family:courier\">%s</td><td>%s</td></tr>", printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
expandFileFlags(sqlite3_column_int(stmt1,sqlite3_find_column_id(stmt1, NULL, "flags")), sql),
sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, "fileusers", "name")), sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, "fileusers", "name")),
sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, "filegroups", "name")), sqlite3_column_text(stmt1,sqlite3_find_column_id(stmt1, "filegroups", "name")),
expandFileFlags(sqlite3_column_int(stmt1,sqlite3_find_column_id(stmt1, NULL, "flags")), sql),
resolveFilePath(dbf, sqlite3_column_int(stmt1,sqlite3_find_column_id(stmt1, NULL, "id_file")), buffer)); resolveFilePath(dbf, sqlite3_column_int(stmt1,sqlite3_find_column_id(stmt1, NULL, "id_file")), buffer));
} }
sqlite3_finalize(stmt1); sqlite3_finalize(stmt1);
@ -1422,7 +1421,7 @@ void printSourcePackageData() {
htmlclean((char *)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "description")),buffer,PATH_MAX)); htmlclean((char *)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "description")),buffer,PATH_MAX));
/* download */ /* download */
printf("<div style='display:inline;background-color:red'>" printf("<div class='querytag querytag-red'>"
"&nbsp;<a href=\"%s%s/SRPMS.base/%s-%s-%s.src.rpm\" style=\"color:white\">%s</a>&nbsp;</div>", "&nbsp;<a href=\"%s%s/SRPMS.base/%s-%s-%s.src.rpm\" style=\"color:white\">%s</a>&nbsp;</div>",
ct->download_prefix, ct->download_prefix,
ct->download_dir, ct->download_dir,
@ -1431,7 +1430,7 @@ void printSourcePackageData() {
(char *)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "release")), (char *)sqlite3_column_text(statement,sqlite3_find_column_id(statement, NULL, "release")),
_("Download")); _("Download"));
printf("<hr><br><b>%s:</b>", _("Developers details")); printf("<br><br><hr><br><b>%s:</b>", _("Developers details"));
printf("<br>%s: %s", _("Maintainer"), (char *)sqlite3_column_text(statement,sqlite3_find_column_id(statement, "packagers", "name"))); printf("<br>%s: %s", _("Maintainer"), (char *)sqlite3_column_text(statement,sqlite3_find_column_id(statement, "packagers", "name")));
printf("<br>%s: %s", _("Build date"), printf("<br>%s: %s", _("Build date"),
@ -1626,7 +1625,6 @@ main(int argc, char *argv[])
// install backtrace handler // install backtrace handler
signal(SIGSEGV, backtraceHandler); signal(SIGSEGV, backtraceHandler);
firstconfigtag = read_configuration(DEFAULT_CONFIGFILE); firstconfigtag = read_configuration(DEFAULT_CONFIGFILE);
if (!firstconfigtag) { if (!firstconfigtag) {
fprintf(stderr, "Fatal error while parsing config file " DEFAULT_CONFIGFILE "; aborting.\n"); fprintf(stderr, "Fatal error while parsing config file " DEFAULT_CONFIGFILE "; aborting.\n");
@ -1645,6 +1643,7 @@ main(int argc, char *argv[])
setlocale(LC_ALL, lang); setlocale(LC_ALL, lang);
bindtextdomain(PACKAGE, LOCALEDIR); bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE); textdomain(PACKAGE);
if (query_package && strlen(query_package)) { if (query_package && strlen(query_package)) {