aboutsummaryrefslogtreecommitdiffstats
path: root/src/jalv_console.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-08-21 05:00:54 +0000
committerDavid Robillard <d@drobilla.net>2011-08-21 05:00:54 +0000
commitbdfc77e8cd8a586e535f5eab109dd0411e0554a0 (patch)
treedbd5aca9ff69682c4a67e5441f024e47f0f07604 /src/jalv_console.c
parent6084d3995a42001b1169cc3e8d50c4b7acf0deb6 (diff)
downloadjalv-bdfc77e8cd8a586e535f5eab109dd0411e0554a0.tar.gz
jalv-bdfc77e8cd8a586e535f5eab109dd0411e0554a0.tar.bz2
jalv-bdfc77e8cd8a586e535f5eab109dd0411e0554a0.zip
Preliminary support for Jack Session and LV2 Persist.
Real command line argument support. git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@3441 a436a847-0d15-0410-975c-d299462d15a1
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*