- fix error messages
[oweals/gnunet.git] / src / peerinfo-tool / gnunet-peerinfo.c
index 74ee1726fb7d50635d7f7cc28a7a50c0a80e9efd..eb69a08043bd2cdc054b0748688e44447372a37e 100644 (file)
@@ -62,7 +62,7 @@ struct AddressRecord
    * Printable address.
    */
   char *result;
-  
+
   /**
    * Print context this address record belongs to.
    */
@@ -90,7 +90,7 @@ struct PrintContext
    * Identity of the peer.
    */
   struct GNUNET_PeerIdentity peer;
-  
+
   /**
    * List of printable addresses.
    */
@@ -140,17 +140,22 @@ static int include_friend_only;
 static int get_self;
 
 /**
- * Option 
+ * Option
  */
 static int get_uri;
 
+/**
+ * Option
+ */
+static int default_operation;
+
 /**
  * Option '-i'
  */
 static int get_info;
 
 /**
- * Option 
+ * Option
  */
 static char *put_uri;
 
@@ -184,11 +189,6 @@ static struct GNUNET_PEERINFO_IteratorContext *pic;
  */
 static struct GNUNET_PeerIdentity my_peer_identity;
 
-/**
- * My public key.
- */
-static struct GNUNET_CRYPTO_EccPublicKeyBinaryEncoded my_public_key;
-
 /**
  * Head of list of print contexts.
  */
@@ -227,13 +227,11 @@ state_machine (void *cls,
 static void
 dump_pc (struct PrintContext *pc)
 {
-  struct GNUNET_CRYPTO_HashAsciiEncoded enc;
   unsigned int i;
 
-  GNUNET_CRYPTO_hash_to_enc (&pc->peer.hashPubKey, &enc);
   printf (_("%sPeer `%s'\n"),
-       (GNUNET_YES == pc->friend_only) ? "F2F: " : "",
-         (const char *) &enc);
+         (GNUNET_YES == pc->friend_only) ? "F2F: " : "",
+         GNUNET_i2s_full (&pc->peer));
   for (i = 0; i < pc->num_addresses; i++)
   {
     if (NULL != pc->address_list[i].result)
@@ -250,7 +248,7 @@ dump_pc (struct PrintContext *pc)
   GNUNET_free (pc);
   if ( (NULL == pc_head) &&
        (NULL == pic) )
-    tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);  
+    tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
 }
 
 
@@ -332,7 +330,7 @@ print_address (void *cls, const struct GNUNET_HELLO_Address *address,
  * Currently prints the GNUNET_PeerIdentity and the transport address.
  *
  * @param cls the 'struct PrintContext'
- * @param peer identity of the peer 
+ * @param peer identity of the peer
  * @param hello addresses of the peer
  * @param err_msg error message
  */
@@ -340,7 +338,6 @@ static void
 print_peer_info (void *cls, const struct GNUNET_PeerIdentity *peer,
                  const struct GNUNET_HELLO_Message *hello, const char *err_msg)
 {
-  struct GNUNET_CRYPTO_HashAsciiEncoded enc;
   struct PrintContext *pc;
   int friend_only;
 
@@ -349,7 +346,7 @@ print_peer_info (void *cls, const struct GNUNET_PeerIdentity *peer,
     pic = NULL; /* end of iteration */
     if (NULL != err_msg)
     {
-      FPRINTF (stderr, 
+      FPRINTF (stderr,
               _("Error in communication with PEERINFO service: %s\n"),
               err_msg);
     }
@@ -362,21 +359,20 @@ print_peer_info (void *cls, const struct GNUNET_PeerIdentity *peer,
        friend_only = GNUNET_HELLO_is_friend_only (hello);
   if ((GNUNET_YES == be_quiet) || (NULL == hello))
   {
-    GNUNET_CRYPTO_hash_to_enc (&peer->hashPubKey, &enc);
     printf ("%s%s\n",
-               (GNUNET_YES == friend_only) ? "F2F: " : "",
-               (const char *) &enc);
+           (GNUNET_YES == friend_only) ? "F2F: " : "",
+           GNUNET_i2s_full (peer));
     return;
   }
-  pc = GNUNET_malloc (sizeof (struct PrintContext));
+  pc = GNUNET_new (struct PrintContext);
   GNUNET_CONTAINER_DLL_insert (pc_head,
-                              pc_tail, 
+                              pc_tail,
                               pc);
   pc->peer = *peer;
   pc->friend_only = friend_only;
-  GNUNET_HELLO_iterate_addresses (hello, 
-                                 GNUNET_NO, 
-                                 &count_address, 
+  GNUNET_HELLO_iterate_addresses (hello,
+                                 GNUNET_NO,
+                                 &count_address,
                                  pc);
   if (0 == pc->off)
   {
@@ -385,7 +381,7 @@ print_peer_info (void *cls, const struct GNUNET_PeerIdentity *peer,
   }
   pc->address_list_size = pc->off;
   pc->address_list = GNUNET_malloc (sizeof (struct AddressRecord) * pc->off);
-  GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO, 
+  GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO,
                                  &print_address, pc);
 }
 
@@ -483,7 +479,7 @@ dump_my_hello (void *cls, const struct GNUNET_PeerIdentity *peer,
  */
 static void
 print_my_uri (void *cls, const struct GNUNET_PeerIdentity *peer,
-              const struct GNUNET_HELLO_Message *hello, 
+              const struct GNUNET_HELLO_Message *hello,
              const char *err_msg)
 {
   if (peer == NULL)
@@ -491,7 +487,7 @@ print_my_uri (void *cls, const struct GNUNET_PeerIdentity *peer,
     pic = NULL;
     if (err_msg != NULL)
       FPRINTF (stderr,
-              _("Error in communication with PEERINFO service: %s\n"), 
+              _("Error in communication with PEERINFO service: %s\n"),
               err_msg);
     tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
     return;
@@ -530,7 +526,7 @@ add_continuation (void *cls,
 
 
 /**
- * Parse the PUT URI given at the command line and add it to our peerinfo 
+ * Parse the PUT URI given at the command line and add it to our peerinfo
  * database.
  *
  * @param put_uri URI string to parse
@@ -541,7 +537,8 @@ parse_hello_uri (const char *put_uri)
 {
   struct GNUNET_HELLO_Message *hello = NULL;
 
-  int ret = GNUNET_HELLO_parse_uri(put_uri, &my_public_key, &hello, &GPI_plugins_find);
+  int ret = GNUNET_HELLO_parse_uri(put_uri, &my_peer_identity.public_key,
+                                  &hello, &GPI_plugins_find);
 
   if (NULL != hello) {
     /* WARNING: this adds the address from URI WITHOUT verification! */
@@ -631,7 +628,7 @@ static void
 run (void *cls, char *const *args, const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *c)
 {
-  struct GNUNET_CRYPTO_EccPrivateKey *priv;
+  struct GNUNET_CRYPTO_EddsaPrivateKey *priv;
   char *fn;
 
   cfg = c;
@@ -642,10 +639,10 @@ run (void *cls, char *const *args, const char *cfgfile,
     put_uri = GNUNET_strdup (args[0]);
     args++;
   }
-  if (NULL != args[0]) 
+  if (NULL != args[0])
   {
-    FPRINTF (stderr, 
-            _("Invalid command line argument `%s'\n"), 
+    FPRINTF (stderr,
+            _("Invalid command line argument `%s'\n"),
             args[0]);
     return;
   }
@@ -657,24 +654,23 @@ run (void *cls, char *const *args, const char *cfgfile,
   if ( (GNUNET_YES == get_self) || (GNUNET_YES == get_uri) || (NULL != dump_hello) )
   {
     /* load private key */
-    if (GNUNET_OK !=
-       GNUNET_CONFIGURATION_get_value_filename (cfg, "PEER", "PRIVATE_KEY",
-                                                &fn))
+    if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (cfg, "PEER",
+                                                              "PRIVATE_KEY",
+                                                               &fn))
     {
-      FPRINTF (stderr, _("Could not find option `%s:%s' in configuration.\n"),
-              "GNUNETD", "HOSTKEYFILE");
+      GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "PEER", "PRIVATE_KEY");
       return;
     }
-    if (NULL == (priv = GNUNET_CRYPTO_ecc_key_create_from_file (fn)))
+    if (NULL == (priv = GNUNET_CRYPTO_eddsa_key_create_from_file (fn)))
     {
       FPRINTF (stderr, _("Loading hostkey from `%s' failed.\n"), fn);
       GNUNET_free (fn);
       return;
     }
     GNUNET_free (fn);
-    GNUNET_CRYPTO_ecc_key_get_public (priv, &my_public_key);
-    GNUNET_CRYPTO_ecc_key_free (priv);
-    GNUNET_CRYPTO_hash (&my_public_key, sizeof (my_public_key), &my_peer_identity.hashPubKey);
+    GNUNET_CRYPTO_eddsa_key_get_public (priv,
+                                        &my_peer_identity.public_key);
+    GNUNET_free (priv);
   }
 
   tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
@@ -709,43 +705,50 @@ state_machine (void *cls,
     }
     GNUNET_free (put_uri);
     put_uri = NULL;
-    return;
   }
-  if (GNUNET_YES == get_info)
+  else if (GNUNET_YES == get_info)
   {
     get_info = GNUNET_NO;
     GPI_plugins_load (cfg);
     pic = GNUNET_PEERINFO_iterate (peerinfo, include_friend_only, NULL,
                                   TIMEOUT,
                                   &print_peer_info, NULL);
-    return;
   }
-  if (GNUNET_YES == get_self)
+  else if (GNUNET_YES == get_self)
   {
-    struct GNUNET_CRYPTO_HashAsciiEncoded enc;
-
     get_self = GNUNET_NO;
-    GNUNET_CRYPTO_hash_to_enc (&my_peer_identity.hashPubKey, &enc);
     if (be_quiet)
-      printf ("%s\n", (char *) &enc);
+      printf ("%s\n",
+             GNUNET_i2s_full (&my_peer_identity));
     else
-      printf (_("I am peer `%s'.\n"), (const char *) &enc);
+      printf (_("I am peer `%s'.\n"),
+             GNUNET_i2s_full (&my_peer_identity));
+    tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
   }
-  if (GNUNET_YES == get_uri)
+  else if (GNUNET_YES == get_uri)
   {
     GPI_plugins_load (cfg);
     pic = GNUNET_PEERINFO_iterate (peerinfo, include_friend_only, &my_peer_identity,
                                   TIMEOUT, &print_my_uri, NULL);
     get_uri = GNUNET_NO;
-    return;
   }
-  if (NULL != dump_hello)
+  else if (NULL != dump_hello)
   {
     pic = GNUNET_PEERINFO_iterate (peerinfo, include_friend_only, &my_peer_identity,
                                   TIMEOUT, &dump_my_hello, NULL);
-    return;
   }
-  GNUNET_SCHEDULER_shutdown ();
+  else if (GNUNET_YES == default_operation)
+  {
+       /* default operation list all */
+       default_operation = GNUNET_NO;
+       get_info = GNUNET_YES;
+       tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
+  }
+  else
+  {
+       GNUNET_SCHEDULER_shutdown ();
+  }
+       default_operation = GNUNET_NO;
 }
 
 
@@ -759,6 +762,7 @@ state_machine (void *cls,
 int
 main (int argc, char *const *argv)
 {
+       default_operation = GNUNET_YES;
   static const struct GNUNET_GETOPT_CommandLineOption options[] = {
     {'n', "numeric", NULL,
      gettext_noop ("don't resolve host names"),
@@ -775,9 +779,9 @@ main (int argc, char *const *argv)
     {'i', "info", NULL,
      gettext_noop ("list all known peers"),
      0, &GNUNET_GETOPT_set_one, &get_info},
-         {'d', "dump-hello", NULL,
-                gettext_noop ("dump hello to file"),
-                1, &GNUNET_GETOPT_set_string, &dump_hello},
+    {'d', "dump-hello", NULL,
+     gettext_noop ("dump hello to file"),
+     1, &GNUNET_GETOPT_set_string, &dump_hello},
     {'g', "get-hello", NULL,
      gettext_noop ("also output HELLO uri(s)"),
      0, &GNUNET_GETOPT_set_one, &get_uri},