Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Report unique packages in the repos as well in 'pkg stats'
Marin Atanasov Nikolov committed 13 years ago
commit 5234750c72612b9ff3f1c31e3647d928b34bdfec
parent de51600b9e05f125d1a280c4809181113011b1d0
3 files changed +26 -11
modified libpkg/pkg.h
@@ -269,6 +269,7 @@ typedef enum _pkg_stats_t {
	PKG_STATS_LOCAL_COUNT = 0,
	PKG_STATS_LOCAL_SIZE,
	PKG_STATS_REMOTE_COUNT,
+
	PKG_STATS_REMOTE_UNIQUE,
	PKG_STATS_REMOTE_SIZE,
} pkg_stats_t;

modified libpkg/pkgdb.c
@@ -3320,37 +3320,49 @@ pkgdb_stats(struct pkgdb *db, pkg_stats_t type)
	
	switch(type) {
	case PKG_STATS_LOCAL_COUNT:
-
		sbuf_cat(sql, "SELECT COUNT(id) FROM main.packages;");
+
		sbuf_printf(sql, "SELECT COUNT(id) FROM main.packages;");
		break;
	case PKG_STATS_LOCAL_SIZE:
-
		sbuf_cat(sql, "SELECT SUM(flatsize) FROM main.packages;");
+
		sbuf_printf(sql, "SELECT SUM(flatsize) FROM main.packages;");
		break;
-
	case PKG_STATS_REMOTE_COUNT:
-
		sbuf_cat(sql, "SELECT COUNT(c) FROM ");
+
	case PKG_STATS_REMOTE_UNIQUE:
+
		sbuf_printf(sql, "SELECT COUNT(c) FROM ");

		/* open parentheses for the compound statement */
-
		sbuf_cat(sql, "(");
+
		sbuf_printf(sql, "(");

		/* execute on all databases */
-
		sql_on_all_attached_db(db->sqlite, sql, "SELECT origin AS c FROM '%1$s'.packages", " UNION ALL ");
+
		sql_on_all_attached_db(db->sqlite, sql, "SELECT origin AS c FROM '%1$s'.packages", " UNION ");

		/* close parentheses for the compound statement */
-
		sbuf_cat(sql, ")");
+
		sbuf_printf(sql, ");");
+
		break;
+
	case PKG_STATS_REMOTE_COUNT:
+
		sbuf_printf(sql, "SELECT COUNT(c) FROM ");
+
		
+
		/* open parentheses for the compound statement */
+
		sbuf_printf(sql, "(");
+
		
+
		/* execute on all databases */
+
		sql_on_all_attached_db(db->sqlite, sql, "SELECT origin AS c FROM '%1$s'.packages", " UNION ALL ");
+
		
+
		/* close parentheses for the compound statement */
+
		sbuf_printf(sql, ");");
		break;
	case PKG_STATS_REMOTE_SIZE:
-
		sbuf_cat(sql, "SELECT SUM(s) FROM ");
+
		sbuf_printf(sql, "SELECT SUM(s) FROM ");

		/* open parentheses for the compound statement */
-
		sbuf_cat(sql, "(");
+
		sbuf_printf(sql, "(");

		/* execute on all databases */
		sql_on_all_attached_db(db->sqlite, sql, "SELECT flatsize AS s FROM '%1$s'.packages", " UNION ALL ");

		/* close parentheses for the compound statement */
-
		sbuf_cat(sql, ")");
+
		sbuf_printf(sql, ");");
		break;
	}
-
	
+

	if (sqlite3_prepare_v2(db->sqlite, sbuf_data(sql), -1, &stmt, NULL) != SQLITE_OK) {
		ERROR_SQLITE(db->sqlite);
		return (-1);
@@ -3360,6 +3372,7 @@ pkgdb_stats(struct pkgdb *db, pkg_stats_t type)
		stats = sqlite3_column_int64(stmt, 0);
	}

+

	sbuf_finish(sql);
	sbuf_delete(sql);
	sqlite3_finalize(stmt);
modified pkg/stats.c
@@ -81,6 +81,7 @@ exec_stats(int argc, char **argv)

	printf("Remote package database(s):\n");
	printf("\tPackages available: %" PRId64 "\n", pkgdb_stats(db, PKG_STATS_REMOTE_COUNT));
+
	printf("\tUnique packages: %" PRId64 "\n", pkgdb_stats(db, PKG_STATS_REMOTE_UNIQUE));

	flatsize = pkgdb_stats(db, PKG_STATS_REMOTE_SIZE);
	humanize_number(size, sizeof(flatsize), flatsize, "B", HN_AUTOSCALE, 0);