summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/main.c b/main.c
index 4a8fd98..a366ec9 100644
--- a/main.c
+++ b/main.c
@@ -4,23 +4,25 @@
int main(int argc, char **argv)
{
+ const char *arg0 = *argv++;
vect_t vect;
- if (argc != 8) {
- puts("takes exactly 7 args");
- return -1;
+ if (argc < 3)
+ goto usage;
+
+ vect.len = argc - 2;
+ vect.array = malloc(sizeof(int) * vect.len);
+
+ for (int i = 0; i < (signed)vect.len; ++i) {
+ vect.array[i] = atoi(*argv++);
}
- vect.array = malloc(sizeof(int) * 6);
- vect.array[0] = atoi(argv[1]);
- vect.array[1] = atoi(argv[2]);
- vect.array[2] = atoi(argv[3]);
- vect.array[3] = atoi(argv[4]);
- vect.array[4] = atoi(argv[5]);
- vect.array[5] = atoi(argv[6]);
- vect.len = 6;
- solve(&vect, atoi(argv[7]));
+ solve(&vect, atoi(*argv));
free(vect.array);
return 0;
+
+usage:
+ fprintf(stderr, "Usage: %s number ... result\n", arg0);
+ return -1;
}