From 46ca578fb088ecd8598867b2835dadc0aa3bcb25 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 13:21:01 -0500 Subject: [PATCH 1/9] removes -M ("memory madness") --- include/vere/vere.h | 1 - vere/main.c | 8 +------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/include/vere/vere.h b/include/vere/vere.h index a584de1c01..ddff352518 100644 --- a/include/vere/vere.h +++ b/include/vere/vere.h @@ -515,7 +515,6 @@ c3_o nuu; // -c, new pier c3_o qui; // -q, quiet c3_o vno; // -V, turn on +verb - c3_o mem; // -M, memory madness c3_o rep; // -R, report build info } u3_opts; diff --git a/vere/main.c b/vere/main.c index 223392c9bf..1c50534b8e 100644 --- a/vere/main.c +++ b/vere/main.c @@ -78,16 +78,11 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.veb = c3n; u3_Host.ops_u.qui = c3n; u3_Host.ops_u.nuu = c3n; - u3_Host.ops_u.mem = c3n; u3_Host.ops_u.rep = c3n; u3_Host.ops_u.kno_w = DefaultKernel; - while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:n:p:LSabcdgmqvxFMPDXR")) != -1 ) { + while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:n:p:LSabcdgmqvxFPDXR")) != -1 ) { switch ( ch_i ) { - case 'M': { - u3_Host.ops_u.mem = c3y; - break; - } case 'B': { u3_Host.ops_u.pil_c = strdup(optarg); break; @@ -292,7 +287,6 @@ u3_ve_usage(c3_i argc, c3_c** argv) "-x Exit immediately\n", "-r host Initial peer address\n", "-l port Initial peer port\n", - "-M Memory madness\n", "-f Fuzz testing\n", "-k stage Start at Hoon kernel version stage\n", "-R Report urbit build info\n", From cb0c679e6cd1987188c3c4f1df66dbe2bf4fb8e2 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 13:22:39 -0500 Subject: [PATCH 2/9] removes -X ("skip last event") --- include/vere/vere.h | 1 - vere/main.c | 10 ++-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/include/vere/vere.h b/include/vere/vere.h index ddff352518..f0c07aab2c 100644 --- a/include/vere/vere.h +++ b/include/vere/vere.h @@ -507,7 +507,6 @@ c3_o dem; // -d, daemon c3_o dry; // -D, dry compute, no checkpoint c3_o tex; // -x, exit after loading - c3_o fog; // -X, skip last event c3_o fak; // -F, fake carrier c3_o loh; // -L, local-only networking c3_o pro; // -P, profile diff --git a/vere/main.c b/vere/main.c index 1c50534b8e..153765df93 100644 --- a/vere/main.c +++ b/vere/main.c @@ -69,7 +69,6 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.gab = c3n; u3_Host.ops_u.loh = c3n; u3_Host.ops_u.dem = c3n; - u3_Host.ops_u.fog = c3n; u3_Host.ops_u.fak = c3n; u3_Host.ops_u.tex = c3n; u3_Host.ops_u.pro = c3n; @@ -81,7 +80,7 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.rep = c3n; u3_Host.ops_u.kno_w = DefaultKernel; - while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:n:p:LSabcdgmqvxFPDXR")) != -1 ) { + while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:n:p:LSabcdgmqvxFPDR")) != -1 ) { switch ( ch_i ) { case 'B': { u3_Host.ops_u.pil_c = strdup(optarg); @@ -104,10 +103,6 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.tex = c3y; break; } - case 'X': { - u3_Host.ops_u.fog = c3y; - break; - } case 'f': { if ( c3n == _main_readw(optarg, 100, &u3_Host.ops_u.fuz_w) ) { return c3n; @@ -289,8 +284,7 @@ u3_ve_usage(c3_i argc, c3_c** argv) "-l port Initial peer port\n", "-f Fuzz testing\n", "-k stage Start at Hoon kernel version stage\n", - "-R Report urbit build info\n", - "-Xwtf Skip last event\n"}; + "-R Report urbit build info\n"}; #else c3_c *use_c[] = { "simple usage: \n", From 81a5193255a98bc52516a584d41da8bde00b15be Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 13:28:12 -0500 Subject: [PATCH 3/9] removes -n ("unix hostname", for raft) --- include/vere/vere.h | 1 - vere/main.c | 22 +--------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/include/vere/vere.h b/include/vere/vere.h index f0c07aab2c..74134a510b 100644 --- a/include/vere/vere.h +++ b/include/vere/vere.h @@ -491,7 +491,6 @@ /* u3_opts: command line configuration. */ typedef struct _u3_opts { - c3_c* nam_c; // -n, unix hostname c3_c* who_c; // -w, begin with ticket c3_c* tic_c; // -t, ticket value c3_c* pil_c; // -B, bootstrap from diff --git a/vere/main.c b/vere/main.c index 153765df93..464c2b0be5 100644 --- a/vere/main.c +++ b/vere/main.c @@ -38,8 +38,6 @@ _main_readw(const c3_c* str_c, c3_w max_w, c3_w* out_w) else return c3n; } -static c3_c hostbuf[2048]; // kill me - /* _main_presig(): prefix optional sig. */ c3_c* @@ -80,7 +78,7 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.rep = c3n; u3_Host.ops_u.kno_w = DefaultKernel; - while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:n:p:LSabcdgmqvxFPDR")) != -1 ) { + while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:p:LSabcdgmqvxFPDR")) != -1 ) { switch ( ch_i ) { case 'B': { u3_Host.ops_u.pil_c = strdup(optarg); @@ -115,10 +113,6 @@ _main_getopt(c3_i argc, c3_c** argv) } break; } - case 'n': { - u3_Host.ops_u.nam_c = strdup(optarg); - break; - } case 'p': { if ( c3n == _main_readw(optarg, 65536, &arg_w) ) { return c3n; @@ -222,19 +216,6 @@ _main_getopt(c3_i argc, c3_c** argv) } } - if ( u3_Host.ops_u.nam_c == 0 ) { - u3_Host.ops_u.nam_c = getenv("HOSTNAME"); - if ( u3_Host.ops_u.nam_c == 0 ) { - c3_w len_w = sysconf(_SC_HOST_NAME_MAX) + 1; - - u3_Host.ops_u.nam_c = hostbuf; - if ( 0 != gethostname(u3_Host.ops_u.nam_c, len_w) ) { - perror("gethostname"); - exit(1); - } - } - } - if ( argc != (optind + 1) && u3_Host.ops_u.who_c != 0 ) { u3_Host.dir_c = strdup(1 + u3_Host.ops_u.who_c); } @@ -474,7 +455,6 @@ main(c3_i argc, // printf("welcome.\n"); printf("urbit %s\n", URBIT_VERSION); printf("urbit: home is %s\n", u3_Host.dir_c); - // printf("vere: hostname is %s\n", u3_Host.ops_u.nam_c); if ( c3y == u3_Host.ops_u.dem && c3n == u3_Host.ops_u.bat ) { printf("urbit: running as daemon\n"); From d0de76a35ac7efbbdfdef3af4d22e53cd7afdcf7 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 16:30:19 -0500 Subject: [PATCH 4/9] removes unused args -I (galaxy) and -l (raft port) --- vere/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vere/main.c b/vere/main.c index 464c2b0be5..c9ecafa70b 100644 --- a/vere/main.c +++ b/vere/main.c @@ -78,7 +78,7 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.rep = c3n; u3_Host.ops_u.kno_w = DefaultKernel; - while ( (ch_i=getopt(argc, argv,"s:B:I:w:t:f:k:l:p:LSabcdgmqvxFPDR")) != -1 ) { + while ( (ch_i=getopt(argc, argv,"s:B:w:t:f:k:p:LSabcdgqvxFPDR")) != -1 ) { switch ( ch_i ) { case 'B': { u3_Host.ops_u.pil_c = strdup(optarg); From 82b3a280b5dbf2af8f4c68eab820424fce3ada72 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 19:03:42 -0500 Subject: [PATCH 5/9] removes -t (ticket), -s, and -S (secret/prompt) --- include/vere/vere.h | 3 --- vere/king.c | 48 ++++----------------------------------------- vere/main.c | 46 +++++-------------------------------------- 3 files changed, 9 insertions(+), 88 deletions(-) diff --git a/include/vere/vere.h b/include/vere/vere.h index 74134a510b..67ebdab772 100644 --- a/include/vere/vere.h +++ b/include/vere/vere.h @@ -492,16 +492,13 @@ */ typedef struct _u3_opts { c3_c* who_c; // -w, begin with ticket - c3_c* tic_c; // -t, ticket value c3_c* pil_c; // -B, bootstrap from c3_c* lit_c; // -J, ivory (fastboot) kernel - c3_c* sec_c; // -s, secret c3_w kno_w; // -k, kernel version c3_w fuz_w; // -f, fuzz testing c3_s por_s; // -p, ames port c3_o abo; // -a, abort aggressively c3_o bat; // -b, batch create - c3_o sic; // -S, enter secret at prompt c3_o gab; // -g, test garbage collection c3_o dem; // -d, daemon c3_o dry; // -D, dry compute, no checkpoint diff --git a/vere/king.c b/vere/king.c index 958f88a3ac..45ee5dda49 100644 --- a/vere/king.c +++ b/vere/king.c @@ -325,54 +325,14 @@ _boothack_cb(uv_connect_t *conn, int status) if ( c3y == u3_Host.ops_u.fak ) { fprintf(stderr, "boot: F A K E ship with null security\r\n"); - sec = 0; - if ( 0 != u3_Host.ops_u.tic_c ) { - fprintf(stderr, "boot: fake ship does not need a ticket (-t)\r\n"); - exit(1); - } - tic = u3k(who); + tic = 0; } else { - if ( 0 == u3_Host.ops_u.sec_c ) { - c3_w eny_w[16]; - - u3_pier_rand(eny_w); - sec = u3i_words(2, eny_w); - { - u3_noun rot = u3dc("scot", 'p', u3k(sec)); - c3_c* rot_c = u3r_string(rot); - - fprintf(stderr, "boot: %s: R O O T P A S S W O R D %s\r\n", - u3_Host.ops_u.who_c, - rot_c); - fprintf(stderr, " (write it down and put it in your wallet)\r\n"); - - u3z(rot); - c3_free(rot_c); - } - } else { - u3_noun suc = u3dc("slaw", 'p', u3i_string(u3_Host.ops_u.sec_c)); - - if ( u3_nul == suc ) { - fprintf(stderr, "boot: malformed secret (-s)\r\n"); - exit(1); - } - sec = u3k(u3t(suc)); - u3z(suc); - } - - { - u3_noun tuc = u3dc("slaw", 'p', u3i_string(u3_Host.ops_u.tic_c)); - - if ( u3_nul == tuc ) { - fprintf(stderr, "boot: malformed ticket (-t)\r\n"); - exit(1); - } - tic = u3k(u3t(tuc)); - u3z(tuc); - } + fprintf(stderr, "boot: real ships not yet supported\r\n"); + exit(1); } + pax = u3i_string(u3_Host.dir_c); mat = u3ke_jam(u3nc(c3__doom, diff --git a/vere/main.c b/vere/main.c index c9ecafa70b..8550d0d0b5 100644 --- a/vere/main.c +++ b/vere/main.c @@ -71,32 +71,23 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.tex = c3n; u3_Host.ops_u.pro = c3n; u3_Host.ops_u.dry = c3n; - u3_Host.ops_u.sic = c3n; u3_Host.ops_u.veb = c3n; u3_Host.ops_u.qui = c3n; u3_Host.ops_u.nuu = c3n; u3_Host.ops_u.rep = c3n; u3_Host.ops_u.kno_w = DefaultKernel; - while ( (ch_i=getopt(argc, argv,"s:B:w:t:f:k:p:LSabcdgqvxFPDR")) != -1 ) { + while ( (ch_i=getopt(argc, argv,"B:w:f:k:p:LabcdgqvxFPDR")) != -1 ) { switch ( ch_i ) { case 'B': { u3_Host.ops_u.pil_c = strdup(optarg); break; } - case 's': { - u3_Host.ops_u.sec_c = strdup(optarg); - break; - } case 'w': { u3_Host.ops_u.who_c = _main_presig(optarg); u3_Host.ops_u.nuu = c3y; break; } - case 't': { - u3_Host.ops_u.tic_c = _main_presig(optarg); - break; - } case 'x': { u3_Host.ops_u.tex = c3y; break; @@ -159,39 +150,12 @@ _main_getopt(c3_i argc, c3_c** argv) fprintf(stderr, "comets are not yet supported; identify with -w\r\n"); return c3n; } - else { - if ( c3n == u3_Host.ops_u.fak ) { - if ( (u3_Host.ops_u.tic_c == 0) && - (strlen(u3_Host.ops_u.who_c) >= 4) - ) - { - c3_c tic_c[29]; - - printf("enter your ticket: ~"); - scanf("%28s", tic_c); - u3_Host.ops_u.tic_c = _main_presig(tic_c); - } - - if ( c3y == u3_Host.ops_u.sic ) { - c3_c sec_c[29]; - - printf("enter your secret: ~"); - scanf("%28s", sec_c); - u3_Host.ops_u.sec_c = _main_presig(sec_c); - } - } - } - } else { - if ( u3_Host.ops_u.sec_c != 0 ) { - fprintf(stderr, "-s only makes sense when creating a new ship\n"); + else if ( c3n == u3_Host.ops_u.fak ) { + fprintf(stderr, "real ships are not yet supported; fake with -F\r\n"); return c3n; } - - if ( u3_Host.ops_u.tic_c != 0 ) { - fprintf(stderr, "-t only makes sense when creating a new ship\n"); - return c3n; - } - + } + else { if ( u3_Host.ops_u.who_c != 0 ) { fprintf(stderr, "-w only makes sense when creating a new ship\n"); return c3n; From b3757a243fc1bf9e7aa538d9901f7e38a7684f2a Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 19:18:24 -0500 Subject: [PATCH 6/9] renames -L (local networking) from loh to net --- include/vere/vere.h | 2 +- vere/ames.c | 2 +- vere/main.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/vere/vere.h b/include/vere/vere.h index 67ebdab772..99d89bc7ce 100644 --- a/include/vere/vere.h +++ b/include/vere/vere.h @@ -504,7 +504,7 @@ c3_o dry; // -D, dry compute, no checkpoint c3_o tex; // -x, exit after loading c3_o fak; // -F, fake carrier - c3_o loh; // -L, local-only networking + c3_o net; // -L, local-only networking c3_o pro; // -P, profile c3_o veb; // -v, verbose (inverse of -q) c3_o nuu; // -c, new pier diff --git a/vere/ames.c b/vere/ames.c index 8bf69c02df..fcf2f2aec5 100644 --- a/vere/ames.c +++ b/vere/ames.c @@ -50,7 +50,7 @@ _ames_czar(u3_pier* pir_u, c3_y imp_y, c3_s* por_s) { u3_ames* sam_u = pir_u->sam_u; - if ( c3y == u3_Host.ops_u.loh ) { + if ( c3n == u3_Host.ops_u.net ) { *por_s = 31337 + imp_y; return 0x7f000001; } diff --git a/vere/main.c b/vere/main.c index 8550d0d0b5..eba798ba24 100644 --- a/vere/main.c +++ b/vere/main.c @@ -65,7 +65,7 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.abo = c3n; u3_Host.ops_u.bat = c3n; u3_Host.ops_u.gab = c3n; - u3_Host.ops_u.loh = c3n; + u3_Host.ops_u.net = c3y; u3_Host.ops_u.dem = c3n; u3_Host.ops_u.fak = c3n; u3_Host.ops_u.tex = c3n; @@ -114,9 +114,9 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.rep = c3y; return c3y; } - case 'L': { u3_Host.ops_u.loh = c3y; break; } + case 'L': { u3_Host.ops_u.net = c3n; break; } case 'F': { - u3_Host.ops_u.loh = c3y; + u3_Host.ops_u.net = c3n; u3_Host.ops_u.fak = c3y; break; } From 0130d72aed51602485fb9f13c63f57f461d0cd44 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 19:21:52 -0500 Subject: [PATCH 7/9] replaces -k with -K (kernel version) --- include/vere/vere.h | 2 +- vere/main.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/vere/vere.h b/include/vere/vere.h index 99d89bc7ce..4787b3b71f 100644 --- a/include/vere/vere.h +++ b/include/vere/vere.h @@ -494,7 +494,7 @@ c3_c* who_c; // -w, begin with ticket c3_c* pil_c; // -B, bootstrap from c3_c* lit_c; // -J, ivory (fastboot) kernel - c3_w kno_w; // -k, kernel version + c3_w kno_w; // -K, kernel version c3_w fuz_w; // -f, fuzz testing c3_s por_s; // -p, ames port c3_o abo; // -a, abort aggressively diff --git a/vere/main.c b/vere/main.c index eba798ba24..4b0513d9a5 100644 --- a/vere/main.c +++ b/vere/main.c @@ -77,7 +77,7 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.rep = c3n; u3_Host.ops_u.kno_w = DefaultKernel; - while ( (ch_i=getopt(argc, argv,"B:w:f:k:p:LabcdgqvxFPDR")) != -1 ) { + while ( (ch_i=getopt(argc, argv,"B:w:f:K:p:LabcdgqvxFPDR")) != -1 ) { switch ( ch_i ) { case 'B': { u3_Host.ops_u.pil_c = strdup(optarg); @@ -98,7 +98,7 @@ _main_getopt(c3_i argc, c3_c** argv) } break; } - case 'k': { + case 'K': { if ( c3n == _main_readw(optarg, 256, &u3_Host.ops_u.kno_w) ) { return c3n; } @@ -228,7 +228,7 @@ u3_ve_usage(c3_i argc, c3_c** argv) "-r host Initial peer address\n", "-l port Initial peer port\n", "-f Fuzz testing\n", - "-k stage Start at Hoon kernel version stage\n", + "-K stage Start at Hoon kernel version stage\n", "-R Report urbit build info\n"}; #else c3_c *use_c[] = { From 92fca35aec04465f8e6eb99c95637dbb1183d9c0 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 19:28:29 -0500 Subject: [PATCH 8/9] alphebetizes u3_opts and _main_getopt() defaults --- include/vere/vere.h | 26 +++++++++++++------------- vere/main.c | 14 +++++++------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/include/vere/vere.h b/include/vere/vere.h index 4787b3b71f..f261cbea11 100644 --- a/include/vere/vere.h +++ b/include/vere/vere.h @@ -491,26 +491,26 @@ /* u3_opts: command line configuration. */ typedef struct _u3_opts { - c3_c* who_c; // -w, begin with ticket + c3_o abo; // -a, abort aggressively c3_c* pil_c; // -B, bootstrap from + c3_o bat; // -b, batch create + c3_o nuu; // -c, new pier + c3_o dry; // -D, dry compute, no checkpoint + c3_o dem; // -d, daemon + c3_o fak; // -F, fake carrier + c3_w fuz_w; // -f, fuzz testing + c3_o gab; // -g, test garbage collection c3_c* lit_c; // -J, ivory (fastboot) kernel c3_w kno_w; // -K, kernel version - c3_w fuz_w; // -f, fuzz testing - c3_s por_s; // -p, ames port - c3_o abo; // -a, abort aggressively - c3_o bat; // -b, batch create - c3_o gab; // -g, test garbage collection - c3_o dem; // -d, daemon - c3_o dry; // -D, dry compute, no checkpoint - c3_o tex; // -x, exit after loading - c3_o fak; // -F, fake carrier c3_o net; // -L, local-only networking c3_o pro; // -P, profile - c3_o veb; // -v, verbose (inverse of -q) - c3_o nuu; // -c, new pier + c3_s por_s; // -p, ames port c3_o qui; // -q, quiet - c3_o vno; // -V, turn on +verb c3_o rep; // -R, report build info + c3_o vno; // -V, replay without reboots + c3_o veb; // -v, verbose (inverse of -q) + c3_c* who_c; // -w, begin with ticket + c3_o tex; // -x, exit after loading } u3_opts; /* u3_host: entire host. diff --git a/vere/main.c b/vere/main.c index 4b0513d9a5..21967a5c51 100644 --- a/vere/main.c +++ b/vere/main.c @@ -64,17 +64,17 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.abo = c3n; u3_Host.ops_u.bat = c3n; + u3_Host.ops_u.dem = c3n; + u3_Host.ops_u.dry = c3n; + u3_Host.ops_u.fak = c3n; u3_Host.ops_u.gab = c3n; u3_Host.ops_u.net = c3y; - u3_Host.ops_u.dem = c3n; - u3_Host.ops_u.fak = c3n; - u3_Host.ops_u.tex = c3n; - u3_Host.ops_u.pro = c3n; - u3_Host.ops_u.dry = c3n; - u3_Host.ops_u.veb = c3n; - u3_Host.ops_u.qui = c3n; u3_Host.ops_u.nuu = c3n; + u3_Host.ops_u.pro = c3n; + u3_Host.ops_u.qui = c3n; u3_Host.ops_u.rep = c3n; + u3_Host.ops_u.tex = c3n; + u3_Host.ops_u.veb = c3n; u3_Host.ops_u.kno_w = DefaultKernel; while ( (ch_i=getopt(argc, argv,"B:w:f:K:p:LabcdgqvxFPDR")) != -1 ) { From 2ef674b4b3107c74b1090b6506f183a710bceaf6 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Fri, 16 Nov 2018 20:11:02 -0500 Subject: [PATCH 9/9] adds placeholder for -J (ivory pill, unimplemented) --- vere/main.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vere/main.c b/vere/main.c index 21967a5c51..6cc74ba26b 100644 --- a/vere/main.c +++ b/vere/main.c @@ -77,8 +77,14 @@ _main_getopt(c3_i argc, c3_c** argv) u3_Host.ops_u.veb = c3n; u3_Host.ops_u.kno_w = DefaultKernel; - while ( (ch_i=getopt(argc, argv,"B:w:f:K:p:LabcdgqvxFPDR")) != -1 ) { + while ( (ch_i=getopt(argc, argv,"J:B:w:f:K:p:LabcdgqvxFPDR")) != -1 ) { switch ( ch_i ) { + case 'J': { + // XX should set path to ivory pill + // u3_Host.ops_u.lit_c = strdup(optarg); + // break; + return c3n; + } case 'B': { u3_Host.ops_u.pil_c = strdup(optarg); break;