The rest of the VMS changes.
authorWerner Koch <wk@gnupg.org>
Tue, 28 Sep 2010 15:55:24 +0000 (15:55 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 28 Sep 2010 15:55:24 +0000 (15:55 +0000)
cipher/rand-internal.h
configure.ac
g10/ChangeLog
g10/openfile.c
g10/passphrase.c
g10/signal.c
util/cert.c
util/logger.c
util/secmem.c
util/srv.c

index c1d7db9..8a1aecc 100644 (file)
@@ -23,6 +23,8 @@ int rndunix_gather_random (void (*add)(const void*, size_t, int),
                            int requester, size_t length, int level);
 int rndlinux_gather_random (void (*add)(const void*, size_t, int),
                             int requester, size_t length, int level);
+int rndvms_gather_random (void (*add)(const void*, size_t, int),
+                          int requester, size_t length, int level);
 int rndegd_connect_socket (int nofail);
 int rndegd_gather_random (void (*add)(const void*, size_t, int),
                           int requester, size_t length, int level );
index 8639fc9..4a4da6f 100644 (file)
@@ -470,7 +470,7 @@ is intended for making fat binary builds on OS X. */
 # define GNUPG_HOMEDIR     "c:\\\\gnupg"
 #else
 # ifdef __VMS
-#  define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
+#  define GNUPG_HOMEDIR "/SYS$LOGIN/gnupg" 
 # else
 #  define GNUPG_HOMEDIR "~/.gnupg" 
 # endif
index 8085c09..0e14379 100644 (file)
@@ -1,12 +1,9 @@
-2010-09-28  Werner Koch  <wk@g10code.com>
-
-       * gpgv.c (ttyfp_is, init_ttyfp) [__VMS]: Add subs.
-
 2010-09-28  Steven M. Schweda  <sms@antinode.info>  (wk)
 
        Changes to help the VMS port. See
        http://antinode.info/dec/sw/gnupg.html .
 
+       * gpgv.c (ttyfp_is, init_ttyfp) [__VMS]: Add stubs.
        * build-packet.c (do_plaintext) [__VMS]: Disable error message.
        * keyserver.c (keyserver_spawn) [__VMS]: Do not add the DIRSEP_S.
        * misc.c [__VMS]: Include <time.h>.
index 0ac5965..73fd5db 100644 (file)
@@ -248,8 +248,13 @@ open_outfile( const char *iname, int mode, IOBUF *a )
 #endif /* USE_ONLY_8DOT3 */
         {
           buf = xmalloc(strlen(iname)+4+1);
+#ifdef __VMS
+          vms_append_ext (buf, iname,
+                         mode==1 ? "asc" : mode==2 ? "sig" : "gpg");
+#else /*!def __VMS*/
           strcpy(stpcpy(buf,iname), mode==1 ? EXTSEP_S "asc" :
                                   mode==2 ? EXTSEP_S "sig" : EXTSEP_S "gpg");
+#endif /*!def __VMS*/
         }
       name = buf;
     }
@@ -435,6 +440,15 @@ try_make_homedir( const char *fname )
                                        fname,  strerror(errno) );
        else if( !opt.quiet )
            log_info( _("directory `%s' created\n"), fname );
+
+#ifdef __VMS
+       /* Explicitly remove group and world (other) access, which may
+          be allowed by default. */
+       if (chmod (fname, S_IRWXU ))
+         log_fatal ("can't set protection on directory `%s': %s\n",
+                    fname, strerror (errno));
+#endif /*def __VMS*/
+
        copy_options_file( fname );
 /*     log_info(_("you have to start GnuPG again, " */
 /*                "so it can read the new configuration file\n") ); */
index c93cde6..3bd159e 100644 (file)
 #include <string.h>
 #include <unistd.h>
 #include <assert.h>
-#if !defined(HAVE_DOSISH_SYSTEM) && !defined(__riscos__)
-#include <sys/socket.h>
-#include <sys/un.h>
+#ifdef ENABLE_AGENT_SUPPORT
+# if !defined(HAVE_DOSISH_SYSTEM) && !defined(__riscos__)
+#  include <sys/socket.h>
+#  include <sys/un.h>
+# endif
 #endif
 #if defined (_WIN32)
 #include <windows.h>
index cd24dc0..4aaa11e 100644 (file)
 #include "main.h"
 #include "ttyio.h"
 
+#ifdef __VMS
+# include "vms.h"
+#endif /* __VMS */
+
 #ifdef HAVE_DOSISH_SYSTEM
 void init_signals(void) {}
 void pause_on_sigusr(int which) {}
@@ -110,6 +114,12 @@ got_fatal_signal( int sig )
 #endif
     write(2, " caught ... exiting\n", 20 );
 
+#ifdef __VMS
+    /* 2006-08-10 SMS.
+       Restore terminal echo, if needed, before exiting.  */
+    vms_set_term_echo (-1);
+#endif /* def __VMS */
+
     /* Reset action to default action and raise signal again. */
     init_one_signal (sig, SIG_DFL, 0);
     remove_lockfiles ();
index 8bc9244..0eaead5 100644 (file)
 /* Not every installation has gotten around to supporting CERTs
    yet... */
 #ifndef T_CERT
-#define T_CERT 37
+# define T_CERT 37
+# ifdef __VMS
+#  include "cert_vms.h"
+# endif /* def __VMS */
 #endif
 
 #ifdef USE_DNS_CERT
index 7453444..d631611 100644 (file)
@@ -123,6 +123,28 @@ log_set_strict(int val)
 void
 g10_log_print_prefix(const char *text)
 {
+#ifdef __VMS
+    /* 2006-08-10 SMS.
+       VMS terminal carriage control differs from that on UNIX, and one
+       result is overwritten messages when terminal output is done
+       through multiple file pointers (like logfp and ttyfp), even when
+       they both are connected to the same terminal.  The accomodation
+       attempted here is to initialize ttyfp before logfp, and if stderr
+       and ttyfp are both terminals (presumably the same one), to set an
+       unset logfp to ttyfp instead of to stderr.  */
+    if (!logfp )
+      {
+        FILE *ttyfp_local;
+        
+        init_ttyfp();
+        ttyfp_local = ttyfp_is ();
+        if (isatty (fileno (stderr)) && isatty (fileno (ttyfp_local)))
+          {
+            logfp = ttyfp_local;
+          }
+      }
+#endif /* def __VMS */
+
     if( !logfp )
        logfp = stderr;
     if( pgm_name )
index f54c3a5..88af07f 100644 (file)
@@ -189,7 +189,11 @@ lock_pool( void *p, size_t n )
             && errno != ENOMEM
 #endif
          )
-           log_error("can't lock memory: %s\n", strerror(err));
+#ifdef __VMS
+           log_warning ("can't lock memory: %s\n", strerror(err));
+#else
+           log_error ("can't lock memory: %s\n", strerror(err));
+#endif
        show_warning = 1;
     }
 
index 1e23887..81df9f5 100644 (file)
 /* Not every installation has gotten around to supporting SRVs
    yet... */
 #ifndef T_SRV
-#define T_SRV 33
+# define T_SRV 33
+# ifdef __VMS
+#  include "cert_vms.h"
+# endif /* def __VMS */
 #endif
 
 static int