[Midnightbsd-cvs] src [7348] trunk/lib/libmport: add an initial statistics api
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Oct 17 21:03:43 EDT 2015
Revision: 7348
http://svnweb.midnightbsd.org/src/?rev=7348
Author: laffer1
Date: 2015-10-17 21:03:42 -0400 (Sat, 17 Oct 2015)
Log Message:
-----------
add an initial statistics api
Modified Paths:
--------------
trunk/lib/libmport/instance.c
trunk/lib/libmport/mport.h
Added Paths:
-----------
trunk/lib/libmport/stats.c
Modified: trunk/lib/libmport/instance.c
===================================================================
--- trunk/lib/libmport/instance.c 2015-10-06 21:37:46 UTC (rev 7347)
+++ trunk/lib/libmport/instance.c 2015-10-18 01:03:42 UTC (rev 7348)
@@ -38,7 +38,8 @@
#include "mport_private.h"
/* allocate mem for a mportInstance */
-MPORT_PUBLIC_API mportInstance * mport_instance_new(void)
+MPORT_PUBLIC_API mportInstance *
+mport_instance_new(void)
{
return (mportInstance *)calloc(1, sizeof(mportInstance));
}
Modified: trunk/lib/libmport/mport.h
===================================================================
--- trunk/lib/libmport/mport.h 2015-10-06 21:37:46 UTC (rev 7347)
+++ trunk/lib/libmport/mport.h 2015-10-18 01:03:42 UTC (rev 7348)
@@ -231,5 +231,16 @@
int mport_lock_unlock(mportInstance *, mportPackageMeta *);
int mport_lock_islocked(mportPackageMeta *);
+/* Statistics */
+typedef struct {
+ unsigned int pkg_installed;
+ unsigned int pkg_available;
+ /* off_t pkg_installed_size;
+ off_t pkg_available_size; */
+} mportStats;
+
+int mport_stats(mportInstance *, mportStats **);
+int mport_stats_free(mportStats *);
+mportStats * mport_stats_new(void);
+
#endif /* ! defined _MPORT_H */
-
Added: trunk/lib/libmport/stats.c
===================================================================
--- trunk/lib/libmport/stats.c (rev 0)
+++ trunk/lib/libmport/stats.c 2015-10-18 01:03:42 UTC (rev 7348)
@@ -0,0 +1,63 @@
+#include <sys/cdefs.h>
+__MBSDID("$MidnightBSD$");
+
+#include <sys/cdefs.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <assert.h>
+#include "mport.h"
+#include "mport_private.h"
+
+/* allocate mem for a mportInstance */
+MPORT_PUBLIC_API mportStats *
+mport_stats_new(void)
+{
+ return (mportStats *)calloc(1, sizeof(mportStats));
+}
+
+MPORT_PUBLIC_API int
+mport_stats_free(mportStats *stats)
+{
+ free(stats);
+ return MPORT_OK;
+}
+
+MPORT_PUBLIC_API mport_stats *
+mport_stats(mportInstance *mport, mportStats **stats)
+{
+ sqlite3_stmt *stmt;
+ sqlite3 *db = mport->db;
+ int len, ret;
+ mportStats *s;
+
+ if ((s = mport_stats_new()) == NULL)
+ RETURN_ERROR(MPORT_ERR_FATAL, "Out of memory.");
+
+ *stats = s;
+
+ if (mport_db_prepare(db, &stmt, "SELECT COUNT(*) FROM packages") != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+
+ if (sqlite3_step(stmt) != SQLITE_ROW) {
+ sqlite3_finalize(stmt);
+ RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ }
+
+ s->pkg_installed = sqlite3_column_int(stmt, 0);
+ sqlite3_finalize(stmt);
+
+ if (mport_db_prepare(db, &stmt, "SELECT COUNT(*) FROM idx.packages") != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+
+ if (sqlite3_step(stmt) != SQLITE_ROW) {
+ sqlite3_finalize(stmt);
+ RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ }
+
+ s->pkg_available = sqlite3_column_int(stmt, 0);
+ sqlite3_finalize(stmt);
+
+ return (MPORT_OK);
+}
More information about the Midnightbsd-cvs
mailing list