# define MYSWAP
#endif
-#if !defined(PERL_FOR_X2P) && !defined(WIN32)
+/* Cannot include embed.h here on Win32 as win32.h has not
+ yet been included and defines some config variables e.g. HAVE_INTERP_INTERN
+ */
+#if !defined(PERL_FOR_X2P) && !(defined(WIN32)||defined(VMS))
# include "embed.h"
#endif
# define SETERRNO(errcode,vmserrcode) (errno = (errcode))
#endif
-/* These definitions are sneaky.
- * Their only purpose is to avoid warnings on strict ANSI (non-VMS)
- * compilers which can get huffy about dollars in identifiers,
- * which is common practise in VMS. The definitions in the
- * non-VMS branch are not used (since the VMS error code is
- * unsurprisingly not of much use in non-VMS) -- but their only
- * point is to be something non-dollared. Neither are all instances
- * of dollared variables hidden this way, only at the spots where
- * non-VMS platforms see them. */
-#ifdef VMS
-#define VMS_LIB_INVARGV LIB$_INVARG
-#define VMS_RMS_DIR RMS$_DIR
-#define VMS_RMS_FAC RMS$_FAC
-#define VMS_RMS_IFI RMS$_IFI
-#define VMS_RMS_ISI RMS$_ISI
-#define VMS_SS_ACCVIO SS$_ACCVIO
-#define VMS_SS_IVCHAN SS$_IVCHAN
-#define VMS_SS_NORMAL SS$_NORMAL
-#else
-#define VMS_LIB_INVARG EINVAL
-#define VMS_RMS_DIR EBADF
-#define VMS_RMS_FAC 0
-#define VMS_RMS_IFI EBADF
-#define VMS_RMS_ISI EBADF
-#define VMS_SS_ACCVIO EFAULT
-#define VMS_SS_IVCHAN EBADF
-#define VMS_SS_NORMAL 0
-#endif
-
#ifdef USE_5005THREADS
# define ERRSV (thr->errsv)
# define DEFSV THREADSV(0)
#else
# if defined(VMS)
# include "vmsish.h"
+# include "embed.h"
# else
# if defined(PLAN9)
# include "./plan9/plan9ish.h"
#endif /* NETWARE */
#endif /* USE_5005THREADS || USE_ITHREADS */
-#ifdef WIN32
+#if defined(WIN32)
# include "win32.h"
#endif
#endif
#if defined(WIN32)
+/* Now all the config stuff is setup we can include embed.h */
# include "embed.h"
#endif