[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