add simple stats applet
parent
3e8e2b5622
commit
5ecc97e724
|
@ -24,7 +24,7 @@ endif
|
|||
progs-y += apk
|
||||
apk-objs := apk.o add.o del.o fix.o update.o info.o \
|
||||
search.o upgrade.o cache.o ver.o index.o fetch.o \
|
||||
audit.o verify.o dot.o policy.o
|
||||
audit.o verify.o dot.o policy.o stats.o
|
||||
|
||||
libapk.so-objs := common.o database.o package.o archive.o \
|
||||
version.o io.o url.o gunzip.o blob.o hash.o print.o \
|
||||
|
|
|
@ -651,7 +651,7 @@ static apk_blob_t atom_hash_get_key(apk_hash_item item)
|
|||
return ((struct apk_blob_atom *) item)->blob;
|
||||
}
|
||||
|
||||
static struct apk_hash atom_hash;
|
||||
struct apk_hash atom_hash;
|
||||
static struct apk_hash_ops atom_ops = {
|
||||
.node_offset = offsetof(struct apk_blob_atom, hash_node),
|
||||
.get_key = atom_hash_get_key,
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
/* stats.c - Alpine Package Keeper (APK)
|
||||
*
|
||||
* Copyright (C) 2013 Timo Teräs <timo.teras@iki.fi>
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation. See http://www.gnu.org/ for details.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "apk_defines.h"
|
||||
#include "apk_applet.h"
|
||||
#include "apk_database.h"
|
||||
|
||||
static int list_count(struct list_head *h)
|
||||
{
|
||||
struct list_head *n;
|
||||
int c = 0;
|
||||
|
||||
list_for_each(n, h)
|
||||
c++;
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
static int stats_main(void *ctx, struct apk_database *db, struct apk_string_array *args)
|
||||
{
|
||||
extern struct apk_hash atom_hash;
|
||||
|
||||
printf(
|
||||
"installed:\n"
|
||||
" packages: %d\n"
|
||||
" dirs: %d\n"
|
||||
" files: %d\n"
|
||||
" bytes: %zu\n"
|
||||
" triggers: %d\n"
|
||||
"available:\n"
|
||||
" names: %d\n"
|
||||
" packages: %d\n"
|
||||
"atoms:\n"
|
||||
" num: %d\n"
|
||||
,
|
||||
db->installed.stats.packages,
|
||||
db->installed.stats.dirs,
|
||||
db->installed.stats.files,
|
||||
db->installed.stats.bytes,
|
||||
list_count(&db->installed.triggers),
|
||||
db->available.names.num_items,
|
||||
db->available.packages.num_items,
|
||||
atom_hash.num_items
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct apk_applet stats_applet = {
|
||||
.name = "stats",
|
||||
.help = "Show statistics about repositories and installations",
|
||||
.open_flags = APK_OPENF_READ,
|
||||
.main = stats_main,
|
||||
};
|
||||
|
||||
APK_DEFINE_APPLET(stats_applet);
|
||||
|
||||
|
Loading…
Reference in New Issue