mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Add packages' provides and replaces to the blacklist in aurblup.
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
This commit is contained in:
parent
48957ef5d5
commit
ddc54358d0
1 changed files with 27 additions and 11 deletions
|
@ -15,6 +15,7 @@
|
||||||
#define mysql_die(...) die(__VA_ARGS__, mysql_error(c));
|
#define mysql_die(...) die(__VA_ARGS__, mysql_error(c));
|
||||||
|
|
||||||
void die(const char *, ...);
|
void die(const char *, ...);
|
||||||
|
void blacklist_add(const char *);
|
||||||
void blacklist_sync(alpm_list_t *);
|
void blacklist_sync(alpm_list_t *);
|
||||||
alpm_list_t *get_package_list(alpm_list_t *);
|
alpm_list_t *get_package_list(alpm_list_t *);
|
||||||
alpm_list_t *create_db_list(void);
|
alpm_list_t *create_db_list(void);
|
||||||
|
@ -44,12 +45,26 @@ die(const char *format, ...)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
blacklist_add(const char *name)
|
||||||
|
{
|
||||||
|
char *esc = malloc(strlen(name) * 2 + 1);
|
||||||
|
char query[1024];
|
||||||
|
|
||||||
|
mysql_real_escape_string(c, esc, name, strlen(name));
|
||||||
|
*(esc + strcspn(esc, "<=>")) = 0;
|
||||||
|
snprintf(query, 1024, "INSERT IGNORE INTO PackageBlacklist (Name) "
|
||||||
|
"VALUES ('%s');", esc);
|
||||||
|
free(esc);
|
||||||
|
|
||||||
|
if (mysql_query(c, query))
|
||||||
|
mysql_die("failed to query MySQL database (\"%s\"): %s\n", query);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
blacklist_sync(alpm_list_t *pkgs)
|
blacklist_sync(alpm_list_t *pkgs)
|
||||||
{
|
{
|
||||||
alpm_list_t *r;
|
alpm_list_t *r, *p;
|
||||||
char *se;
|
|
||||||
char query[1024];
|
|
||||||
|
|
||||||
if (mysql_query(c, "LOCK TABLES PackageBlacklist WRITE;"))
|
if (mysql_query(c, "LOCK TABLES PackageBlacklist WRITE;"))
|
||||||
mysql_die("failed to lock MySQL table: %s\n");
|
mysql_die("failed to lock MySQL table: %s\n");
|
||||||
|
@ -58,16 +73,17 @@ blacklist_sync(alpm_list_t *pkgs)
|
||||||
mysql_die("failed to clear MySQL table: %s\n");
|
mysql_die("failed to clear MySQL table: %s\n");
|
||||||
|
|
||||||
for (r = pkgs; r; r = alpm_list_next(r)) {
|
for (r = pkgs; r; r = alpm_list_next(r)) {
|
||||||
const char *s = alpm_pkg_get_name(alpm_list_getdata(r));
|
pmpkg_t *pkg = alpm_list_getdata(r);
|
||||||
|
|
||||||
se = malloc(strlen(s) * 2 + 1);
|
blacklist_add(alpm_pkg_get_name(pkg));
|
||||||
mysql_real_escape_string(c, se, s, strlen(s));
|
|
||||||
snprintf(query, 1024, "INSERT INTO PackageBlacklist (Name) "
|
|
||||||
"VALUES ('%s');", se);
|
|
||||||
free(se);
|
|
||||||
|
|
||||||
if (mysql_query(c, query))
|
for (p = alpm_pkg_get_provides(pkg); p; p = alpm_list_next(p)) {
|
||||||
mysql_die("failed to query MySQL database (\"%s\"): %s\n", query);
|
blacklist_add(alpm_list_getdata(p));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (p = alpm_pkg_get_replaces(pkg); p; p = alpm_list_next(p)) {
|
||||||
|
blacklist_add(alpm_list_getdata(p));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mysql_query(c, "UNLOCK TABLES;"))
|
if (mysql_query(c, "UNLOCK TABLES;"))
|
||||||
|
|
Loading…
Add table
Reference in a new issue