aboutsummaryrefslogtreecommitdiff
path: root/args.c
diff options
context:
space:
mode:
Diffstat (limited to 'args.c')
-rw-r--r--args.c64
1 files changed, 35 insertions, 29 deletions
diff --git a/args.c b/args.c
index 8c56da3..b992d7d 100644
--- a/args.c
+++ b/args.c
@@ -4,6 +4,7 @@
#include <getopt.h>
#include "args.h"
+#include "array.h"
void parse_args(client_state* state, int argc, char* argv[]) {
static struct option long_opts[] = {
@@ -15,41 +16,46 @@ void parse_args(client_state* state, int argc, char* argv[]) {
{"prompt", no_argument, 0, 'p'},
{"orderless", no_argument, 0, 'o'},
{"insensitive", no_argument, 0, 'i'},
+ {"starting-text", required_argument, 0, 's'},
{0, 0, 0, 0}
};
int opt;
int long_index = 0;
- while ((opt = getopt_long(argc, argv, "l:p:coievP", long_opts, &long_index)) != -1) {
+ while ((opt = getopt_long(argc, argv, "l:p:s:coievP", long_opts, &long_index)) != -1) {
switch (opt) {
- case 'l':
- state->lines = atoi(optarg);
- break;
- case 'p':
- state->prompt = optarg;
- break;
- case 'c':
- state->center = true;
- break;
- case 'e':
- state->exact_match = true;
- break;
- case 'v':
- state->verbose = true;
- break;
- case 'P':
- state->password = true;
- break;
- case 'o':
- state->orderless = true;
- break;
- case 'i':
- state->strstr = strcasestr;
- break;
- default:
- fprintf(stderr, "Usage: NOT WHAT YOU TYPED\n");
- fprintf(stderr, "%c\n", opt);
- break;
+ case 'l':
+ state->lines = MIN(atoi(optarg), array_size(state->items));
+ break;
+ case 'p':
+ state->prompt = optarg;
+ break;
+ case 'c':
+ state->center = true;
+ break;
+ case 'e':
+ state->exact_match = true;
+ break;
+ case 'v':
+ state->verbose = true;
+ break;
+ case 'P':
+ state->password = true;
+ break;
+ case 'o':
+ state->orderless = true;
+ break;
+ case 'i':
+ state->strstr = strcasestr;
+ break;
+ case 's':
+ array_insert_many(state->input_buffer, 0, optarg, strlen(optarg));
+ state->cursor_index = strlen(optarg);
+ break;
+ default:
+ fprintf(stderr, "Usage: NOT WHAT YOU TYPED\n");
+ fprintf(stderr, "%c\n", opt);
+ break;
}
}
}