distroquery: convert from C to C++
This commit is contained in:
parent
772fd4d42b
commit
659b2ba778
@ -65,8 +65,9 @@ target_include_directories(distromatic PUBLIC
|
||||
#
|
||||
target_compile_options(distromatic PUBLIC -O2 -g -Wall -std=gnu11 -pedantic ${RPM_CFLAGS_OTHER})
|
||||
# -fno-toplevel-reorder
|
||||
|
||||
add_executable(distroquery
|
||||
distroquery.c
|
||||
distroquery.cpp
|
||||
functions.c
|
||||
headerlist.c
|
||||
requirelist.c
|
||||
@ -85,6 +86,7 @@ target_link_libraries(distroquery
|
||||
${LIBDW_LIBRARIES}
|
||||
${LIBIBERTY}
|
||||
)
|
||||
|
||||
target_include_directories(distroquery PUBLIC
|
||||
${RPM_INCLUDE_DIRS}
|
||||
${LIBREPO_INCLUDE_DIRS}
|
||||
|
@ -17,6 +17,8 @@
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <distroquery.hpp>
|
||||
|
||||
#include <getopt.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
@ -35,26 +37,23 @@
|
||||
#include <string.h>
|
||||
#include <linux/limits.h>
|
||||
#include <sqlite3.h>
|
||||
#include "distromatic.h"
|
||||
#include "config.h"
|
||||
#include "rpmfunctions.h"
|
||||
#include "functions.h"
|
||||
|
||||
// must be as big as ARCHS_MAX (5)
|
||||
const char* ARCHS[ARCHS_MAX] = { "x86_64", "aarch64", "i586", "arm", "" };
|
||||
|
||||
static struct configTag *firstconfigtag = NULL;
|
||||
char *query = "";
|
||||
char *query = (char*)"";
|
||||
char *query_package;
|
||||
char *query_repository = "base";
|
||||
char *query_repository = (char*)"base";
|
||||
char *query_arch = NULL;
|
||||
int query_compact = 0;
|
||||
int query_limit = 10;
|
||||
int query_offset = 0;
|
||||
char query_next[PATH_MAX] = "";
|
||||
char *reply_xmltag = "queryreply";
|
||||
char *reply_xmltag = (char*)"queryreply";
|
||||
int reply_plain = 0;
|
||||
char *lang = "";
|
||||
char *lang = (char*)"";
|
||||
int query_archs[ARCHS_MAX] = { 1, 0, 0, 0, 0 };
|
||||
char *query_path = NULL;
|
||||
|
||||
@ -78,7 +77,7 @@ char to_hex(char code) {
|
||||
/* Returns a url-encoded version of str */
|
||||
/* IMPORTANT: be sure to free() the returned string after use */
|
||||
char *url_encode(char *str) {
|
||||
char *pstr = str, *buf = malloc(strlen(str) * 3 + 1), *pbuf = buf;
|
||||
char *pstr = str, *buf = (char*)malloc(strlen(str) * 3 + 1), *pbuf = buf;
|
||||
while (*pstr) {
|
||||
if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~')
|
||||
*pbuf++ = *pstr;
|
||||
@ -95,8 +94,8 @@ char *url_encode(char *str) {
|
||||
/* Returns a url-decoded version of str */
|
||||
/* IMPORTANT: be sure to free() the returned string after use */
|
||||
char *url_decode(char *str) {
|
||||
if (!str) { char *buf=malloc(1); buf[0]=0; return buf; }
|
||||
char *pstr = str, *buf = malloc(strlen(str) + 1), *pbuf = buf;
|
||||
if (!str) { char *buf=(char*)malloc(1); buf[0]=0; return buf; }
|
||||
char *pstr = str, *buf = (char*)malloc(strlen(str) + 1), *pbuf = buf;
|
||||
while (*pstr) {
|
||||
if (*pstr == '%') {
|
||||
if (pstr[1] && pstr[2]) {
|
||||
@ -369,7 +368,7 @@ int findFileIdFromPath(sqlite3 *db, char** path) {
|
||||
char* pt;
|
||||
char buffer[PATH_MAX];
|
||||
char sql[PATH_MAX];
|
||||
char* linkpath = calloc(strlen(*path),1);
|
||||
char* linkpath = (char*)calloc(strlen(*path),1);
|
||||
sqlite3_stmt* stmt1;
|
||||
|
||||
printf("[<a href='javascript:distroquery_request(\"repository=%s&arch=%s&path=/\")'>ROOT</a>]",
|
||||
@ -512,7 +511,7 @@ void printQueryResponse() {
|
||||
snprintf(dbname, PATH_MAX, "%s%s-%s.db",
|
||||
query_repositories[i]->repository_dir, query_repositories[i]->tag, query_repositories[i]->arch[a]);
|
||||
if (sqlite3_open_v2(dbname, (sqlite3**)&query_repositories[i]->db[a], SQLITE_OPEN_READONLY, NULL)) {
|
||||
if (query_repositories[i]->db) sqlite3_close(query_repositories[i]->db[a]);
|
||||
if (query_repositories[i]->db) sqlite3_close((sqlite3*)query_repositories[i]->db[a]);
|
||||
query_repositories[i]->db[a] = NULL;
|
||||
fprintf(stderr, "ERROR: unable to open sqlite3 db %s; ignoring.\n", dbname);
|
||||
}
|
||||
@ -740,7 +739,7 @@ void printQueryResponse() {
|
||||
if (!query_repositories[i]->db[ARCHS_MAX]) {
|
||||
snprintf(dbname, PATH_MAX, "%s%s-sources.db", query_repositories[i]->repository_dir, query_repositories[i]->tag);
|
||||
if (sqlite3_open_v2(dbname, (sqlite3**)&query_repositories[i]->db[ARCHS_MAX], SQLITE_OPEN_READONLY, NULL)) {
|
||||
if (query_repositories[i]->db[ARCHS_MAX]) sqlite3_close(query_repositories[i]->db[ARCHS_MAX]);
|
||||
if (query_repositories[i]->db[ARCHS_MAX]) sqlite3_close((sqlite3*)query_repositories[i]->db[ARCHS_MAX]);
|
||||
query_repositories[i]->db[ARCHS_MAX] = NULL;
|
||||
fprintf(stderr, "ERROR: unable to open sqlite3 db %s; ignoring.\n", dbname);
|
||||
}
|
||||
@ -792,7 +791,7 @@ void printQueryResponse() {
|
||||
}
|
||||
sqlite3_finalize(statement);
|
||||
} else {
|
||||
fprintf(stderr, "ERROR: SQLite: %s (%s)\n", sqlite3_errmsg(query_repositories[i]->db[ARCHS_MAX]), sql);
|
||||
fprintf(stderr, "ERROR: SQLite: %s (%s)\n", sqlite3_errmsg((sqlite3*)query_repositories[i]->db[ARCHS_MAX]), sql);
|
||||
}
|
||||
if (localsourceresults >= query_limit) otherresults = 1;
|
||||
} /* repositories loop */
|
@ -477,12 +477,12 @@ strip_separators(char *st, const char *sepstr)
|
||||
}
|
||||
|
||||
humanDate *
|
||||
simpleTimeToTemplate(long calendartime, const char* template, humanDate * strdate)
|
||||
simpleTimeToTemplate(long calendartime, const char* templ, humanDate * strdate)
|
||||
{
|
||||
struct tm *ltime;
|
||||
|
||||
ltime = localtime((time_t *) & calendartime);
|
||||
strftime((char *) strdate, 16, template, ltime);
|
||||
strftime((char *) strdate, 16, templ, ltime);
|
||||
|
||||
return strdate;
|
||||
}
|
||||
|
33
src/include/distroquery.hpp
Normal file
33
src/include/distroquery.hpp
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* distroquery - tool for querying data generated by distromatic
|
||||
*
|
||||
* Copyright (C) 2024 by Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of version 2 of the GNU General Public License as published by the
|
||||
* Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY, to the extent permitted by law; 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.
|
||||
*/
|
||||
#define HDSIZE 16
|
||||
#define SSSIZE 24
|
||||
|
||||
extern "C" typedef char humanDate[HDSIZE];
|
||||
extern "C" typedef char sizeString[SSSIZE];
|
||||
|
||||
extern "C" char *humanSize(long long sbytes, sizeString *s);
|
||||
extern "C" humanDate *simpleTimeToTemplate(long calendartime, const char* templ, humanDate * strdate);
|
||||
extern "C" humanDate *simpleTimeToHuman(long calendartime, humanDate * strdate);
|
||||
extern "C" const char *htmlclean(const char *source,char *dest,unsigned int max);
|
||||
extern "C" const char *htmlcleanNoBr(const char *source,char *dest,unsigned int max);
|
||||
extern "C" int get_favicon_from_url(const char* url,char *buf,int bufsize);
|
||||
extern "C" void backtraceHandler(int sig);
|
||||
extern "C" struct configTag* findRepositoryByTag(const char *tag);
|
||||
extern "C" struct configTag* read_configuration(const char *confFile);
|
@ -30,8 +30,7 @@ void *memndup(void *memp, size_t size);
|
||||
void log_debug_set(int value);
|
||||
void logmsg(int level, const char *msg, ...);
|
||||
char *strip_separators(char *st, const char *sepstr);
|
||||
humanDate *
|
||||
simpleTimeToTemplate(long calendartime, const char* template, humanDate * strdate);
|
||||
humanDate *simpleTimeToTemplate(long calendartime, const char* templ, humanDate * strdate);
|
||||
humanDate *simpleTimeToHuman(long calendartime, humanDate * strdate);
|
||||
char *humanSize(long long sbytes, sizeString *s);
|
||||
void fprintf_depstable_filtered_var(FILE* f,char* st);
|
||||
|
Loading…
Reference in New Issue
Block a user