tList files installed by a package - pm - barely a pack manager
(HTM) git clone git://z3bra.org/pm
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit fb204995f7751e8a1e834455275fbaa2f44f7bab
(DIR) parent 0979ad3342b23c9292a7effb32790d1ef6764468
(HTM) Author: z3bra <willyatmailoodotorg>
Date: Wed, 30 Dec 2015 15:57:32 +0100
List files installed by a package
Diffstat:
M pm.c | 36 +++++++++++++++++++++++++++----
1 file changed, 32 insertions(+), 4 deletions(-)
---
(DIR) diff --git a/pm.c b/pm.c
t@@ -51,6 +51,7 @@ int p_mkdir(char *dir, mode_t mode);
char *base_name(char *path);
int inspect(int fd, char *filename);
int list_local(const char *datadir);
+int list_content(const char *name);
int metadata(char *datadir, char *filename);
int pack(char *out, char **filename);
int unpack(char *root, char *in);
t@@ -177,6 +178,27 @@ list_local(const char *datadir)
}
/*
+ * List files installed by a package
+ */
+int
+list_content(const char *name)
+{
+ int fd;
+ char tmp[PATH_MAX];
+
+ snprintf(tmp, PATH_MAX, "%s/%s/files", PACKAGE_DATA, name);
+ if ((fd = open(tmp, O_RDONLY)) < 0) {
+ perror("open");
+ return -1;
+ }
+
+ while (read(fd, tmp, LINE_MAX))
+ printf("%s", tmp);
+
+ return 0;
+}
+
+/*
* write metadata about a package file
*
* TODO:
t@@ -475,7 +497,12 @@ main (int argc, char **argv)
n = EARGF(usage(argv0));
break;
case 'l':
- action = ACTION_LIST_LOCAL;
+ if (argc > 1) {
+ action = ACTION_LIST_FILES;
+ n = ARGF();
+ } else {
+ action = ACTION_LIST_LOCAL;
+ }
break;
case 'r':
action = ACTION_DELETE;
t@@ -498,6 +525,8 @@ main (int argc, char **argv)
return unpack(PACKAGE_ROOT, p->path);
fprintf(stderr, "could not write metadata for %s\n", p->name);
return ERR_METADATA;
+ case ACTION_DELETE:
+ return delete(PACKAGE_DATA, PACKAGE_ROOT, n);
case ACTION_INSPECT:
if (!p)
return ERR_PACKAGE_LOAD;
t@@ -508,11 +537,10 @@ main (int argc, char **argv)
return pack(p->path, argv);
case ACTION_LIST_LOCAL:
return list_local(PACKAGE_DATA);
- case ACTION_DELETE:
- return delete(PACKAGE_DATA, PACKAGE_ROOT, n);
+ case ACTION_LIST_FILES:
+ return list_content(n);
/* handle me, Octave */
case ACTION_UPDATE:
- case ACTION_LIST_FILES:
case ACTION_LIST_DEPS:
case ACTION_LIST_REMOTE:
default: