g10: Prefer to available card keys for decryption.
[gnupg.git] / common / ttyio.c
index 0f8c780..c7c9d85 100644 (file)
@@ -25,7 +25,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -134,7 +134,7 @@ tty_get_ttyname (void)
       got_name = 1;
     }
 #endif /*HAVE_CTERMID*/
-  /* Assume the standard tty on memory error or when tehre is no
+  /* Assume the standard tty on memory error or when there is no
      ctermid. */
   return name? name : "/dev/tty";
 }
@@ -309,95 +309,59 @@ tty_fprintf (estream_t fp, const char *fmt, ... )
 }
 
 
-/****************
- * Print a string, but filter all control characters out.  If FP is
- * not NULL print to that stream instead to the tty.
- */
-void
-tty_print_string (estream_t fp, const byte *p, size_t n )
+/* Print a string, but filter all control characters out.  If FP is
+ * not NULL print to that stream instead to the tty.  */
+static void
+do_print_string (estream_t fp, const byte *p, size_t n )
 {
-    if (no_terminal && !fp)
-       return;
+  if (no_terminal && !fp)
+    return;
 
-    if( !initialized & !fp)
-       init_ttyfp();
+  if (!initialized && !fp)
+    init_ttyfp();
+
+  if (fp)
+    {
+      print_utf8_buffer (fp, p, n);
+      return;
+    }
 
 #ifdef USE_W32_CONSOLE
-    /* not so effective, change it if you want */
-    if (fp)
-      {
-        for( ; n; n--, p++ )
-          {
-            if( iscntrl( *p ) )
-              {
-                if( *p == '\n' )
-                  tty_fprintf (fp, "\\n");
-                else if( !*p )
-                  tty_fprintf (fp, "\\0");
-                else
-                  tty_fprintf (fp, "\\x%02x", *p);
-              }
-            else
-              tty_fprintf (fp, "%c", *p);
-          }
-      }
-    else
-      {
-        for( ; n; n--, p++ )
-          {
-            if( iscntrl( *p ) )
-              {
-                if( *p == '\n' )
-                  tty_printf ("\\n");
-                else if( !*p )
-                  tty_printf ("\\0");
-                else
-                  tty_printf ("\\x%02x", *p);
-              }
-            else
-              tty_printf ("%c", *p);
-          }
-      }
+  /* Not so effective, change it if you want */
+  for (; n; n--, p++)
+    {
+      if (iscntrl (*p))
+        {
+          if( *p == '\n' )
+            tty_printf ("\\n");
+          else if( !*p )
+            tty_printf ("\\0");
+          else
+            tty_printf ("\\x%02x", *p);
+        }
+      else
+        tty_printf ("%c", *p);
+    }
 #else
-    if (fp)
-      {
-        for( ; n; n--, p++ )
-          {
-            if (iscntrl (*p))
-              {
-                es_putc ('\\', fp);
-                if ( *p == '\n' )
-                  es_putc ('n', fp);
-                else if ( !*p )
-                  es_putc ('0', fp);
-                else
-                  es_fprintf (fp, "x%02x", *p);
-              }
-            else
-              es_putc (*p, fp);
-          }
-      }
-    else
-      {
-        for (; n; n--, p++)
-          {
-            if (iscntrl (*p))
-              {
-                putc ('\\', ttyfp);
-                if ( *p == '\n' )
-                  putc ('n', ttyfp);
-                else if ( !*p )
-                  putc ('0', ttyfp);
-                else
-                  fprintf (ttyfp, "x%02x", *p );
-              }
-            else
-              putc (*p, ttyfp);
-          }
-      }
+  for (; n; n--, p++)
+    {
+      if (iscntrl (*p))
+        {
+          putc ('\\', ttyfp);
+          if ( *p == '\n' )
+            putc ('n', ttyfp);
+          else if ( !*p )
+            putc ('0', ttyfp);
+          else
+            fprintf (ttyfp, "x%02x", *p );
+        }
+      else
+        putc (*p, ttyfp);
+    }
 #endif
 }
 
+
 void
 tty_print_utf8_string2 (estream_t fp, const byte *p, size_t n, size_t max_n)
 {
@@ -425,7 +389,7 @@ tty_print_utf8_string2 (estream_t fp, const byte *p, size_t n, size_t max_n)
        if( max_n && (n > max_n) ) {
            n = max_n;
        }
-       tty_print_string (fp, p, n );
+       do_print_string (fp, p, n );
     }
 }
 
@@ -502,7 +466,7 @@ do_get( const char *prompt, int hidden )
     do {
 #ifdef HAVE_W32CE_SYSTEM
       /* Using getchar is not a correct solution but for now it
-         doesn't matter becuase we have no real console at all.  We
+         doesn't matter because we have no real console at all.  We
          should rework this as soon as we have switched this entire
          module to estream.  */
         c = getchar();
@@ -638,7 +602,7 @@ tty_get( const char *prompt )
     return do_get ( prompt, 0 );
 }
 
-/* Variable argument version of tty_get.  The prompt is is actually a
+/* Variable argument version of tty_get.  The prompt is actually a
    format string with arguments.  */
 char *
 tty_getf (const char *promptfmt, ... )