Actually increase buffer size of t-dns-cert.c.
[gnupg.git] / common / init.c
index aa0b6a7..bcb0cd4 100644 (file)
@@ -27,7 +27,7 @@
 #ifdef HAVE_W32_SYSTEM
 #include <windows.h>
 #endif
-#ifdef HAVE_PTH      
+#ifdef HAVE_PTH
 #include <pth.h>
 #endif
 #ifdef HAVE_W32CE_SYSTEM
@@ -49,6 +49,23 @@ sleep_on_exit (void)
 #endif /*HAVE_W32CE_SYSTEM*/
 
 
+/* If STRING is not NULL write string to es_stdout or es_stderr.  MODE
+   must be 1 or 2.  If STRING is NULL flush the respective stream.  */
+static int
+writestring_via_estream (int mode, const char *string)
+{
+  if (mode == 1 || mode == 2)
+    {
+      if (string)
+        return es_fputs (string, mode == 1? es_stdout : es_stderr);
+      else
+        return es_fflush (mode == 1? es_stdout : es_stderr);
+    }
+  else
+    return -1;
+}
+
+
 /* This function is to be used early at program startup to make sure
    that some subsystems are initialized.  This is in particular
    important for W32 to initialize the sockets so that our socket
@@ -62,7 +79,7 @@ void
 init_common_subsystems (int *argcp, char ***argvp)
 {
   /* Try to auto set the character set.  */
-  set_native_charset (NULL); 
+  set_native_charset (NULL);
 
 #ifdef HAVE_W32_SYSTEM
   /* For W32 we need to initialize the socket layer.  This is because
@@ -75,12 +92,12 @@ init_common_subsystems (int *argcp, char ***argvp)
 # else
   {
     WSADATA wsadat;
-    
+
     WSAStartup (0x202, &wsadat);
   }
 # endif /*!HAVE_PTH*/
 #endif
-  
+
 #ifdef HAVE_W32CE_SYSTEM
   /* Register the sleep exit function before the estream init so that
      the sleep will be called after the estream registered atexit
@@ -100,6 +117,19 @@ init_common_subsystems (int *argcp, char ***argvp)
   (void)argcp;
   (void)argvp;
 #endif
+
+  /* Access the standard estreams as early as possible.  If we don't
+     do this the original stdio streams may have been closed when
+     _es_get_std_stream is first use and in turn it would connect to
+     the bit bucket.  */
+  {
+    int i;
+    for (i=0; i < 3; i++)
+      (void)_es_get_std_stream (i);
+  }
+
+  /* --version et al shall use estream as well.  */
+  argparse_register_outfnc (writestring_via_estream);
 }
 
 
@@ -143,7 +173,7 @@ parse_std_file_handles (int *argcp, char ***argvp)
       s = *argv;
       if (*s == '-' && s[1] == '&' && s[2] == 'S'
           && (s[3] == '0' || s[3] == '1' || s[3] == '2')
-          && s[4] == '=' 
+          && s[4] == '='
           && (strchr ("-01234567890", s[5]) || !strcmp (s+5, "null")))
         {
           if (s[5] == 'n')