tHandle multiple args for ACTION_INSTALL - pm - barely a pack manager
HTML git clone git://z3bra.org/pm
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit cf3db968258c30b55d3917616bb21df71acd40ed
DIR parent 40a21ff7404aca7885609396c77a85216b3cf895
HTML Author: z3bra <willyatmailoodotorg>
Date: Tue, 5 Jan 2016 01:00:52 +0100
Handle multiple args for ACTION_INSTALL
Multiple tarballs can now be installed with pm -a, by simply
passing more arguments on the command line.
All arguments passed after the flags are treated as tarballs.
Diffstat:
M pm.c | 31 +++++++++----------------------
1 file changed, 9 insertions(+), 22 deletions(-)
---
DIR diff --git a/pm.c b/pm.c
t@@ -25,13 +25,11 @@ struct pack {
/* possible actions */
enum {
+ ACTION_INVALID = -1,
ACTION_INSTALL = 0,
ACTION_DELETE = 1,
ACTION_UPDATE = 2,
ACTION_INSPECT = 3,
- ACTION_LIST_DEPS = 4,
- ACTION_LIST_REMOTE = 5,
- ACTION_INVALID = 6
};
/* error codes */
t@@ -565,12 +563,11 @@ main (int argc, char **argv)
{
char *n = NULL;
struct pack *p = NULL;
- uint8_t action = ACTION_INVALID;
+ uint8_t action = ACTION_INSPECT;
ARGBEGIN{
case 'a':
action = ACTION_INSTALL;
- n = EARGF(usage(argv0));
break;
case 'd':
action = ACTION_DELETE;
t@@ -581,24 +578,18 @@ main (int argc, char **argv)
if (argc > 1)
n = ARGF();
break;
- case 'h':
default:
- usage(argv0);
- return 0;
+ action = ACTION_INVALID;
}ARGEND;
- if (n)
- p = pack_load(n);
-
switch (action) {
-
case ACTION_INSTALL:
- if (!p)
- return ERR_PACKAGE_LOAD;
- if (metadata(PACKAGE_DATA, p) != 0)
- return ERR_METADATA;
- if (unpack(PACKAGE_ROOT, p->path) != 0)
- return ERR_UNPACK;
+ while(*argv) {
+ p = pack_load(*(argv++));
+ metadata(PACKAGE_DATA, p);
+ unpack(PACKAGE_ROOT, p->path);
+ pack_unload(p);
+ }
break;
case ACTION_DELETE:
t@@ -613,14 +604,10 @@ main (int argc, char **argv)
/* handle me, Octave */
case ACTION_UPDATE:
- case ACTION_LIST_DEPS:
- case ACTION_LIST_REMOTE:
default:
usage(argv0);
return ERR_INVALID_ACTION;
}
- pack_unload(p);
-
return 0;
}