]> granicus.if.org Git - curl/commitdiff
Steve Little's fixes to allow compilation on VMS 64-bit mode
authorYang Tse <yangsita@gmail.com>
Wed, 25 Apr 2007 03:00:10 +0000 (03:00 +0000)
committerYang Tse <yangsita@gmail.com>
Wed, 25 Apr 2007 03:00:10 +0000 (03:00 +0000)
CHANGES
RELEASE-NOTES
ares/setup_once.h
lib/base64.c
lib/hostip.c
lib/netrc.c
lib/setup_once.h
lib/splay.c
packages/vms/build_vms.com
src/main.c

diff --git a/CHANGES b/CHANGES
index 2c07187bb710ff9219edaf689cfcf975a28470af..404b9b0185f787b35c9e94faedce0313eefbacb5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,9 @@
 
                                   Changelog
 
+Yang Tse (25 April 2007)
+- Steve Little fixed compilation on VMS 64-bit mode
+
 Daniel S (24 April 2007)
 - Robert Iakobashvili made the 'master_buffer' get allocated first once it is
   can/will be used as it then makes the common cases save 16KB of data for each
index 863ed8fbf7eac384e321799cbed1761bb4b079e2..99fddefe1f0c89680a7737cae3c58f3efc06ed93 100644 (file)
@@ -28,6 +28,7 @@ This release includes the following bugfixes:
  o GnuTLS free of NULL credentials
  o NSS-fix for closing down SSL
  o bad warning from configure when gnutls was selected
+ o compilation on VMS 64-bit mode
 
 This release includes the following known bugs:
 
@@ -49,6 +50,6 @@ This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
  Song Ma, Dan Fandrich, Yang Tse, Jay Austin, Robert Iakobashvil,
- James Housley, Daniel Black
+ James Housley, Daniel Black, Steve Little
 
         Thanks! (and sorry if I forgot to mention someone)
index c80fc32d906cb3ff3f4071d1e8c3194563ed63a1..4f7ed59bb5debfac76b56a94b7a52b22d5636f87 100644 (file)
@@ -337,5 +337,26 @@ typedef int sig_atomic_t;
 #endif
 
 
+/*
+ *  Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid()
+ */
+
+#if defined(VMS) && \
+    defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
+#define getpwuid __32_getpwuid
+#endif
+
+
+/*
+ * Macro argv_item_t hides platform details to code using it.
+ */
+
+#ifdef VMS
+#define argv_item_t  __char_ptr32
+#else
+#define argv_item_t  char *
+#endif
+
+
 #endif /* __SETUP_ONCE_H */
 
index a46d1f762785f23c466b472144fbe019fe20d6ac..302d498859011d367405b0e19f75e0c754d75994 100644 (file)
@@ -252,7 +252,7 @@ size_t Curl_base64_encode(struct SessionHandle *data,
 #define TEST_NEED_SUCK
 void *suck(int *);
 
-int main(int argc, char **argv, char **envp)
+int main(int argc, argv_item_t argv[], char **envp)
 {
   char *base64;
   size_t base64Len;
@@ -293,7 +293,7 @@ int main(int argc, char **argv, char **envp)
 #define TEST_NEED_SUCK
 void *suck(int *);
 
-int main(int argc, char **argv, char **envp)
+int main(int argc, argv_item_t argv[], char **envp)
 {
   char *base64;
   int base64Len;
index 399ac53e59329e20dc2cf8125ff467d0b9ba9e8c..9fb157fd38297beee888e450662637e2deb303f0 100644 (file)
@@ -598,6 +598,14 @@ struct namebuf {
 Curl_addrinfo *Curl_ip2addr(in_addr_t num, const char *hostname, int port)
 {
   Curl_addrinfo *ai;
+
+#if defined(VMS) && \
+    defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
+#pragma pointer_size save
+#pragma pointer_size short
+#pragma message disable PTRMISMATCH
+#endif
+
   struct hostent *h;
   struct in_addr *addrentry;
   struct namebuf buffer;
@@ -624,10 +632,16 @@ Curl_addrinfo *Curl_ip2addr(in_addr_t num, const char *hostname, int port)
   /* Now store the dotted version of the address */
   snprintf((char *)h->h_name, 16, "%s", hostname);
 
+#if defined(VMS) && \
+    defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
+#pragma pointer_size restore
+#pragma message enable PTRMISMATCH
+#endif
+
   ai = Curl_he2ai(h, port);
 
   return ai;
 }
-#endif
+#endif /* CURLRES_IPV4 || CURLRES_ARES */
 
 
index da366fb6bd765e106dd8b627c0eac8aa91321f90..dc2e042946b95954c83e5cee9676ba28054b3bdb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2005, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -227,7 +227,7 @@ int Curl_parsenetrc(char *host,
 }
 
 #ifdef _NETRC_DEBUG
-int main(int argc, char **argv)
+int main(int argc, argv_item_t argv[])
 {
   char login[64]="";
   char password[64]="";
index 4bbde0ec82140c412ed1e5ac911005b84254162e..585faed8d419f2bb0fc74a318d58c33a217e3aa6 100644 (file)
@@ -344,5 +344,26 @@ typedef int sig_atomic_t;
 #endif
 
 
+/*
+ *  Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid()
+ */
+
+#if defined(VMS) && \
+    defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
+#define getpwuid __32_getpwuid
+#endif
+
+
+/*
+ * Macro argv_item_t hides platform details to code using it.
+ */
+
+#ifdef VMS
+#define argv_item_t  __char_ptr32
+#else
+#define argv_item_t  char *
+#endif
+
+
 #endif /* __SETUP_ONCE_H */
 
index 9fb66c76ac56bd3f61005a255198318d4f33e9d0..acfa373e21922f79c75b5bba20016b6bfc2c5f77 100644 (file)
@@ -21,6 +21,8 @@
  * $Id$
  ***************************************************************************/
 
+#include "setup.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 
@@ -364,7 +366,7 @@ void Curl_splayprint(struct Curl_tree * t, int d, char output)
 
 /* A sample use of these functions.  Start with the empty tree, insert some
    stuff into it, and then delete it */
-int main(int argc, char **argv)
+int main(int argc, argv_item_t argv[])
 {
   struct Curl_tree *root, *t;
   void *ptrs[MAX];
index 5a97a3069ba5f8e97dcd1887d3573178381bdb27..0c2cd0a7fdb782a3739251ff03a82b48cdc498fa 100755 (executable)
@@ -21,7 +21,9 @@ $!
 $! Parameter(s):
 $!
 $! P1 - LISTING will create .lis files during the C compile
-$!      DEBUG will compile and link with debug
+$!      DEBUG   will compile and link with debug; also will create
+$!              compiler listings and linker map files
+$!      64      will compile and link with 64-bit pointers
 $!
 $! Revisions:
 $!
@@ -44,6 +46,7 @@ $!                   USE_SSLEAY to define if the target has SSL support built
 $!                   in.  Changed the cc/define parameter accordingly.
 $! 11-FEB-2005, MSK, If [--.LIB]AMIGAOS.C and NWLIB.C are there, rename them
 $! 23-MAR-2005, MSK, relocated cc_qual define so that DEBUG option would work
+$! 25-APR-2007, STL, allow compilation in 64-bit mode.
 $!
 $ on control_y then goto Common_Exit
 $ ctrl_y  = 1556 
@@ -75,25 +78,27 @@ $ set def 'thisdir'
 $!
 $ hpssl   = 0
 $ openssl = 0
-$ cc_qual = "/define=HAVE_CONFIG_H=1/OBJ=OBJDIR:"
+$ cc_qual = "/define=HAVE_CONFIG_H=1"
 $ link_qual = ""
 $ if f$trnlnm( "CURL_BUILD_NOSSL") .eqs. ""
 $ then
 $    if f$trnlnm( "OPENSSL") .nes. "" 
 $    then
 $       openssl = 1
-$       cc_qual = "/define=(HAVE_CONFIG_H=1,USE_SSLEAY=1)/OBJ=OBJDIR:"
+$       cc_qual = "/define=(HAVE_CONFIG_H=1,USE_SSLEAY=1)"
 $       if ( f$trnlnm( "SSL$INCLUDE") .nes. "") .and. -
            ( f$trnlnm( "CURL_BUILD_NOHPSSL") .eqs. "")
 $       then hpssl = 1
 $       endif
 $    endif
 $ endif
-$ if p1 .eqs. "LISTING" then cc_qual = cc_qual + "/LIST/MACHINE"
+$ cc_qual = cc_qual + "/OBJ=OBJDIR:"
+$ if p1 .eqs. "64" then cc_qual = cc_qual + "/POINTER=64"
+$ if p1 .eqs. "LISTING" then cc_qual = cc_qual + "/LIST/SHOW=ALL"
 $ if p1 .eqs. "DEBUG" 
 $ then 
-$    cc_qual = cc_qual + "/LIST/MACHINE/DEBUG/NOOPT"
-$    link_qual = "/DEBUG"
+$    cc_qual = cc_qual + "/LIST/SHOW=ALL/DEBUG/NOOPT"
+$    link_qual = "/DEBUG/MAP"
 $ endif
 $ msg_qual = "/OBJ=OBJDIR:"
 $!
index 229eb8dc88743ada6943899fbf59e556be4194dc..ee28035377631e50de22ff7aa0e7c75b3a27afa2 100644 (file)
@@ -3482,7 +3482,7 @@ static void dumpeasycode(struct Configurable *config)
 }
 
 static int
-operate(struct Configurable *config, int argc, char *argv[])
+operate(struct Configurable *config, int argc, argv_item_t argv[])
 {
   char errorbuffer[CURL_ERROR_SIZE];
   char useragent[128]; /* buah, we don't want a larger default user agent */