aboutsummaryrefslogtreecommitdiffstats
path: root/src/satrm.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@member.fsf.org>2015-12-25 22:06:56 +0100
committerMattias Andrée <maandree@member.fsf.org>2015-12-25 22:06:56 +0100
commit196abe367c46cf3c2337b4b1da8bb2c084065c7d (patch)
tree1c55433b9195b6c398ab3ab26a867d0b794ed806 /src/satrm.c
parentimprove send_command (diff)
downloadsat-196abe367c46cf3c2337b4b1da8bb2c084065c7d.tar.gz
sat-196abe367c46cf3c2337b4b1da8bb2c084065c7d.tar.bz2
sat-196abe367c46cf3c2337b4b1da8bb2c084065c7d.tar.xz
satr run select jobs + satrm can remove multiple jobs
Signed-off-by: Mattias Andrée <maandree@member.fsf.org>
Diffstat (limited to '')
-rw-r--r--src/satrm.c32
1 files changed, 27 insertions, 5 deletions
diff --git a/src/satrm.c b/src/satrm.c
index b3dafcd..8097b18 100644
--- a/src/satrm.c
+++ b/src/satrm.c
@@ -40,7 +40,7 @@ char *argv0 = "satrm";
static void
usage(void)
{
- fprintf(stderr, "usage: %s JOB-ID\n",
+ fprintf(stderr, "usage: %s JOB-ID...\n",
strrchr(argv0) ? (strrchr(argv0) + 1) : argv0);
exit(2);
}
@@ -60,11 +60,33 @@ usage(void)
int
main(int argc, char *argv[])
{
- if (argc > 0) argv0 = argv[0];
- if (argc != 2) usage();
+ size_t n;
+ char *msg;
+ int i;
- if (send_command(SAT_REMOVE, 0, argv[1]))
- return errno ? (perror(argv0), 1) : 3;
+ if (argc > 0) argv0 = argv[0];
+ if (argc < 2) usage();
+ if (!strcmp(argv[1], "--")
+ argv++, argc--;
+ for (i = 1; i < argc; i++)
+ if (argv[i][0] == '-')
+ usage();
+
+ if (!(msg = malloc(n = measure_array(argv + 1))))
+ goto fail;
+ store_array(msg, argv + 1);
+
+ if (send_command(SAT_REMOVE, n, msg)) {
+ if (errno)
+ goto fail;
+ free(msg);
+ return 3;
+ }
return 0;
+
+fail:
+ perror(*argv);
+ free(msg);
+ return 1;
}