diff options
| author | Jack Jamison <jackqjamison@gmail.com> | 2025-11-08 01:10:21 -0500 |
|---|---|---|
| committer | Jack Jamison <jackqjamison@gmail.com> | 2025-11-08 01:10:21 -0500 |
| commit | 6e038b0c45c1c2e351ce6ead8b80bc7b1031988f (patch) | |
| tree | f8504b39e3785591d991d04e84e0448b62207df1 /args.c | |
| parent | d4769b0f2e4012af5949651aca4f60ade5b97b54 (diff) | |
some quality of life
Diffstat (limited to 'args.c')
| -rw-r--r-- | args.c | 64 |
1 files changed, 35 insertions, 29 deletions
@@ -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; } } } |
