Ticket #1053: 0002-honor-client-name-option.patch

File 0002-honor-client-name-option.patch, 3.6 KB (added by egasimus, 5 years ago)
  • jalv/src/jalv.c

    From fabb6612b6e4e91976748baa2c9836ea0df419b9 Mon Sep 17 00:00:00 2001
    From: Adam Avramov <fallenblood@gmail.com>
    Date: Sat, 16 May 2015 06:02:33 +0300
    Subject: [PATCH 4/5] Honor -n and -N options for setting client name.
    
    ---
     jalv/src/jalv.c         | 51 ++++++++++++++++++++++++++++++++++++-------------
     jalv/src/jalv_console.c |  4 ++--
     2 files changed, 40 insertions(+), 15 deletions(-)
    
    diff --git a/jalv/src/jalv.c b/jalv/src/jalv.c
    index d3da181..bf481d1 100644
    a b main(int argc, char** argv) 
    10721072    /* Create port structures (jalv.ports) */
    10731073    jalv_create_ports(&jalv);
    10741074
    1075     /* Get the plugin's name */
    1076     LilvNode*   name     = lilv_plugin_get_name(jalv.plugin);
    1077     const char* name_str = lilv_node_as_string(name);
    1078 
    1079     /* Truncate plugin name to suit JACK (if necessary) */
     1075    /* Determine the name of the JACK client */
    10801076    char* jack_name = NULL;
    1081     if (strlen(name_str) >= (unsigned)jack_client_name_size() - 1) {
    1082         jack_name = (char*)calloc(jack_client_name_size(), 1);
    1083         strncpy(jack_name, name_str, jack_client_name_size() - 1);
     1077
     1078    if (jalv.opts.name) {
     1079
     1080        /* If name has been set upon invocation */
     1081        if (strlen(jalv.opts.name) >= (unsigned)jack_client_name_size() - 1) {
     1082            jack_name = (char*)calloc(jack_client_name_size(), 1);
     1083            strncpy(jack_name, jalv.opts.name, jack_client_name_size() - 1);
     1084        } else {
     1085            jack_name = jalv_strdup(jalv.opts.name);
     1086        }
     1087
    10841088    } else {
    1085         jack_name = jalv_strdup(name_str);
     1089
     1090        /* Get the plugin's name */
     1091        LilvNode*   name     = lilv_plugin_get_name(jalv.plugin);
     1092        const char* name_str = lilv_node_as_string(name);
     1093
     1094        /* Truncate plugin name to suit JACK (if necessary) */
     1095        if (strlen(name_str) >= (unsigned)jack_client_name_size() - 1) {
     1096            jack_name = (char*)calloc(jack_client_name_size(), 1);
     1097            strncpy(jack_name, name_str, jack_client_name_size() - 1);
     1098        } else {
     1099            jack_name = jalv_strdup(name_str);
     1100        }
     1101
     1102        lilv_node_free(name);
     1103
    10861104    }
    10871105
    10881106    /* Connect to JACK */
    10891107    printf("JACK Name:    %s\n", jack_name);
    10901108#ifdef JALV_JACK_SESSION
    10911109    if (jalv.opts.uuid) {
    1092         jalv.jack_client = jack_client_open(jack_name, JackSessionID, NULL,
    1093                                             jalv.opts.uuid);
     1110        jalv.jack_client = jack_client_open(
     1111            jack_name,
     1112            JackSessionID | jalv.opts.name_exact ? JackUseExactName : 0,
     1113            NULL,
     1114            jalv.opts.uuid
     1115        );
    10941116    }
    10951117#endif
    10961118
    10971119    if (!jalv.jack_client) {
    1098         jalv.jack_client = jack_client_open(jack_name, JackNullOption, NULL);
     1120        jalv.jack_client = jack_client_open(
     1121            jack_name,
     1122            jalv.opts.name_exact ? JackUseExactName : JackNullOption,
     1123            NULL
     1124        );
    10991125    }
    11001126
    11011127    free(jack_name);
    1102     lilv_node_free(name);
    11031128
    11041129    if (!jalv.jack_client)
    11051130        die("Failed to connect to JACK.\n");
  • jalv/src/jalv_console.c

    diff --git a/jalv/src/jalv_console.c b/jalv/src/jalv_console.c
    index 4657ac7..09e35ba 100644
    a b jalv_init(int* argc, char*** argv, JalvOptions* opts) 
    103103            opts->dump = true;
    104104        } else if ((*argv)[a][1] == 'n' ){
    105105            if (opts->name) {
    106                 fprintf(stderr, "Client name is already %s, ignoring %s", opts->name, (*argv)[a]);
     106                fprintf(stderr, "Client name is already %s, ignoring %s\n", opts->name, (*argv)[a+1]);
    107107                continue;
    108108            }
    109109            if (++a == *argc) {
    jalv_init(int* argc, char*** argv, JalvOptions* opts) 
    113113            opts->name = jalv_strdup((*argv)[a]);
    114114        } else if ((*argv)[a][1] == 'N' ){
    115115            if (opts->name) {
    116                 fprintf(stderr, "Client name is already %s, ignoring %s", opts->name, (*argv)[a]);
     116                fprintf(stderr, "Client name is already %s, ignoring %s\n", opts->name, (*argv)[a+1]);
    117117                continue;
    118118            }
    119119            if (++a == *argc) {