From 59d3c773509a0062b48afcad4a636552f615982c Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 19 Mar 2017 00:33:58 +0100 Subject: [PATCH] use more modern getopt api to initialize pid --- src/transport/gnunet-transport.c | 56 +++++++++++++------------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/src/transport/gnunet-transport.c b/src/transport/gnunet-transport.c index c0442950d..8624b09b4 100644 --- a/src/transport/gnunet-transport.c +++ b/src/transport/gnunet-transport.c @@ -166,11 +166,6 @@ struct PeerResolutionContext */ #define BLOCKSIZE 4 -/** - * Which peer should we connect to? - */ -static char *cpid; - /** * Handle to transport service. */ @@ -283,7 +278,7 @@ static struct GNUNET_TRANSPORT_PluginMonitor *pm; /** * Identity of the peer we transmit to / connect to. - * (equivalent to 'cpid' string). + * ('-p' command-line option). */ static struct GNUNET_PeerIdentity pid; @@ -485,7 +480,7 @@ operation_timeout (void *cls) _("Failed to resolve address for peer `%s'\n"), GNUNET_i2s (&cur->addrcp->peer)); - GNUNET_CONTAINER_DLL_remove(rc_head, + GNUNET_CONTAINER_DLL_remove(rc_head, rc_tail, cur); GNUNET_TRANSPORT_address_to_string_cancel (cur->asc); @@ -729,7 +724,7 @@ print_info (const struct GNUNET_PeerIdentity *id, GNUNET_STRINGS_absolute_time_to_string (state_timeout)); } else if ( (GNUNET_YES == iterate_connections) && - (GNUNET_TRANSPORT_is_connected(state)) ) + (GNUNET_TRANSPORT_is_connected(state)) ) { /* Only connected peers, skip state */ FPRINTF (stdout, @@ -1089,10 +1084,9 @@ plugin_monitoring_cb (void *cls, } return; /* shutdown */ } - if ( (NULL != cpid) && - (0 != memcmp (&info->address->peer, - cpid, - sizeof (struct GNUNET_PeerIdentity))) ) + if (0 != memcmp (&info->address->peer, + &pid, + sizeof (struct GNUNET_PeerIdentity))) return; /* filtered */ if (NULL == addr) { @@ -1241,21 +1235,11 @@ run (void *cls, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *mycfg) { + static struct GNUNET_PeerIdentity zero_pid; int counter = 0; ret = 1; cfg = (struct GNUNET_CONFIGURATION_Handle *) mycfg; - if ( (NULL != cpid) && - (GNUNET_OK != - GNUNET_CRYPTO_eddsa_public_key_from_string (cpid, - strlen (cpid), - &pid.public_key))) - { - FPRINTF (stderr, - _("Failed to parse peer identity `%s'\n"), - cpid); - return; - } counter = benchmark_send + benchmark_receive + iterate_connections + monitor_connections + monitor_connects + do_disconnect + @@ -1290,7 +1274,9 @@ run (void *cls, if (do_disconnect) /* -D: Disconnect from peer */ { - if (NULL == cpid) + if (0 == memcmp (&zero_pid, + &pid, + sizeof (pid))) { FPRINTF (stderr, _("Option `%s' makes no sense without option `%s'.\n"), @@ -1315,7 +1301,9 @@ run (void *cls, } else if (benchmark_send) /* -s: Benchmark sending */ { - if (NULL == cpid) + if (0 == memcmp (&zero_pid, + &pid, + sizeof (pid))) { FPRINTF (stderr, _("Option `%s' makes no sense without option `%s'.\n"), @@ -1352,7 +1340,7 @@ run (void *cls, NULL), GNUNET_MQ_handler_end () }; - + handle = GNUNET_TRANSPORT_core_connect (cfg, NULL, handlers, @@ -1378,7 +1366,7 @@ run (void *cls, else if (iterate_connections) /* -i: List information about peers once */ { pic = GNUNET_TRANSPORT_monitor_peers (cfg, - (NULL == cpid) ? NULL : &pid, + &pid, GNUNET_YES, &process_peer_iteration_cb, (void *) cfg); @@ -1391,7 +1379,7 @@ run (void *cls, monitored_peers = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO); pic = GNUNET_TRANSPORT_monitor_peers (cfg, - (NULL == cpid) ? NULL : &pid, + &pid, GNUNET_NO, &process_peer_monitoring_cb, NULL); @@ -1451,7 +1439,7 @@ main (int argc, GNUNET_GETOPT_OPTION_SET_ONE ('D', "disconnect", gettext_noop ("disconnect from a peer"), - &do_disconnect), + &do_disconnect), GNUNET_GETOPT_OPTION_SET_ONE ('i', "information", gettext_noop ("provide information about all current connections (once)"), @@ -1468,11 +1456,11 @@ main (int argc, "numeric", gettext_noop ("do not resolve hostnames"), &numeric), - GNUNET_GETOPT_OPTION_STRING ('p', - "peer", - "PEER", - gettext_noop ("peer identity"), - &cpid), + GNUNET_GETOPT_OPTION_SET_BASE32_AUTO ('p', + "peer", + "PEER", + gettext_noop ("peer identity"), + &pid), GNUNET_GETOPT_OPTION_SET_ONE ('P', "plugins", gettext_noop ("monitor plugin sessions"), -- 2.25.1