diff options
Diffstat (limited to 'src/jalv_console.c')
-rw-r--r-- | src/jalv_console.c | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/src/jalv_console.c b/src/jalv_console.c index 48c3ed3..6c0addd 100644 --- a/src/jalv_console.c +++ b/src/jalv_console.c @@ -14,14 +14,53 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#define _XOPEN_SOURCE 500 + +#include <string.h> +#include <stdbool.h> #include <stdio.h> #include "jalv-config.h" #include "jalv_internal.h" -void -jalv_init(int* argc, char*** argv) +static int +print_usage(const char* name, bool error) { + FILE* const os = error ? stderr : stdout; + fprintf(os, "Usage: %s [OPTION...] PLUGIN_URI\n", name); + fprintf(os, "Run an LV2 plugin as a Jack application.\n"); + fprintf(os, " -h Display this help and exit\n"); + fprintf(os, " -u UUID UUID for Jack session restoration\n"); + fprintf(os, " -l DIR Load state from save directory\n"); + return error ? 1 : 0; +} + +int +jalv_init(int* argc, char*** argv, JalvOptions* opts) +{ + int a = 1; + for (; a < *argc && (*argv)[a][0] == '-'; ++a) { + if ((*argv)[a][1] == 'h') { + return print_usage((*argv)[0], false); + } else if ((*argv)[a][1] == 'u') { + if (++a == *argc) { + fprintf(stderr, "Missing argument for -u\n"); + return 1; + } + opts->uuid = strdup((*argv)[a]); + } else if ((*argv)[a][1] == 'l') { + if (++a == *argc) { + fprintf(stderr, "Missing argument for -l\n"); + return 1; + } + opts->load = strdup((*argv)[a]); + } else { + fprintf(stderr, "Unknown option %s\n", (*argv)[a]); + return print_usage((*argv)[0], true); + } + } + + return 0; } LilvNode* |