aboutsummaryrefslogtreecommitdiffstats
path: root/src/jalv_console.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/jalv_console.c')
-rw-r--r--src/jalv_console.c43
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*