diff options
Diffstat (limited to 'src/dump.c')
-rw-r--r-- | src/dump.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/dump.c b/src/dump.c new file mode 100644 index 0000000..c09da8d --- /dev/null +++ b/src/dump.c @@ -0,0 +1,32 @@ +#include <stdio.h> +#include <assert.h> +#include <string.h> +#include <errno.h> +#include <sys/stat.h> + +#include "dump.h" +#include "package.h" + +static int foreach(struct package *p, char *name, char *path, void *u) { + struct stat st; + uint32_t size; + + if (stat(path, &st) < 0) { + if (errno == ENOENT) + size = 0; + else { + fprintf(stderr, "stat(%s) failed: %s\n", path, strerror(errno)); + return -1; + } + } else + size = (uint32_t) st.st_size; + + printf("%s (%u bytes)\n", name, size); + return 0; +} + +int dump(struct syrep_db_context *c) { + assert(c); + + return package_foreach(c->package, foreach, NULL); +} |