summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2000-03-03 15:42:28 +0000
committerGurusamy Sarathy <gsar@cpan.org>2000-03-03 15:42:28 +0000
commitc93fa8177be816b728baa070d16f5574403845f6 (patch)
tree4808e1f396a09528ccea5aca00bedca957836837
parent8c8ad484ae56ad5a81dc3b76a40859fc90c16a10 (diff)
parent7e6fa307436d3e019e355ee1012a967957762854 (diff)
downloadperl-c93fa8177be816b728baa070d16f5574403845f6.tar.gz
integrate cfgperl and vmsperl contents into mainline
p4raw-id: //depot/perl@5486
-rwxr-xr-xConfigure8
-rw-r--r--Porting/Glossary16
-rw-r--r--Porting/config.sh52
-rw-r--r--Porting/config_H44
-rw-r--r--Todo-5.69
-rw-r--r--config_h.SH6
-rw-r--r--configure.com151
-rw-r--r--epoc/config.sh5
-rw-r--r--hints/irix_6.sh6
-rw-r--r--hints/solaris_2.sh37
-rw-r--r--perl.h3
-rw-r--r--pod/perl.pod1
-rw-r--r--pod/perldelta.pod25
-rw-r--r--pod/perlre.pod2
-rw-r--r--pod/pod2usage.PL4
-rw-r--r--pod/podselect.PL4
-rw-r--r--regcomp.c12
-rwxr-xr-xt/comp/use.t4
-rwxr-xr-xt/lib/bigfltpm.t104
-rwxr-xr-xt/op/pack.t3
-rwxr-xr-xt/op/universal.t2
-rw-r--r--t/pragma/warn/regcomp9
-rw-r--r--utils/dprofpp.PL5
-rw-r--r--vms/descrip_mms.template12
-rw-r--r--vms/ext/filespec.t2
-rw-r--r--vms/gen_shrfls.pl6
-rw-r--r--vms/perlvms.pod19
-rw-r--r--vms/subconfigure.com4
-rw-r--r--vms/vms.c32
-rw-r--r--vms/vmsish.h4
-rw-r--r--vos/config.def1
-rw-r--r--vos/config.h18
-rwxr-xr-xvos/config_h.SH_orig18
-rw-r--r--win32/config.bc1
-rw-r--r--win32/config.gc1
-rw-r--r--win32/config.vc1
36 files changed, 471 insertions, 160 deletions
diff --git a/Configure b/Configure
index b788f76c1c..5842e8ad9c 100755
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Thu Mar 2 21:42:14 EET 2000 [metaconfig 3.0 PL70]
+# Generated on Fri Mar 3 16:54:03 EET 2000 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.com)
cat >/tmp/c1$$ <<EOF
@@ -618,6 +618,7 @@ i_gdbm=''
d_grpasswd=''
i_grp=''
i_iconv=''
+i_ieeefp=''
i_inttypes=''
i_limits=''
i_locale=''
@@ -13938,6 +13939,10 @@ eval $setvar
set iconv.h i_iconv
eval $inhdr
+: see if this is a ieeefp.h system
+set ieeefp.h i_ieeefp
+eval $inhdr
+
: see if locale.h is available
set locale.h i_locale
eval $inhdr
@@ -15227,6 +15232,7 @@ i_float='$i_float'
i_gdbm='$i_gdbm'
i_grp='$i_grp'
i_iconv='$i_iconv'
+i_ieeefp='$i_ieeefp'
i_inttypes='$i_inttypes'
i_limits='$i_limits'
i_locale='$i_locale'
diff --git a/Porting/Glossary b/Porting/Glossary
index 71d97f8ea9..6c6109c161 100644
--- a/Porting/Glossary
+++ b/Porting/Glossary
@@ -852,6 +852,10 @@ d_lstat (d_lstat.U):
This variable conditionally defines HAS_LSTAT if lstat() is
available to do file stats on symbolic links.
+d_madvise (d_madvise.U):
+ This variable conditionally defines HAS_MADVISE if madvise() is
+ available to map a file into memory.
+
d_mblen (d_mblen.U):
This variable conditionally defines the HAS_MBLEN symbol, which
indicates to the C program that the mblen() routine is available
@@ -1134,6 +1138,10 @@ d_pwquota (i_pwd.U):
This variable conditionally defines PWQUOTA, which indicates
that struct passwd contains pw_quota.
+d_qgcvt (d_qgcvt.U):
+ This variable conditionally defines the HAS_QGCVT symbol, which
+ indicates to the C program that the qgcvt() routine is available.
+
d_quad (quadtype.U):
This variable, if defined, tells that there's a 64-bit integer type,
quadtype.
@@ -1918,6 +1926,10 @@ i_iconv (i_iconv.U):
This variable conditionally defines the I_ICONV symbol, and indicates
whether a C program should include <iconv.h>.
+i_ieeefp (i_ieeefp.U):
+ This variable conditionally defines the I_IEEEFP symbol, and indicates
+ whether a C program should include <ieeefp.h>.
+
i_inttypes (i_inttypes.U):
This variable conditionally defines the I_INTTYPES symbol,
and indicates whether a C program should include <inttypes.h>.
@@ -2027,6 +2039,10 @@ i_string (i_string.U):
This variable conditionally defines the I_STRING symbol, which
indicates that <string.h> should be included rather than <strings.h>.
+i_sunmath (i_sunmath.U):
+ This variable conditionally defines the I_SUNMATH symbol, and indicates
+ whether a C program should include <sunmath.h>.
+
i_sysaccess (i_sysaccess.U):
This variable conditionally defines the I_SYS_ACCESS symbol,
and indicates whether a C program should include <sys/access.h>.
diff --git a/Porting/config.sh b/Porting/config.sh
index 9476ce0684..0fe3d67ac9 100644
--- a/Porting/config.sh
+++ b/Porting/config.sh
@@ -8,7 +8,7 @@
# Package name : perl5
# Source directory : .
-# Configuration time: Sat Feb 26 03:04:10 EET 2000
+# Configuration time: Fri Mar 3 17:00:59 EET 2000
# Configured by : jhi
# Target system : osf1 alpha.hut.fi v4.0 878 alpha
@@ -35,8 +35,8 @@ api_subversion='0'
api_version='5'
api_versionstring='5.005'
ar='ar'
-archlib='/opt/perl/lib/5.5.660/alpha-dec_osf-thread-multi'
-archlibexp='/opt/perl/lib/5.5.660/alpha-dec_osf-thread-multi'
+archlib='/opt/perl/lib/5.5.670/alpha-dec_osf-thread-multi'
+archlibexp='/opt/perl/lib/5.5.670/alpha-dec_osf-thread-multi'
archname64=''
archname='alpha-dec_osf-thread-multi'
archobjs=''
@@ -54,12 +54,12 @@ castflags='0'
cat='cat'
cc='cc'
cccdlflags=' '
-ccdlflags=' -Wl,-rpath,/opt/perl/lib/5.5.660/alpha-dec_osf-thread-multi/CORE'
+ccdlflags=' -Wl,-rpath,/opt/perl/lib/5.5.670/alpha-dec_osf-thread-multi/CORE'
ccflags='-pthread -std -DLANGUAGE_C'
ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_BSD=1 SYSTYPE_BSD=1 unix=1'
cf_by='jhi'
cf_email='yourname@yourhost.yourplace.com'
-cf_time='Sat Feb 26 03:04:10 EET 2000'
+cf_time='Fri Mar 3 17:00:59 EET 2000'
charsize='1'
chgrp=''
chmod=''
@@ -195,7 +195,7 @@ d_gnulibc='undef'
d_grpasswd='define'
d_hasmntopt='undef'
d_htonl='define'
-d_iconv='undef'
+d_iconv='define'
d_index='undef'
d_inetaton='define'
d_int64_t='undef'
@@ -210,6 +210,7 @@ d_longdbl='define'
d_longlong='define'
d_lseekproto='define'
d_lstat='define'
+d_madvise='define'
d_mblen='define'
d_mbstowcs='define'
d_mbtowc='define'
@@ -261,6 +262,7 @@ d_pwexpire='undef'
d_pwgecos='define'
d_pwpasswd='define'
d_pwquota='define'
+d_qgcvt='undef'
d_quad='define'
d_readdir='define'
d_readlink='define'
@@ -436,6 +438,7 @@ i_float='define'
i_gdbm='undef'
i_grp='define'
i_iconv='define'
+i_ieeefp='undef'
i_inttypes='undef'
i_limits='define'
i_locale='define'
@@ -461,6 +464,7 @@ i_stdarg='define'
i_stddef='define'
i_stdlib='define'
i_string='define'
+i_sunmath='undef'
i_sysaccess='define'
i_sysdir='define'
i_sysfile='define'
@@ -504,17 +508,17 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='/opt/perl/lib/5.5.660/alpha-dec_osf-thread-multi'
+installarchlib='/opt/perl/lib/5.5.670/alpha-dec_osf-thread-multi'
installbin='/opt/perl/bin'
installman1dir='/opt/perl/man/man1'
installman3dir='/opt/perl/man/man3'
installprefix='/opt/perl'
installprefixexp='/opt/perl'
-installprivlib='/opt/perl/lib/5.5.660'
+installprivlib='/opt/perl/lib/5.5.670'
installscript='/opt/perl/bin'
-installsitearch='/opt/perl/lib/site_perl/5.5.660/alpha-dec_osf-thread-multi'
+installsitearch='/opt/perl/lib/site_perl/5.5.670/alpha-dec_osf-thread-multi'
installsitebin='/opt/perl/bin'
-installsitelib='/opt/perl/lib/site_perl/5.5.660'
+installsitelib='/opt/perl/lib/site_perl/5.5.670'
installstyle='lib'
installusrbinperl='define'
installvendorbin=''
@@ -535,12 +539,12 @@ lib_ext='.a'
libc='/usr/shlib/libc.so'
libperl='libperl.so'
libpth='/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib'
-libs='-lgdbm -ldbm -ldb -lm -lpthread -lexc'
+libs='-lgdbm -ldbm -ldb -lm -liconv -lpthread -lexc'
libsdirs=' /usr/shlib /usr/ccs/lib'
-libsfiles=' libgdbm.so libdbm.a libdb.so libm.so libpthread.so libexc.so'
-libsfound=' /usr/shlib/libgdbm.so /usr/ccs/lib/libdbm.a /usr/shlib/libdb.so /usr/shlib/libm.so /usr/shlib/libpthread.so /usr/shlib/libexc.so'
+libsfiles=' libgdbm.so libdbm.a libdb.so libm.so libiconv.so libpthread.so libexc.so'
+libsfound=' /usr/shlib/libgdbm.so /usr/ccs/lib/libdbm.a /usr/shlib/libdb.so /usr/shlib/libm.so /usr/shlib/libiconv.so /usr/shlib/libpthread.so /usr/shlib/libexc.so'
libspath=' /usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib'
-libswanted='sfio socket inet nsl nm gdbm dbm db malloc dld ld sun m cposix posix ndir dir crypt sec ucb BSD x pthread exc'
+libswanted='sfio socket bind inet nsl nm gdbm dbm db malloc dld ld sun m cposix posix ndir dir crypt sec ucb BSD x iconv pthread exc'
line=''
lint=''
lkflags=''
@@ -619,8 +623,8 @@ pmake=''
pr=''
prefix='/opt/perl'
prefixexp='/opt/perl'
-privlib='/opt/perl/lib/5.5.660'
-privlibexp='/opt/perl/lib/5.5.660'
+privlib='/opt/perl/lib/5.5.670'
+privlibexp='/opt/perl/lib/5.5.670'
prototype='define'
ptrsize='8'
quadkind='2'
@@ -667,12 +671,12 @@ sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE"
sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 6 6 16 20 23 23 23 29 48 '
sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 6, 16, 20, 23, 23, 23, 29, 48, 0'
signal_t='void'
-sitearch='/opt/perl/lib/site_perl/5.5.660/alpha-dec_osf-thread-multi'
-sitearchexp='/opt/perl/lib/site_perl/5.5.660/alpha-dec_osf-thread-multi'
+sitearch='/opt/perl/lib/site_perl/5.5.670/alpha-dec_osf-thread-multi'
+sitearchexp='/opt/perl/lib/site_perl/5.5.670/alpha-dec_osf-thread-multi'
sitebin='/opt/perl/bin'
sitebinexp='/opt/perl/bin'
-sitelib='/opt/perl/lib/site_perl/5.5.660'
-sitelibexp='/opt/perl/lib/site_perl/5.5.660'
+sitelib='/opt/perl/lib/site_perl/5.5.670'
+sitelibexp='/opt/perl/lib/site_perl/5.5.670'
siteprefix='/opt/perl'
siteprefixexp='/opt/perl'
sizetype='size_t'
@@ -701,7 +705,7 @@ stdio_ptr='((fp)->_ptr)'
stdio_stream_array='_iob'
strings='/usr/include/string.h'
submit=''
-subversion='660'
+subversion='670'
sysman='/usr/man/man1'
tail=''
tar=''
@@ -762,11 +766,11 @@ vendorlib=''
vendorlibexp=''
vendorprefix=''
vendorprefixexp=''
-version='5.5.660'
+version='5.5.670'
vi=''
voidflags='15'
xlibpth='/usr/lib/386 /lib/386'
-xs_apiversion='5.5.660'
+xs_apiversion='5.5.670'
zcat=''
zip='zip'
# Configure command line arguments.
@@ -786,7 +790,7 @@ config_arg10='-Dmyhostname=yourhost'
config_arg11='-dE'
PERL_REVISION=5
PERL_VERSION=5
-PERL_SUBVERSION=660
+PERL_SUBVERSION=670
PERL_API_REVISION=5
PERL_API_VERSION=5
PERL_API_SUBVERSION=0
diff --git a/Porting/config_H b/Porting/config_H
index e34e1f38ac..c627afafee 100644
--- a/Porting/config_H
+++ b/Porting/config_H
@@ -17,7 +17,7 @@
/*
* Package name : perl5
* Source directory : .
- * Configuration time: Sat Feb 26 03:04:10 EET 2000
+ * Configuration time: Fri Mar 3 17:00:59 EET 2000
* Configured by : jhi
* Target system : osf1 alpha.hut.fi v4.0 878 alpha
*/
@@ -1098,8 +1098,8 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "/opt/perl/lib/5.5.660/alpha-dec_osf-thread-multi" /**/
-#define ARCHLIB_EXP "/opt/perl/lib/5.5.660/alpha-dec_osf-thread-multi" /**/
+#define ARCHLIB "/opt/perl/lib/5.5.670/alpha-dec_osf-thread-multi" /**/
+#define ARCHLIB_EXP "/opt/perl/lib/5.5.670/alpha-dec_osf-thread-multi" /**/
/* ARCHNAME:
* This symbol holds a string representing the architecture name.
@@ -1605,7 +1605,7 @@
* This symbol, if defined, indicates that the iconv routine is
* available to do character set conversions.
*/
-/*#define HAS_ICONV / **/
+#define HAS_ICONV /**/
/* HAS_INT64_T:
* This symbol will defined if the C compiler supports int64_t.
@@ -1662,6 +1662,12 @@
#define LONGLONGSIZE 8 /**/
#endif
+/* HAS_MADVISE:
+ * This symbol, if defined, indicates that the madvise system call is
+ * available to map a file into memory.
+ */
+#define HAS_MADVISE /**/
+
/* HAS_MEMCHR:
* This symbol, if defined, indicates that the memchr routine is available
* to locate characters within a C string.
@@ -2350,6 +2356,12 @@
*/
/*#define I_SOCKS / **/
+/* I_SUNMATH:
+ * This symbol, if defined, indicates that <sunmath.h> exists and
+ * should be included.
+ */
+/*#define I_SUNMATH / **/
+
/* I_SYSLOG:
* This symbol, if defined, indicates that <syslog.h> exists and
* should be included.
@@ -2663,8 +2675,8 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "/opt/perl/lib/5.5.660" /**/
-#define PRIVLIB_EXP "/opt/perl/lib/5.5.660" /**/
+#define PRIVLIB "/opt/perl/lib/5.5.670" /**/
+#define PRIVLIB_EXP "/opt/perl/lib/5.5.670" /**/
/* PTRSIZE:
* This symbol contains the size of a pointer, so that the C preprocessor
@@ -2762,8 +2774,8 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "/opt/perl/lib/site_perl/5.5.660/alpha-dec_osf-thread-multi" /**/
-#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.5.660/alpha-dec_osf-thread-multi" /**/
+#define SITEARCH "/opt/perl/lib/site_perl/5.5.670/alpha-dec_osf-thread-multi" /**/
+#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.5.670/alpha-dec_osf-thread-multi" /**/
/* SITELIB:
* This symbol contains the name of the private library for this package.
@@ -2780,8 +2792,8 @@
* This symbol contains the ~name expanded version of SITELIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITELIB "/opt/perl/lib/site_perl/5.5.660" /**/
-#define SITELIB_EXP "/opt/perl/lib/site_perl/5.5.660" /**/
+#define SITELIB "/opt/perl/lib/site_perl/5.5.670" /**/
+#define SITELIB_EXP "/opt/perl/lib/site_perl/5.5.670" /**/
/* Size_t:
* This symbol holds the type used to declare length parameters
@@ -2964,7 +2976,7 @@
/* PERL_XS_APIVERSION:
* This variable contains the version of the oldest perl binary
* compatible with the present perl. perl.c:incpush() and
- * lib/lib.pm will automatically search in /opt/perl/lib/site_perl/5.5.660/alpha-dec_osf-thread-multi for older
+ * lib/lib.pm will automatically search in /opt/perl/lib/site_perl/5.5.670/alpha-dec_osf-thread-multi for older
* directories across major versions back to xs_apiversion.
* This is only useful if you have a perl library directory tree
* structured like the default one.
@@ -2983,7 +2995,7 @@
* compatible with the present perl. (That is, pure perl modules
* written for pm_apiversion will still work for the current
* version). perl.c:incpush() and lib/lib.pm will automatically
- * search in /opt/perl/lib/site_perl/5.5.660 for older directories across major versions
+ * search in /opt/perl/lib/site_perl/5.5.670 for older directories across major versions
* back to pm_apiversion. This is only useful if you have a perl
* library directory tree structured like the default one. The
* versioned site_perl library was introduced in 5.005, so that's
@@ -2993,7 +3005,7 @@
* (presumably) be similar.
* See the INSTALL file for how this works.
*/
-#define PERL_XS_APIVERSION "5.5.660"
+#define PERL_XS_APIVERSION "5.5.670"
#define PERL_PM_APIVERSION "5.005"
/* HAS_GETFSSTAT:
@@ -3002,6 +3014,12 @@
*/
#define HAS_GETFSSTAT /**/
+/* I_IEEEFP:
+ * This symbol, if defined, indicates that <ieeefp.h> exists and
+ * should be included.
+ */
+/*#define I_IEEEFP / **/
+
/* HAS_LSEEK_PROTO:
* This symbol, if defined, indicates that the system provides
* a prototype for the lseek() function. Otherwise, it is up
diff --git a/Todo-5.6 b/Todo-5.6
index d220c97228..fbaeaae533 100644
--- a/Todo-5.6
+++ b/Todo-5.6
@@ -55,9 +55,13 @@ Locales
Regexen
make RE engine thread-safe
POSIX [=bar=] and [.zap.] would nice too but there's no API for them
- (=bar= could be done with Unicode, though)
+ (=bar= could be done with Unicode, though, see TR about normalization forms)
approximate matching
+Security
+ use fchown, fchmod (and futimes?) internally when possible
+ use fchdir(how portable?)
+
Reliable Signals
custom opcodes
alternate runops() for signal despatch
@@ -70,8 +74,11 @@ Win32 stuff
Miscellaneous
add new modules (Archive::Tar, Compress::Zlib, CPAN::FTP?)
+ sub-second sleep? (integrate Time::HiRes?)
+ floating point handling: nans, infinities, fp exception masks, etc
replace pod2html with new PodtoHtml? (requires other modules from CPAN)
automate testing with large parts of CPAN
+ Unicode collation?
Ongoing
keep filenames 8.3 friendly, where feasible
diff --git a/config_h.SH b/config_h.SH
index 9d3ec3d4e5..d452aa9fa1 100644
--- a/config_h.SH
+++ b/config_h.SH
@@ -3028,6 +3028,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
*/
#$d_getfsstat HAS_GETFSSTAT /**/
+/* I_IEEEFP:
+ * This symbol, if defined, indicates that <ieeefp.h> exists and
+ * should be included.
+ */
+#$i_ieeefp I_IEEEFP /**/
+
/* HAS_LSEEK_PROTO:
* This symbol, if defined, indicates that the system provides
* a prototype for the lseek() function. Otherwise, it is up
diff --git a/configure.com b/configure.com
index 5c970e254c..a1e87d5d8a 100644
--- a/configure.com
+++ b/configure.com
@@ -999,6 +999,39 @@ $ ENDIF
$!
$ ENDIF !%Config-I-VMS, skip remaining "where install" questions
$!
+$ perl_symbol = "true"
+$ perl_verb = ""
+$ dflt = "y"
+$ IF .NOT.silent
+$ THEN
+$ echo ""
+$ echo "%Config-I-VMS, You may choose to write ''packageup'_SETUP.COM to assign a foreign"
+$ echo "-Config-I-VMS, symbol to invoke ''package', which is the usual method."
+$ echO "-Config-I-VMS, If you do not do so then you would need a DCL command verb at the"
+$ echo "-Config-I-VMS, process or the system wide level."
+$ ENDIF
+$ rp = "Invoke perl as a global symbol foreign command [''dflt'] "
+$ GOSUB myread
+$ IF (.NOT.ans).AND.(ans.NES."") THEN perl_symbol = "false"
+$!
+$ IF (.NOT.perl_symbol)
+$ THEN
+$ dflt = "y"
+$ IF .NOT.silent
+$ THEN
+$ echo ""
+$ echo "%Config-I-VMS, Since you won't be using a symbol you must choose to put the ''packageup'"
+$ echo "-Config-I-VMS, verb in a per-process table or in the system wide DCLTABLES (which"
+$ echo "-Config-I-VMS, would require write privilege)."
+$ ENDIF
+$ rp = "Invoke perl as a per process command verb [ ''dflt' ] "
+$ GOSUB myread
+$ IF (.NOT.ans).AND.(ans.NES."")
+$ THEN perl_verb = "DCLTABLES"
+$ ELSE perl_verb = "PROCESS"
+$ ENDIF
+$ ENDIF ! (.NOT.perl_symbol)
+$!
$!: set the base revision
$ baserev="5"
$!: get the patchlevel
@@ -2145,6 +2178,28 @@ $ IF f$search("config.msg") .eqs. "" THEN echo "OK."
$!
$! %Config-I-VMS, write perl_setup.com here
$!
+$ IF (.NOT.perl_symbol)
+$ THEN
+$ file_2_find = "[-]''packageup'.cld"
+$ echo ""
+$ echo4 "%Config-I-VMS, The perl.cld file is now being written..."
+$ OPEN/WRITE CONFIG 'file_2_find'
+$ IF (use_vmsdebug_perl)
+$ THEN
+$ WRITE CONFIG "define verb dbgperl"
+$ WRITE CONFIG F$FAO("!_!AS","image ''packageup'_root:[000000]dbgperl''ext'")
+$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
+$ WRITE CONFIG ""
+$ WRITE CONFIG "define verb perl"
+$ WRITE CONFIG F$FAO("!_!AS","image ''packageup'_root:[000000]ndbgPerl''ext'")
+$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
+$ ELSE
+$ WRITE CONFIG "define verb perl"
+$ WRITE CONFIG F$FAO("!_!AS","image ''packageup'_root:[000000]perl''ext'")
+$ WRITE CONFIG F$FAO("!_!AS","cliflags (foreign)")
+$ ENDIF
+$ CLOSE CONFIG
+$ ENDIF ! (.NOT.perl_symbol)
$ echo ""
$ echo4 "%Config-I-VMS, The perl_setup.com file is now being written..."
$ file_2_find = "[-]perl_setup.com"
@@ -2162,20 +2217,34 @@ $ prefix = prefix - "000000."
$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN -
prefix = prefix - "]" + ".]"
$ WRITE CONFIG "$ define/translation=concealed Perl_Root ''prefix'"
-$ write config "$ ext = "".exe"""
-$ if sharedperl .eqs. "Y"
-$ then
+$ WRITE CONFIG "$ ext = "".exe"""
+$ IF sharedperl .EQS. "Y"
+$ THEN
$ write config "$ if f$getsyi(""ARCH_NAME"") .nes. ""VAX"" then ext = "".AXE"""
-$ endif
-$ IF use_vmsdebug_perl .eqs. "Y"
-$ then
-$ WRITE CONFIG "$ dbgperl :== $Perl_Root:[000000]dbgPerl'ext'"
-$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]ndbgPerl'ext'"
-$ WRITE CONFIG "$ define dbgPerlShr Perl_Root:[000000]dbgPerlShr'ext'"
-$ else
-$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]Perl'ext'"
-$ WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr'ext'"
-$ endif
+$ ENDIF
+$ IF (perl_symbol)
+$ THEN
+$ IF (use_vmsdebug_perl)
+$ THEN
+$ WRITE CONFIG "$ dbgperl :== $Perl_Root:[000000]dbgPerl'ext'"
+$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]ndbgPerl'ext'"
+$ WRITE CONFIG "$ define dbgPerlShr Perl_Root:[000000]dbgPerlShr'ext'"
+$ ELSE
+$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]Perl'ext'"
+$ WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr'ext'"
+$ ENDIF
+$ ELSE ! .NOT.perl_symbol
+$ IF (use_vmsdebug_perl)
+$ THEN
+$ WRITE CONFIG "$ define dbgPerlShr Perl_Root:[000000]dbgPerlShr'ext'"
+$ ELSE
+$ WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr'ext'"
+$ ENDIF
+$ IF perl_verb .EQS. "PROCESS"
+$ THEN
+$ WRITE CONFIG "$ set command ''packagup'_ROOT:[000000]''packageup'.CLD"
+$ ENDIF
+$ ENDIF ! perl_symbol
$ WRITE CONFIG "$ define/nolog pod2text Perl_Root:[lib.pod]pod2text.com"
$ WRITE CONFIG "$ define/nolog pod2html Perl_Root:[lib.pod]pod2html.com"
$ WRITE CONFIG "$ define/nolog pod2man Perl_Root:[lib.pod]pod2man.com"
@@ -2189,14 +2258,40 @@ $ ENDIF
$ WRITE CONFIG "$!"
$ WRITE CONFIG "$! Symbols for commonly used scripts:"
$ WRITE CONFIG "$!"
-$ WRITE CONFIG "$ Perldoc == ""'"+"'Perl' Perl_Root:[lib.pod]Perldoc.com -t"""
-$ WRITE CONFIG "$ pod2text == ""'"+"'Perl' pod2text"""
-$ WRITE CONFIG "$ pod2html == ""'"+"'Perl' pod2html"""
-$ WRITE CONFIG "$!pod2man == ""'"+"'Perl' pod2man"""
-$ WRITE CONFIG "$!Perlbug == ""'"+"'Perl' Perl_Root:[lib]Perlbug.com"""
-$ WRITE CONFIG "$!c2ph == ""'"+"'Perl' c2ph"""
-$ WRITE CONFIG "$!h2ph == ""'"+"'Perl' h2ph"""
-$ WRITE CONFIG "$!h2xs == ""'"+"'Perl' h2xs"""
+$ IF (perl_symbol)
+$ THEN
+$ WRITE CONFIG "$ Perldoc == ""'"+"'Perl' Perl_Root:[lib.pod]Perldoc.com -t"""
+$ WRITE CONFIG "$ pod2text == ""'"+"'Perl' pod2text"""
+$ WRITE CONFIG "$ pod2html == ""'"+"'Perl' pod2html"""
+$ WRITE CONFIG "$ pod2latex == ""'"+"'Perl' Perl_Root:[lib.pod]pod2latex.com"""
+$ WRITE CONFIG "$!pod2man == ""'"+"'Perl' pod2man"""
+$ WRITE CONFIG "$!Perlbug == ""'"+"'Perl' Perl_Root:[lib]Perlbug.com"""
+$ WRITE CONFIG "$ c2ph == ""'"+"'Perl' Perl_Root:[utils]c2ph.com"""
+$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
+$ THEN
+$ WRITE CONFIG "$ dprofpp == ""'"+"'Perl' Perl_Root:[utils]dprofpp.com"""
+$ ENDIF
+$ WRITE CONFIG "$ h2ph == ""'"+"'Perl' Perl_Root:[utils]h2ph.com"""
+$ WRITE CONFIG "$ h2xs == ""'"+"'Perl' Perl_Root:[utils]h2xs.com"""
+$ WRITE CONFIG "$!perlcc == ""'"+"'Perl' Perl_Root:[utils]perlcc.com"""
+$ WRITE CONFIG "$ splain == ""'"+"'Perl' Perl_Root:[utils]splain.com"""
+$ ELSE
+$ WRITE CONFIG "$ Perldoc == ""Perl Perl_Root:[lib.pod]Perldoc.com -t"""
+$ WRITE CONFIG "$ pod2text == ""Perl pod2text"""
+$ WRITE CONFIG "$ pod2html == ""Perl pod2html"""
+$ WRITE CONFIG "$ pod2latex == ""Perl Perl_Root:[lib.pod]pod2latex.com"""
+$ WRITE CONFIG "$!pod2man == ""Perl pod2man"""
+$ WRITE CONFIG "$!Perlbug == ""Perl Perl_Root:[lib]Perlbug.com"""
+$ WRITE CONFIG "$ c2ph == ""Perl Perl_Root:[utils]c2ph.com"""
+$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
+$ THEN
+$ WRITE CONFIG "$ dprofpp == ""Perl Perl_Root:[utils]dprofpp.com"""
+$ ENDIF
+$ WRITE CONFIG "$ h2ph == ""Perl Perl_Root:[utils]h2ph.com"""
+$ WRITE CONFIG "$ h2xs == ""Perl Perl_Root:[utils]h2xs.com"""
+$ WRITE CONFIG "$!perlcc == ""Perl Perl_Root:[utils]perlcc.com"""
+$ WRITE CONFIG "$ splain == ""Perl Perl_Root:[utils]splain.com"""
+$ ENDIF
$ CLOSE CONFIG
$!
$ echo ""
@@ -2206,6 +2301,20 @@ $ echo "-Config-I-VMS, Add that file (or an @ call to it) to your [SY]LOGIN.COM
$ echo "-Config-I-VMS, when you are satisfied with a successful compilation,"
$ echo "-Config-I-VMS, testing, and installation of your perl."
$ echo ""
+$ IF ((.NOT.perl_symbol) .AND. (perl_verb .EQS. "DCLTABLES"))
+$ THEN
+$ file_2_find = "[-]''packageup'_install.com"
+$ OPEN/WRITE CONFIG 'file_2_find
+$ WRITE CONFIG "$ set command perl /table=sys$common:[syslib]dcltables.exe -"
+$ WRITE CONFIG " /output=sys$common:[syslib]dcltables.exe"
+$ WRITE CONFIG "$ install replace sys$common:[syslib]dcltables.exe"
+$ CLOSE CONFIG
+$ echo4 ""
+$ echo4 "%Config-I-VMS, In order to install the ''packageup' verb into DCLTABLES run:"
+$ echo4 "-Config-I-VMS, @ ''F$SEARCH(file_2_find)'"
+$ echo4 "-Config-I-VMS, after a successful build, test, and install. Do so with CMKRNL privilege."
+$ echo4 ""
+$ ENDIF
$!
$!figure out where we "are" by parsing 'vms_default_directory_name'
$!
diff --git a/epoc/config.sh b/epoc/config.sh
index 7e913d6516..71316834c8 100644
--- a/epoc/config.sh
+++ b/epoc/config.sh
@@ -191,6 +191,7 @@ d_gnulibc='undef'
d_grpasswd='undef'
d_hasmntopt='undef'
d_htonl='define'
+d_iconv='undef'
d_index='undef'
d_inetaton='define'
d_int64t='undef'
@@ -415,6 +416,8 @@ i_fcntl='define'
i_float='undef'
i_gdbm='undef'
i_grp='undef'
+i_iconv='undef'
+i_ieeefp='undef'
i_inttypes='undef'
i_limits='define'
i_locale='undef'
@@ -778,7 +781,5 @@ d_strtouq='undef'
d_nv_preserves_uv='define'
use5005threads='undef'
useithreads='undef'
-d_iconv='undef'
-i_iconv='undef'
inc_version_list=' '
inc_version_list_init='0'
diff --git a/hints/irix_6.sh b/hints/irix_6.sh
index 09c5ee1d59..5e36c31cf2 100644
--- a/hints/irix_6.sh
+++ b/hints/irix_6.sh
@@ -40,6 +40,7 @@ case "$cc" in
*) test -f /usr/lib32/libm.so && cc='cc -n32' ;;
esac
esac
+test -z "$cc" && cc=cc
case "$use64bitint" in
$define|true|[yY]*)
@@ -206,8 +207,9 @@ esac
# Don't groan about unused libraries.
ldflags="$ldflags -Wl,-woff,84"
-case "`$cc -version 2>&1`" in
-*7.2.*) op_cflags='optimize=-O1' ;; # workaround for an optimizer bug
+case "`uname -s`-`$cc -version 2>&1`" in
+IRIX64-*7.2.*)
+op_cflags='optimize=-O1' ;; # workaround for an optimizer bug
esac
# We don't want these libraries.
diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh
index 8ad616d6da..e3b9ee02b3 100644
--- a/hints/solaris_2.sh
+++ b/hints/solaris_2.sh
@@ -56,8 +56,8 @@ esac
# Here's another draft of the perl5/solaris/gcc sanity-checker.
-test -z "`{$cc:-cc} -V 2>/dev/null|grep -i workshop`" || ccisworkshop="$define"
-test -z "`{$cc:-cc} -v 2>/dev/null|grep -i gcc`" || ccisgcc="$define"
+test -z "`${cc:-cc} -V 2>&1|grep -i workshop`" || ccisworkshop="$define"
+test -z "`${cc:-cc} -v 2>&1|grep -i gcc`" || ccisgcc="$define"
case "$ccisworkshop" in
"$define")
@@ -380,8 +380,8 @@ EOCBU
cat > UU/use64bitall.cbu <<'EOCBU'
# This script UU/use64bitall.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to be maximally 64 bitty.
-case "$use64bitall" in
-"$define"|true|[yY]*)
+case "$use64bitall-$use64bitall_done" in
+"$define-"|true-|[yY]*-)
libc='/usr/lib/sparcv9/libc.so'
if test ! -f $libc; then
cat >&4 <<EOM
@@ -392,6 +392,13 @@ Cannot continue, aborting.
EOM
exit 1
fi
+ if test -n "$workshoplibs"; then
+ loclibpth=`echo $loclibpth | sed -e "s% $workshoplibs%%" `
+ for lib in $workshoplibs; do
+ loclibpth="$loclibpth $lib/sparcv9"
+ done
+ loclibpth="$loclibpth $workshoplibs"
+ fi
loclibpth="$loclibpth /usr/lib/sparcv9"
case "$cc -v 2>/dev/null" in
*gcc*)
@@ -427,12 +434,13 @@ EOM
*64-bit*|*SPARCV9*) ;;
*) xxx=/no/64-bit$xxx ;;
esac'
+ use64bitall_done=yes
;;
esac
EOCBU
# Actually, we want to run this already now, if so requested,
-# because we need to fix up the flags right now.
+# because we need to fix up things right now.
case "$use64bitall" in
"$define"|true|[yY]*)
. ./UU/use64bitall.cbu
@@ -442,13 +450,13 @@ esac
cat > UU/uselongdouble.cbu <<'EOCBU'
# This script UU/uselongdouble.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use long doubles.
-case "$uselongdouble" in
-"$define"|true|[yY]*)
+case "$uselongdouble-$uselongdouble_done" in
+"$define-"|true-|[yY]*-)
case "$ccisworkshop" in
- '')
- cat <<EOM
+ '') cat <<EOM
-I do not see the libsunmath.so; therefore I cannot do long doubles, sorry.
+I do not see the Sun Workshop compiler; therefore there is no libsunmath.so;
+therefore I cannot do long doubles, sorry. Cannot continue, aborting.
EOM
exit 1
@@ -456,10 +464,19 @@ EOM
esac
libswanted="$libswanted sunmath"
loclibpth="$loclibpth /opt/SUNWspro/lib"
+ uselongdouble_done=yes
;;
esac
EOCBU
+# Actually, we want to run this already now, if so requested,
+# because we need to fix up things right now.
+case "$uselongdouble" in
+"$define"|true|[yY]*)
+ . ./UU/uselongdouble.cbu
+ ;;
+esac
+
rm -f try.c try.o try
# keep that leading tab
ccisworkshop=''
diff --git a/perl.h b/perl.h
index fb48cdbdab..aeaaa45d7d 100644
--- a/perl.h
+++ b/perl.h
@@ -1135,6 +1135,9 @@ typedef UVTYPE UV;
typedef NVTYPE NV;
+#ifdef I_IEEEFP
+# include <ieeefp.h>
+#endif
#ifdef USE_LONG_DOUBLE
# ifdef I_SUNMATH
diff --git a/pod/perl.pod b/pod/perl.pod
index cb627cdb7a..a66e2c812a 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -52,6 +52,7 @@ sections:
perlfork Perl fork() information
perlthrtut Perl threads tutorial
perllexwarn Perl warnings and their control
+ perlfilter Perl source filters
perldbmfilter Perl DBM filters
perlcompile Perl compiler suite intro
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index a443ff4ebf..964233c271 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -1262,7 +1262,30 @@ This port is still using its own builtin globbing.
=head2 VMS
-[TODO - Charles Bailey <bailey@newman.upenn.edu>]
+Numerous revisions and extensions to configuration, build, testing, and
+installation process to accomodate core changes and VMS-specific options
+
+Expand %ENV-handling code to allow runtime mapping to logical names,
+CLI symbols, and CRTL environ array
+
+Extension of subprocess invocation code to accept filespecs as command "verbs"
+
+Add to Perl command line processing the ability to use default file types and
+to recognize Unix-style C<2E<gt>&1>.
+
+Expansion of File::Spec::VMS routines, and integration into ExtUtils::MM_VMS
+
+Extension of ExtUtils::MM_VMS to handle complex extensions more flexibly
+
+Barewords at start of Unix-syntax paths may be treated as text rather than
+only as logical names
+
+Optional secure translation of several logical names used internally by Perl
+
+Miscellaneous bugfixing and porting of new core code to VMS
+
+Thanks are gladly extended to the many people who have contributed VMS
+patches, testing, and ideas.
=head2 Win32
diff --git a/pod/perlre.pod b/pod/perlre.pod
index 52eac04a34..64f7f1cdcb 100644
--- a/pod/perlre.pod
+++ b/pod/perlre.pod
@@ -250,7 +250,7 @@ The assumedly non-obviously named classes are:
Any control character. Usually characters that don't produce output as
such but instead control the terminal somehow: for example newline and
backspace are control characters. All characters with ord() less than
-32 are most often control classified as characters.
+32 are most often classified as control characters.
=item graph
diff --git a/pod/pod2usage.PL b/pod/pod2usage.PL
index 24e93fa350..e0f70b2ca4 100644
--- a/pod/pod2usage.PL
+++ b/pod/pod2usage.PL
@@ -16,8 +16,8 @@ use Cwd;
$origdir = cwd;
chdir(dirname($0));
($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2' or $^O eq 'dos'); # "case-forgiving"
+$file =~ s/\.pl$// if ($^O eq 'os2' or $^O eq 'dos'); # "case-forgiving"
+$file =~ s/\.pl$/.com/ if ($^O eq 'VMS'); # "case-forgiving"
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/pod/podselect.PL b/pod/podselect.PL
index 3fa411846b..f2ba80a73b 100644
--- a/pod/podselect.PL
+++ b/pod/podselect.PL
@@ -16,8 +16,8 @@ use Cwd;
$origdir = cwd;
chdir(dirname($0));
($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($^O eq 'VMS' or $^O eq 'os2' or $^O eq 'dos'); # "case-forgiving"
+$file =~ s/\.pl$// if ($^O eq 'os2' or $^O eq 'dos'); # "case-forgiving"
+$file =~ s/\.pl$/.com/ if ($^O eq 'VMS'); # "case-forgiving"
open OUT,">$file" or die "Can't create $file: $!";
diff --git a/regcomp.c b/regcomp.c
index a1272ebfc7..330dcbe429 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -2823,12 +2823,12 @@ S_regpposixcc(pTHX_ I32 value)
}
break;
}
- if ((namedclass == OOB_NAMEDCLASS ||
- !(posixcc + skip + 2 < PL_regxend &&
- (posixcc[skip] == ':' &&
- posixcc[skip + 1] == ']'))))
- Perl_croak(aTHX_ "Character class [:%.*s:] unknown",
- t - s - 1, s + 1);
+ if (namedclass == OOB_NAMEDCLASS ||
+ posixcc[skip] != ':' ||
+ posixcc[skip+1] != ']')
+ Perl_croak(aTHX_
+ "Character class [:%.*s:] unknown",
+ t - s - 1, s + 1);
} else if (ckWARN(WARN_REGEXP) && !SIZE_ONLY)
/* [[=foo=]] and [[.foo.]] are still future. */
Perl_warner(aTHX_ WARN_REGEXP,
diff --git a/t/comp/use.t b/t/comp/use.t
index c3cdb70709..89cb31a568 100755
--- a/t/comp/use.t
+++ b/t/comp/use.t
@@ -111,7 +111,7 @@ print "ok ",$i++,"\n";
print "ok ",$i++,"\n";
eval "use lib v100.105";
- unless ($@ =~ /lib version 100\.105 required--this is only version 35\.36/) {
+ unless ($@ =~ /lib version 100\.105 required--this is only version 35\.3/) {
print "not ";
}
print "ok ",$i++,"\n";
@@ -121,7 +121,7 @@ print "ok ",$i++,"\n";
print "ok ",$i++,"\n";
eval "use lib 100.105";
- unless ($@ =~ /lib version 100\.105 required--this is only version 35\.36/) {
+ unless ($@ =~ /lib version 100\.105 required--this is only version 35\.3/) {
print "not ";
}
print "ok ",$i++,"\n";
diff --git a/t/lib/bigfltpm.t b/t/lib/bigfltpm.t
index 4cfd36e02d..5d97f1b4f6 100755
--- a/t/lib/bigfltpm.t
+++ b/t/lib/bigfltpm.t
@@ -186,78 +186,78 @@ $Math::BigFloat::rnd_mode = 'trunc'
-0.006:-1:0
-0.006:-2:0
-0.0065:-3:/-0\.006|-6e-03
--0.0065:-4:/-0\.0065|-6\.5e-03
--0.0065:-5:/-0\.0065|-6\.5e-03
+-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
+-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
$Math::BigFloat::rnd_mode = 'zero'
-+2.23:-1:2.2
--2.23:-1:-2.2
-+2.27:-1:2.3
--2.27:-1:-2.3
-+2.25:-1:2.2
--2.25:-1:-2.2
-+2.35:-1:2.3
--2.35:-1:-2.3
++2.23:-1:/2.2(?:0{5}\d+)?
+-2.23:-1:/-2.2(?:0{5}\d+)?
++2.27:-1:/2.(?:3|29{5}\d+)
+-2.27:-1:/-2.(?:3|29{5}\d+)
++2.25:-1:/2.2(?:0{5}\d+)?
+-2.25:-1:/-2.2(?:0{5}\d+)?
++2.35:-1:/2.(?:3|29{5}\d+)
+-2.35:-1:/-2.(?:3|29{5}\d+)
-0.0065:-1:0
-0.0065:-2:/-0\.01|-1e-02
-0.0065:-3:/-0\.006|-6e-03
--0.0065:-4:/-0\.0065|-6\.5e-03
--0.0065:-5:/-0\.0065|-6\.5e-03
+-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
+-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
$Math::BigFloat::rnd_mode = '+inf'
-+3.23:-1:3.2
--3.23:-1:-3.2
-+3.27:-1:3.3
--3.27:-1:-3.3
-+3.25:-1:3.3
--3.25:-1:-3.2
-+3.35:-1:3.4
--3.35:-1:-3.3
++3.23:-1:/3.2(?:0{5}\d+)?
+-3.23:-1:/-3.2(?:0{5}\d+)?
++3.27:-1:/3.(?:3|29{5}\d+)
+-3.27:-1:/-3.(?:3|29{5}\d+)
++3.25:-1:/3.(?:3|29{5}\d+)
+-3.25:-1:/-3.2(?:0{5}\d+)?
++3.35:-1:/3.(?:4|39{5}\d+)
+-3.35:-1:/-3.(?:3|29{5}\d+)
-0.0065:-1:0
-0.0065:-2:/-0\.01|-1e-02
-0.0065:-3:/-0\.006|-6e-03
--0.0065:-4:/-0\.0065|-6\.5e-03
--0.0065:-5:/-0\.0065|-6\.5e-03
+-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
+-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
$Math::BigFloat::rnd_mode = '-inf'
-+4.23:-1:4.2
--4.23:-1:-4.2
-+4.27:-1:4.3
--4.27:-1:-4.3
-+4.25:-1:4.2
--4.25:-1:-4.3
-+4.35:-1:4.3
--4.35:-1:-4.4
++4.23:-1:/4.2(?:0{5}\d+)?
+-4.23:-1:/-4.2(?:0{5}\d+)?
++4.27:-1:/4.(?:3|29{5}\d+)
+-4.27:-1:/-4.(?:3|29{5}\d+)
++4.25:-1:/4.2(?:0{5}\d+)?
+-4.25:-1:/-4.(?:3|29{5}\d+)
++4.35:-1:/4.(?:3|29{5}\d+)
+-4.35:-1:/-4.(?:4|39{5}\d+)
-0.0065:-1:0
-0.0065:-2:/-0\.01|-1e-02
-0.0065:-3:/-0\.007|-7e-03
--0.0065:-4:/-0\.0065|-6\.5e-03
--0.0065:-5:/-0\.0065|-6\.5e-03
+-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
+-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
$Math::BigFloat::rnd_mode = 'odd'
-+5.23:-1:5.2
--5.23:-1:-5.2
-+5.27:-1:5.3
--5.27:-1:-5.3
-+5.25:-1:5.3
--5.25:-1:-5.3
-+5.35:-1:5.3
--5.35:-1:-5.3
++5.23:-1:/5.2(?:0{5}\d+)?
+-5.23:-1:/-5.2(?:0{5}\d+)?
++5.27:-1:/5.(?:3|29{5}\d+)
+-5.27:-1:/-5.(?:3|29{5}\d+)
++5.25:-1:/5.(?:3|29{5}\d+)
+-5.25:-1:/-5.(?:3|29{5}\d+)
++5.35:-1:/5.(?:3|29{5}\d+)
+-5.35:-1:/-5.(?:3|29{5}\d+)
-0.0065:-1:0
-0.0065:-2:/-0\.01|-1e-02
-0.0065:-3:/-0\.007|-7e-03
--0.0065:-4:/-0\.0065|-6\.5e-03
--0.0065:-5:/-0\.0065|-6\.5e-03
+-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
+-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
$Math::BigFloat::rnd_mode = 'even'
-+6.23:-1:6.2
--6.23:-1:-6.2
-+6.27:-1:6.3
--6.27:-1:-6.3
-+6.25:-1:6.2
--6.25:-1:-6.2
-+6.35:-1:6.4
--6.35:-1:-6.4
++6.23:-1:/6.2(?:0{5}\d+)?
+-6.23:-1:/-6.2(?:0{5}\d+)?
++6.27:-1:/6.(?:3|29{5}\d+)
+-6.27:-1:/-6.(?:3|29{5}\d+)
++6.25:-1:/6.2(?:0{5}\d+)?
+-6.25:-1:/-6.2(?:0{5}\d+)?
++6.35:-1:/6.(?:4|39{5}\d+)
+-6.35:-1:/-6.(?:4|39{5}\d+)
-0.0065:-1:0
-0.0065:-2:/-0\.01|-1e-02
-0.0065:-3:/-0\.006|-6e-03
--0.0065:-4:/-0\.0065|-6\.5e-03
--0.0065:-5:/-0\.0065|-6\.5e-03
+-0.0065:-4:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
+-0.0065:-5:/-0\.006(?:5|49{5}\d+)|-6\.5e-03
&fcmp
abc:abc:
abc:+0:
diff --git a/t/op/pack.t b/t/op/pack.t
index e4c7a9c210..09c566e92f 100755
--- a/t/op/pack.t
+++ b/t/op/pack.t
@@ -19,6 +19,9 @@ print ($#ary == $#ary2 ? "ok 1\n" : "not ok 1\n");
$out1=join(':',@ary);
$out2=join(':',@ary2);
+# Using long double NVs may introduce greater accuracy than wanted.
+$out1 =~ s/:9\.87654321097999\d*:/:9.87654321098:/;
+$out2 =~ s/:9\.87654321097999\d*:/:9.87654321098:/;
print ($out1 eq $out2? "ok 2\n" : "not ok 2\n");
print ($foo =~ /def/ ? "ok 3\n" : "not ok 3\n");
diff --git a/t/op/universal.t b/t/op/universal.t
index eb6ec3ce97..7de8199132 100755
--- a/t/op/universal.t
+++ b/t/op/universal.t
@@ -70,7 +70,7 @@ test ! $a->can("export_tags"); # a method in Exporter
test (eval { $a->VERSION }) == 2.718;
test ! (eval { $a->VERSION(2.719) }) &&
- $@ =~ /^Alice version 2.719 required--this is only version 2.718 at /;
+ $@ =~ /^Alice version 2.71(?:9|8999\d+) required--this is only version 2.718 at /;
test (eval { $a->VERSION(2.718) }) && ! $@;
diff --git a/t/pragma/warn/regcomp b/t/pragma/warn/regcomp
index 7d485f2efd..5de01c67d7 100644
--- a/t/pragma/warn/regcomp
+++ b/t/pragma/warn/regcomp
@@ -6,9 +6,11 @@
%.*s matches null string many times [S_regpiece]
$a = "ABC123" ; $a =~ /(?=a)*/'
- /%.127s/: Unrecognized escape \\%c passed through" [S_regatom]
+ /%.127s/: Unrecognized escape \\%c passed through [S_regatom]
$x = '\m' ; /$x/
+ Character class [:%.*s:] unknown [S_regpposixcc]
+
Character class syntax [. .] is reserved for future extensions [S_regpposixcc]
Character class syntax [= =] is reserved for future extensions [S_checkposixcc]
@@ -61,6 +63,7 @@ $_ = "" ;
/[[.foo.]]/;
/[[=bar=]]/;
/[:zog:]/;
+/[[:zog:]]/;
no warnings 'regexp' ;
/[:alpha:]/;
/[.foo.]/;
@@ -68,9 +71,9 @@ no warnings 'regexp' ;
/[[:alpha:]]/;
/[[.foo.]]/;
/[[=bar=]]/;
-/[:zog:]/;
BEGIN { $ENV{PERL_DESTRUCT_LEVEL} = 0 unless $ENV{PERL_DESTRUCT_LEVEL} > 3 }
/[[:zog:]]/;
+/[:zog:]/;
EXPECT
Character class syntax [: :] belongs inside character classes at - line 4.
Character class syntax [. .] belongs inside character classes at - line 5.
@@ -80,7 +83,7 @@ Character class syntax [= =] is reserved for future extensions at - line 6.
Character class syntax [. .] is reserved for future extensions at - line 8.
Character class syntax [= =] is reserved for future extensions at - line 9.
Character class syntax [: :] belongs inside character classes at - line 10.
-Character class [:zog:] unknown at - line 20.
+Character class [:zog:] unknown at - line 11.
########
# regcomp.c [S_regclass]
$_ = "";
diff --git a/utils/dprofpp.PL b/utils/dprofpp.PL
index a6a1d911a5..51e8d7839a 100644
--- a/utils/dprofpp.PL
+++ b/utils/dprofpp.PL
@@ -14,9 +14,8 @@ use File::Basename qw(&basename &dirname);
# This is so that make depend always knows where to find PL derivatives.
chdir(dirname($0));
($file = basename($0)) =~ s/\.PL$//;
-$file =~ s/\.pl$//
- if ($Config{'osname'} eq 'VMS' or
- $Config{'osname'} eq 'OS2'); # "case-forgiving"
+$file =~ s/\.pl$// if ($Config{'osname'} eq 'OS2'); # "case-forgiving"
+$file =~ s/\.pl$/.com/ if ($Config{'osname'} eq 'VMS'); # "case-forgiving"
my $dprof_pm = '../ext/Devel/DProf/DProf.pm';
my $VERSION = 0;
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index eb9d0bd97a..c96c145752 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -347,7 +347,7 @@ libmods : $(LIBPREREQ)
@ $(NOOP)
utils : $(utils1) $(utils2)
@ $(NOOP)
-podxform : [.lib.pod]pod2text.com [.lib.pod]pod2html.com [.lib.pod]pod2latex.com [.lib.pod]pod2man.com [.lib.pod]podchecker.com
+podxform : [.lib.pod]pod2text.com [.lib.pod]pod2html.com [.lib.pod]pod2latex.com [.lib.pod]pod2man.com [.lib.pod]podchecker.com [.lib.pod]pod2usage.com [.lib.pod]podselect.com
@ $(NOOP)
x2p : [.x2p]a2p$(E) [.x2p]s2p.com [.x2p]find2perl.com
@ $(NOOP)
@@ -582,6 +582,16 @@ dynext : $(LIBPREREQ) $(DBG)perlshr$(E)
$(MINIPERL) $(MMS$SOURCE)
Copy/Log [.pod]podchecker.com $(MMS$TARGET)
+[.lib.pod]pod2usage.com : [.pod]pod2usage.PL $(ARCHDIR)Config.pm
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) $(MMS$SOURCE)
+ Copy/Log [.pod]pod2usage.com $(MMS$TARGET)
+
+[.lib.pod]podselect.com : [.pod]podselect.PL $(ARCHDIR)Config.pm
+ @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod]
+ $(MINIPERL) $(MMS$SOURCE)
+ Copy/Log [.pod]podselect.com $(MMS$TARGET)
+
preplibrary : $(MINIPERL_EXE) $(LIBPREREQ) $(SOCKPM)
@ Write Sys$Output "Autosplitting Perl library . . ."
@ Create/Directory [.lib.auto]
diff --git a/vms/ext/filespec.t b/vms/ext/filespec.t
index 779396be73..bf0208d94b 100644
--- a/vms/ext/filespec.t
+++ b/vms/ext/filespec.t
@@ -86,7 +86,7 @@ some:[where.over]the.rainbow unixify /some/where/over/the.rainbow
/some/where/over/the.rainbow vmsify some:[where.over]the.rainbow
some/where/over/the.rainbow vmsify [.some.where.over]the.rainbow
../some/where/over/the.rainbow vmsify [-.some.where.over]the.rainbow
-some/../../where/over/the.rainbow vmsify [-.where.over]the.rainbow
+some/../../where/over/the.rainbow vmsify [.some.--.where.over]the.rainbow
.../some/where/over/the.rainbow vmsify [...some.where.over]the.rainbow
some/.../where/over/the.rainbow vmsify [.some...where.over]the.rainbow
/some/.../where/over/the.rainbow vmsify some:[...where.over]the.rainbow
diff --git a/vms/gen_shrfls.pl b/vms/gen_shrfls.pl
index c668120464..a109f7bdfd 100644
--- a/vms/gen_shrfls.pl
+++ b/vms/gen_shrfls.pl
@@ -186,12 +186,6 @@ LINE: while (<CPP>) {
print "opcode.h>> $_" if $debug > 2;
if (/^OP \*\s/) { &scan_func($_); }
if (/^\s*EXT/) { &scan_var($_); }
- if (/^\s+OP_/) { &scan_enum($_); }
- last LINE unless defined($_ = <CPP>);
- }
- while (/^typedef enum/ .. /^\s*\}/) {
- print "global enum>> $_" if $debug > 2;
- &scan_enum($_);
last LINE unless defined($_ = <CPP>);
}
# Check for transition to new header file
diff --git a/vms/perlvms.pod b/vms/perlvms.pod
index 53925b2541..3883233c28 100644
--- a/vms/perlvms.pod
+++ b/vms/perlvms.pod
@@ -463,7 +463,11 @@ is executed as a DCL command. Otherwise, the first token on
the command line is treated as the filespec of an image to
run, and an attempt is made to invoke it (using F<.Exe> and
the process defaults to expand the filespec) and pass the
-rest of C<exec>'s argument to it as parameters.
+rest of C<exec>'s argument to it as parameters. If the token
+has no file type, and matches a file with null type, then an
+attempt is made to determine whether the file is an executable
+image which should be invoked using C<MCR> or a text file which
+should be passed to DCL as a command procedure.
You can use C<exec> in both ways within the same script, as
long as you call C<fork> and C<exec> in pairs. Perl
@@ -558,9 +562,16 @@ specification (e.g. C<:> or C<]>), an attempt is made to expand it
using a default type of F<.Exe> and the process defaults, and if
successful, the resulting file is invoked via C<MCR>. This allows you
to invoke an image directly simply by passing the file specification
-to C<system>, a common Unixish idiom. If LIST consists
-of the empty string, C<system> spawns an interactive DCL subprocess,
-in the same fashion as typiing B<SPAWN> at the DCL prompt.
+to C<system>, a common Unixish idiom. If the token has no file type,
+and matches a file with null type, then an attempt is made to
+determine whether the file is an executable image which should be
+invoked using C<MCR> or a text file which should be passed to DCL
+as a command procedure.
+
+If LIST consists of the empty string, C<system> spawns an
+interactive DCL subprocess, in the same fashion as typiing
+B<SPAWN> at the DCL prompt.
+
Perl waits for the subprocess to complete before continuing
execution in the current process. As described in L<perlfunc>,
the return value of C<system> is a fake "status" which follows
diff --git a/vms/subconfigure.com b/vms/subconfigure.com
index 30da056561..1686c663de 100644
--- a/vms/subconfigure.com
+++ b/vms/subconfigure.com
@@ -75,6 +75,7 @@ $ perl_d_sqrtl = "define"
$ perl_d_statfs_f_flags = "undef"
$ perl_d_statfs_s = "undef"
$ perl_d_ustat = "undef"
+$ perl_i_ieeefp = "undef"
$ perl_i_sunmath = "undef"
$ perl_i_sysstatfs = "undef"
$ perl_i_sysvfs = "undef"
@@ -4003,6 +4004,7 @@ $ WC "d_gethname='" + perl_d_gethname + "'"
$ WC "d_phostname='" + perl_d_phostname + "'"
$ WC "d_accessx='" + perl_d_accessx + "'"
$ WC "d_eaccess='" + perl_d_eaccess + "'"
+$ WC "i_ieeefp='" + perl_i_ieeefp + "'"
$ WC "i_sunmath='" + perl_i_sunmath + "'"
$ WC "i_sysaccess='" + perl_i_sysaccess + "'"
$ WC "i_syssecrt='" + perl_i_syssecrt + "'"
@@ -4101,7 +4103,7 @@ $ WC "sPRIx64='" + perl_sPRIx64 + "'"
$ WC "d_llseek='" + perl_d_llseek + "'"
$ WC "d_iconv='" + perl_d_iconv +"'"
$ WC "i_iconv='" + perl_i_iconv +"'"
-$ WC "inc_version_list_init='""""'"
+$ WC "inc_version_list_init='0'"
$ WC "uselargefiles='" + perl_uselargefiles + "'"
$ WC "uselongdouble='" + perl_uselongdouble + "'"
$ WC "usemorebits='" + perl_usemorebits + "'"
diff --git a/vms/vms.c b/vms/vms.c
index a498e16266..f1f62bd6eb 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -987,6 +987,7 @@ pipe_exit_routine()
info = open_pipes;
while (info) {
+ int need_eof;
_ckvmssts(SYS$SETAST(0));
need_eof = info->mode != 'r' && !info->done;
_ckvmssts(SYS$SETAST(1));
@@ -2518,6 +2519,9 @@ getredirection(int *ac, char ***av)
exit(vaxc$errno);
}
if (err != NULL) {
+ if (strcmp(err,"&1") == 0) {
+ dup2(fileno(stdout), fileno(Perl_debug_log));
+ } else {
FILE *tmperr;
if (NULL == (tmperr = fopen(err, errmode, "mbc=32", "mbf=2")))
{
@@ -2530,6 +2534,7 @@ getredirection(int *ac, char ***av)
exit(vaxc$errno);
}
}
+ }
#ifdef ARGPROC_DEBUG
PerlIO_printf(Perl_debug_log, "Arglist:\n");
for (j = 0; j < *ac; ++j)
@@ -3388,6 +3393,7 @@ setup_cmddsc(char *cmd, int check_img)
{
char vmsspec[NAM$C_MAXRSS+1], resspec[NAM$C_MAXRSS+1];
$DESCRIPTOR(defdsc,".EXE");
+ $DESCRIPTOR(defdsc2,".");
$DESCRIPTOR(resdsc,resspec);
struct dsc$descriptor_s imgdsc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
unsigned long int cxt = 0, flags = 1, retsts = SS$_NORMAL;
@@ -3443,18 +3449,44 @@ setup_cmddsc(char *cmd, int check_img)
imgdsc.dsc$a_pointer = s;
imgdsc.dsc$w_length = wordbreak - s;
retsts = lib$find_file(&imgdsc,&resdsc,&cxt,&defdsc,0,0,&flags);
+ if (!(retsts&1)) {
+ _ckvmssts(lib$find_file_end(&cxt));
+ retsts = lib$find_file(&imgdsc,&resdsc,&cxt,&defdsc2,0,0,&flags);
if (!(retsts & 1) && *s == '$') {
+ _ckvmssts(lib$find_file_end(&cxt));
imgdsc.dsc$a_pointer++; imgdsc.dsc$w_length--;
retsts = lib$find_file(&imgdsc,&resdsc,&cxt,&defdsc,0,0,&flags);
+ if (!(retsts&1)) {
_ckvmssts(lib$find_file_end(&cxt));
+ retsts = lib$find_file(&imgdsc,&resdsc,&cxt,&defdsc2,0,0,&flags);
+ }
}
+ }
+ _ckvmssts(lib$find_file_end(&cxt));
+
if (retsts & 1) {
+ FILE *fp;
s = resspec;
while (*s && !isspace(*s)) s++;
*s = '\0';
+
+ /* check that it's really not DCL with no file extension */
+ fp = fopen(resspec,"r","ctx=bin,shr=get");
+ if (fp) {
+ char b[4] = {0,0,0,0};
+ read(fileno(fp),b,4);
+ isdcl = isprint(b[0]) && isprint(b[1]) && isprint(b[2]) && isprint(b[3]);
+ fclose(fp);
+ }
+ if (check_img && isdcl) return RMS$_FNF;
+
if (cando_by_name(S_IXUSR,0,resspec)) {
New(402,VMScmd.dsc$a_pointer,7 + s - resspec + (rest ? strlen(rest) : 0),char);
+ if (!isdcl) {
strcpy(VMScmd.dsc$a_pointer,"$ MCR ");
+ } else {
+ strcpy(VMScmd.dsc$a_pointer,"@");
+ }
strcat(VMScmd.dsc$a_pointer,resspec);
if (rest) strcat(VMScmd.dsc$a_pointer,rest);
VMScmd.dsc$w_length = strlen(VMScmd.dsc$a_pointer);
diff --git a/vms/vmsish.h b/vms/vmsish.h
index 8d4a8caf6b..a09d2be438 100644
--- a/vms/vmsish.h
+++ b/vms/vmsish.h
@@ -263,6 +263,10 @@
#define HAS_WAIT
#define PERL_FS_VER_FMT "%d_%d_%d"
+/* Temporary; we need to add support for this to Configure.Com */
+#ifdef PERL_INC_VERSION_LIST
+# undef PERL_INC_VERSION_LIST
+#endif
/* VMS:
* This symbol, if defined, indicates that the program is running under
diff --git a/vos/config.def b/vos/config.def
index c943b73e24..7ef644dfe9 100644
--- a/vos/config.def
+++ b/vos/config.def
@@ -300,6 +300,7 @@ $i_fcntl='define'
$i_float='define'
$i_grp='undef'
$i_iconv='undef'
+$i_ieeefp='undef'
$i_inttypes='undef'
$i_limits='define'
$i_locale='define'
diff --git a/vos/config.h b/vos/config.h
index 2f4e15a820..d163593ed0 100644
--- a/vos/config.h
+++ b/vos/config.h
@@ -1658,6 +1658,12 @@
#define LONGLONGSIZE _error_ /**/
#endif
+/* HAS_MADVISE:
+ * This symbol, if defined, indicates that the madvise system call is
+ * available to map a file into memory.
+ */
+/*#define HAS_MADVISE /**/
+
/* HAS_MEMCHR:
* This symbol, if defined, indicates that the memchr routine is available
* to locate characters within a C string.
@@ -2346,6 +2352,12 @@
*/
/*#define I_SOCKS /**/
+/* I_SUNMATH:
+ * This symbol, if defined, indicates that <sunmath.h> exists and
+ * should be included.
+ */
+/*#define I_SUNMATH /**/
+
/* I_SYSLOG:
* This symbol, if defined, indicates that <syslog.h> exists and
* should be included.
@@ -2998,6 +3010,12 @@
*/
/*#define HAS_GETFSSTAT /**/
+/* I_IEEEFP:
+ * This symbol, if defined, indicates that <ieeefp.h> exists and
+ * should be included.
+ */
+/*#define I_IEEEFP /**/
+
/* HAS_LSEEK_PROTO:
* This symbol, if defined, indicates that the system provides
* a prototype for the lseek() function. Otherwise, it is up
diff --git a/vos/config_h.SH_orig b/vos/config_h.SH_orig
index ad136f26db..d452aa9fa1 100755
--- a/vos/config_h.SH_orig
+++ b/vos/config_h.SH_orig
@@ -1676,6 +1676,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
#define LONGLONGSIZE $longlongsize /**/
#endif
+/* HAS_MADVISE:
+ * This symbol, if defined, indicates that the madvise system call is
+ * available to map a file into memory.
+ */
+#$d_madvise HAS_MADVISE /**/
+
/* HAS_MEMCHR:
* This symbol, if defined, indicates that the memchr routine is available
* to locate characters within a C string.
@@ -2364,6 +2370,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
*/
#$i_socks I_SOCKS /**/
+/* I_SUNMATH:
+ * This symbol, if defined, indicates that <sunmath.h> exists and
+ * should be included.
+ */
+#$i_sunmath I_SUNMATH /**/
+
/* I_SYSLOG:
* This symbol, if defined, indicates that <syslog.h> exists and
* should be included.
@@ -3016,6 +3028,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-
*/
#$d_getfsstat HAS_GETFSSTAT /**/
+/* I_IEEEFP:
+ * This symbol, if defined, indicates that <ieeefp.h> exists and
+ * should be included.
+ */
+#$i_ieeefp I_IEEEFP /**/
+
/* HAS_LSEEK_PROTO:
* This symbol, if defined, indicates that the system provides
* a prototype for the lseek() function. Otherwise, it is up
diff --git a/win32/config.bc b/win32/config.bc
index 737e0e2052..59d96f62b8 100644
--- a/win32/config.bc
+++ b/win32/config.bc
@@ -427,6 +427,7 @@ i_float='define'
i_gdbm='undef'
i_grp='undef'
i_iconv='undef'
+i_ieeefp='undef'
i_inttypes='undef'
i_limits='define'
i_locale='define'
diff --git a/win32/config.gc b/win32/config.gc
index 9aab8e0c73..d932482031 100644
--- a/win32/config.gc
+++ b/win32/config.gc
@@ -427,6 +427,7 @@ i_float='define'
i_gdbm='undef'
i_grp='undef'
i_iconv='undef'
+i_ieeefp='undef'
i_inttypes='undef'
i_limits='define'
i_locale='define'
diff --git a/win32/config.vc b/win32/config.vc
index 5203ed3d7e..4865d5b3a5 100644
--- a/win32/config.vc
+++ b/win32/config.vc
@@ -427,6 +427,7 @@ i_float='define'
i_gdbm='undef'
i_grp='undef'
i_iconv='undef'
+i_ieeefp='undef'
i_inttypes='undef'
i_limits='define'
i_locale='define'