gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r30547 - gnunet-gtk/src/namestore


From: gnunet
Subject: [GNUnet-SVN] r30547 - gnunet-gtk/src/namestore
Date: Tue, 5 Nov 2013 22:12:54 +0100

Author: grothoff
Date: 2013-11-05 22:12:54 +0100 (Tue, 05 Nov 2013)
New Revision: 30547

Modified:
   gnunet-gtk/src/namestore/gnunet-namestore-gtk.c
Log:
-use more compact QR encoding, if possible

Modified: gnunet-gtk/src/namestore/gnunet-namestore-gtk.c
===================================================================
--- gnunet-gtk/src/namestore/gnunet-namestore-gtk.c     2013-11-05 21:00:42 UTC 
(rev 30546)
+++ gnunet-gtk/src/namestore/gnunet-namestore-gtk.c     2013-11-05 21:12:54 UTC 
(rev 30547)
@@ -453,33 +453,50 @@
   const char *dir;
   char *fn;
   unsigned int size;
+  char *upper;
 
-  qri = QRinput_new2 (0, QR_ECLEVEL_Q);
+  qri = QRinput_new2 (0, QR_ECLEVEL_M);
   if (NULL == qri)
   {
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRinput_new2");
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
+                         "QRinput_new2");
     return NULL;
   }
   entry = GTK_ENTRY (get_object ("gnunet_namestore_gtk_pseu_entry"));
   pseu = gtk_entry_get_text (GTK_ENTRY(entry));
   GNUNET_asprintf (&str,
-                  "gnunet://gns/%s/%s\n",
+                  "gnunet://gns/%s/%s",
                   GNUNET_GNSRECORD_z2s (&pubkey),
                   pseu);
-  if (0 != QRinput_append (qri,
-                          QR_MODE_8,
-                          strlen (str),
-                          (unsigned char*) str))
-  {
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRinput_append");
+  upper = GNUNET_strdup (str);
+  GNUNET_STRINGS_utf8_toupper (str,
+                               upper);
+  /* first try encoding as uppercase-only alpha-numerical
+     QR code (much smaller encoding); if that fails, also
+     try using binary encoding (in case nick contains
+     special characters). */
+  if ( (0 != QRinput_append (qri,
+                          QR_MODE_AN,
+                          strlen (upper),
+                          (unsigned char*) upper)) &&
+       (0 != QRinput_append (qri,
+                             QR_MODE_8,
+                             strlen (str),
+                             (unsigned char*) str)) )
+    {
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
+                         "QRinput_append");
+    GNUNET_free (upper);
     GNUNET_free (str);
     return NULL;
   }
+  GNUNET_free (upper);
   GNUNET_free (str);
   qrc = QRcode_encodeInput (qri);
   if (NULL == qrc)
   {
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "QRcode_encodeInput");
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
+                         "QRcode_encodeInput");
     QRinput_free (qri);
     return NULL;
   }
@@ -530,7 +547,8 @@
   pb = create_qrcode (2);
   if (NULL == pb)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("Failed to initialize QR-code 
pixbuf"));
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                _("Failed to initialize QR-code pixbuf\n"));
     return;
   }
   image = GTK_IMAGE (get_object ("gnunet_namestore_gtk_qr_image"));




reply via email to

[Prev in Thread] Current Thread [Next in Thread]