-/* e_os.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
#endif
/* Used to checking reference counts, most while doing perl5 stuff :-) */
-# ifdef REF_PRINT
-# undef REF_PRINT
-# define REF_PRINT(a,b) fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a)
+# if defined(OPENSSL_NO_STDIO)
+# if defined(REF_DEBUG)
+# error "REF_DEBUG requires stdio"
+# endif
+# if defined(REF_PRINT)
+# error "REF_PRINT requires stdio"
+# endif
# endif
-# if defined(OPENSSL_NO_STDIO) && defined(REF_CHECK)
-# error "Cannot have REF_CHECK with no-stdio"
+
+# if defined(REF_DEBUG)
+# define REF_ASSERT_ISNT(test) \
+ (void)((test) ? (OpenSSLDie(__FILE__, __LINE__, "refcount error"), 1) : 0)
+# else
+# define REF_ASSERT_ISNT(i)
# endif
-# if defined(OPENSSL_NO_STDIO) && defined(REF_PRINT)
-# error "Cannot have REF_PRINT with no-stdio"
+# ifdef REF_PRINT
+# define REF_PRINT_COUNT(a, b) \
+ fprintf(stderr, "%p:%4d:%s\n", b, b->references, a)
+# else
+# define REF_PRINT_COUNT(a, b)
# endif
+# define osslargused(x) (void)x
+
# ifndef DEVRANDOM
/*
* set this to a comma-separated list of 'random' device files to try out. My
*/
# define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom"
# endif
-# ifndef DEVRANDOM_EGD
+# if !defined(OPENSSL_NO_EGD) && !defined(DEVRANDOM_EGD)
/*
* set this to a comma-separated list of 'egd' sockets to try out. These
* sockets will be tried in the order listed in case accessing the device
So, what we do here is to change 0 to 1 to get the default success status,
and everything else is shifted up to fit into the status number field, and
- the status is tagged as an error, which I believe is what is wanted here.
+ the status is tagged as an error, which is what is wanted here.
+
+ Finally, we add the VMS C facility code 0x35a000, because there are some
+ programs, such as Perl, that will reinterpret the code back to something
+ POSIXly. 'man perlvms' explains it further.
+
+ NOTE: the perlvms manual wants to turn all codes 2 to 255 into success
+ codes (status type = 1). I couldn't disagree more. Fortunately, the
+ status type doesn't seem to bother Perl.
-- Richard Levitte
*/
-# define EXIT(n) do { int __VMS_EXIT = n; \
- if (__VMS_EXIT == 0) \
- __VMS_EXIT = 1; \
- else \
- __VMS_EXIT = (n << 3) | 2; \
- __VMS_EXIT |= 0x10000000; \
- exit(__VMS_EXIT); } while(0)
+# define EXIT(n) exit((n) ? (((n) << 3) | 2 | 0x10000000 | 0x35a000) : 1)
+
# define NO_SYS_PARAM_H
# define NO_SYS_UN_H
# ifdef OPENSSL_NO_SOCK
# define OpenSSL_Write(a,b,c) (-1)
# define OpenSSL_Read(a,b,c) (-1)
-# define SHUTDOWN(fd) close(fd)
-# define SHUTDOWN2(fd) close(fd)
# elif !defined(__DJGPP__)
# if defined(_WIN32_WCE) && _WIN32_WCE<410
# define getservbyname _masked_declaration_getservbyname
# endif
# define OpenSSL_Write(a,b,c) send((a),(b),(c),0)
# define OpenSSL_Read(a,b,c) recv((a),(b),(c),0)
-# define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); }
-# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); }
# else
# define OpenSSL_Write(a,b,c) write_s(a,b,c,0)
# define OpenSSL_Read(a,b,c) read_s(a,b,c)
-# define SHUTDOWN(fd) close_s(fd)
-# define SHUTDOWN2(fd) close_s(fd)
# endif
# elif defined(OPENSSL_SYS_NETWARE)
* configured for BSD
*/
# if defined(NETWARE_BSDSOCK)
+# include <netdb.h>
# include <sys/socket.h>
# include <netinet/in.h>
# include <sys/time.h>
# endif
# define OpenSSL_Write(a,b,c) send((a),(b),(c),0)
# define OpenSSL_Read(a,b,c) recv((a),(b),(c),0)
-# define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); }
-# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); }
# else
# endif
# include <netinet/in.h>
# include <arpa/inet.h>
+# include <netinet/tcp.h>
# endif
# ifdef OPENSSL_SYS_AIX
# define OpenSSL_Read(a,b,c) read((a),(b),(c))
# define OpenSSL_Write(a,b,c) write((a),(b),(c))
-# define SHUTDOWN(fd) { shutdown((fd),0); closesocket((fd)); }
-# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket((fd)); }
# ifndef INVALID_SOCKET
# define INVALID_SOCKET (-1)
# endif /* INVALID_SOCKET */
# endif
/* end vxworks */
-# if !defined(inline) && !defined(__cplusplus)
-# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L
- /* do nothing, inline works */
-# elif defined(__GNUC__) && __GNUC__>=2
-# define inline __inline__
-# elif defined(_MSC_VER)
- /*
- * Visual Studio: inline is available in C++ only, however
- * __inline is available for C, see
- * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx
- */
-# define inline __inline
-# else
-# define inline
-# endif
-# endif
-
#define OSSL_NELEM(x) (sizeof(x)/sizeof(x[0]))
#ifdef __cplusplus