In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/48e9f29d31f13e3ebfb9f77ed4effa561966c7a9?hp=86f4502880c5cbc7a5ec1510ab05a413bfb40e03>
- Log ----------------------------------------------------------------- commit 48e9f29d31f13e3ebfb9f77ed4effa561966c7a9 Author: Jarkko Hietaniemi <[email protected]> Date: Mon Jul 20 11:53:09 2015 +0300 Drop useful-looking but unused lookup table. M time64.c commit 8a62d6b8193214bd476c275fc4b083b526108223 Author: Jarkko Hietaniemi <[email protected]> Date: Mon Jul 20 12:31:42 2015 +0300 Declaring static in header is odd (and warnable offense). M time64.h commit e27be216b1132c5c017dc516d806edf309c90386 Author: Jarkko Hietaniemi <[email protected]> Date: Mon Jul 20 12:31:05 2015 +0300 Convert pp_sys to use the time64 public interface. M pp_sys.c commit f832b29a2b3f71c66c6e6b76a02b5faefe0ebeb1 Author: Jarkko Hietaniemi <[email protected]> Date: Mon Jul 20 11:51:47 2015 +0300 Add time64 as its own build target. M Cross/Makefile-cross-SH M Cross/cflags-cross-arm M Makefile.SH M Makefile.micro M NetWare/Makefile M plan9/mkfile M time64.c M time64.h M vms/descrip_mms.template M win32/GNUmakefile M win32/Makefile M win32/Makefile.ce M win32/makefile.mk commit a55c5245146801ac2b2be2914342a6a829670513 Author: Jarkko Hietaniemi <[email protected]> Date: Sun Jul 19 16:54:22 2015 +0300 dquote_static.c -> dquote.c Instead of #include-ing the C file, compile it normally. M Cross/Makefile-cross-SH M Cross/cflags-cross-arm M MANIFEST M Makefile.SH M Makefile.micro M NetWare/Makefile A dquote.c D dquote_static.c M embed.fnc M embed.h M ext/re/Makefile.PL M plan9/mkfile M proto.h M regcomp.c M toke.c M vms/descrip_mms.template M win32/GNUmakefile M win32/Makefile M win32/Makefile.ce M win32/makefile.mk commit f7e03a1013a0b759f99885c500f0e89656a992ba Author: Jarkko Hietaniemi <[email protected]> Date: Sun Jul 19 10:34:24 2015 +0300 static inlines from dquote_static.c -> new dquote_inline.h M MANIFEST A dquote_inline.h M dquote_static.c M regcomp.c M toke.c commit b992490dd5c64d667e649dd0ee35a658034d93c0 Author: Jarkko Hietaniemi <[email protected]> Date: Sat Jul 18 21:24:47 2015 +0300 inline_invlist.c -> invlist_inline.h M MANIFEST M ext/re/Makefile.PL D inline_invlist.c A invlist_inline.h M regcomp.c M regexec.c M utf8.c commit bbef9e8971749a5008bb4cd805eff6a7e0c584b4 Author: Jarkko Hietaniemi <[email protected]> Date: Tue Jul 21 09:49:05 2015 +0300 Make *inline.h behave like *.c M t/porting/args_assert.t commit 6ffcffbd7dc3d42844ba051086599e4f70bfdb1f Author: Jarkko Hietaniemi <[email protected]> Date: Sat Jul 18 17:22:13 2015 +0300 overload.c -> overload.inc M MANIFEST M gv.c D overload.c A overload.inc M regen/overload.pl commit 5478a2b983aa7a04b93cfaf83bb9805713bf2d3f Author: Jarkko Hietaniemi <[email protected]> Date: Sat Jul 18 16:53:00 2015 +0300 overload.[hc] descriptions were swapped M MANIFEST commit 4ad176efffec2453196c8a3f35f73c0eeed776a0 Author: Jarkko Hietaniemi <[email protected]> Date: Sat Jul 18 16:28:46 2015 +0300 packsizetables.c -> packsizetables.inc M MANIFEST D packsizetables.c A packsizetables.inc M pp_pack.c M regen/genpacksizetables.pl commit 16bc0f484029674886960a735bef3fa497aeb6de Author: Jarkko Hietaniemi <[email protected]> Date: Fri Jul 17 11:46:14 2015 +0300 mg_names.c -> mg_names.inc M MANIFEST M dump.c D mg_names.c A mg_names.inc M regen/mg_vtable.pl commit 23fd77c01aafa1987698dc47bed34bd342178516 Author: Jarkko Hietaniemi <[email protected]> Date: Fri Jul 17 11:55:00 2015 +0300 Make *.inc behave like *.[hc] M regen/regen_lib.pl ----------------------------------------------------------------------- Summary of changes: Cross/Makefile-cross-SH | 8 +- Cross/cflags-cross-arm | 2 + MANIFEST | 13 +-- Makefile.SH | 4 +- Makefile.micro | 10 +- NetWare/Makefile | 2 + dquote_static.c => dquote.c | 175 +++------------------------------ dquote_inline.h | 160 ++++++++++++++++++++++++++++++ dump.c | 2 +- embed.fnc | 10 +- embed.h | 6 +- ext/re/Makefile.PL | 20 ++-- gv.c | 2 +- inline_invlist.c => invlist_inline.h | 2 +- mg_names.c => mg_names.inc | 2 +- overload.c => overload.inc | 2 +- packsizetables.c => packsizetables.inc | 0 plan9/mkfile | 2 +- pp_pack.c | 2 +- pp_sys.c | 5 +- proto.h | 36 +++---- regcomp.c | 6 +- regen/genpacksizetables.pl | 2 +- regen/mg_vtable.pl | 4 +- regen/overload.pl | 4 +- regen/regen_lib.pl | 2 +- regexec.c | 2 +- t/porting/args_assert.t | 4 +- time64.c | 23 ++--- time64.h | 5 +- toke.c | 2 +- utf8.c | 2 +- vms/descrip_mms.template | 12 ++- win32/GNUmakefile | 2 + win32/Makefile | 2 + win32/Makefile.ce | 4 + win32/makefile.mk | 2 + 37 files changed, 285 insertions(+), 258 deletions(-) rename dquote_static.c => dquote.c (53%) create mode 100644 dquote_inline.h rename inline_invlist.c => invlist_inline.h (99%) rename mg_names.c => mg_names.inc (99%) rename overload.c => overload.inc (99%) rename packsizetables.c => packsizetables.inc (100%) diff --git a/Cross/Makefile-cross-SH b/Cross/Makefile-cross-SH index 01cde92..4b6bf12 100644 --- a/Cross/Makefile-cross-SH +++ b/Cross/Makefile-cross-SH @@ -345,17 +345,17 @@ h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h h5 = utf8.h warnings.h h = $(h1) $(h2) $(h3) $(h4) $(h5) -c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro_core.c perl.c +c1 = av.c scope.c op.c doop.c doio.c dquote.c dump.c gv.c hv.c mg.c reentr.c mro_core.c perl.c c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c -c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c +c3 = taint.c time64.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c c5 = $(mallocsrc) c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c perlmain.c opmini.c -obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ_EXT) +obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dquote$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ ... [5 chars truncated] obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) perl$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$ ... [62 chars truncated] +obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$ ... [79 chars truncated] obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) diff --git a/Cross/cflags-cross-arm b/Cross/cflags-cross-arm index 8ee55a5..3006394 100644 --- a/Cross/cflags-cross-arm +++ b/Cross/cflags-cross-arm @@ -73,6 +73,7 @@ for file do dl) ;; doio) ;; doop) ;; + dquote) ;; dump) ;; globals) ;; gv) ;; @@ -102,6 +103,7 @@ for file do scope) ;; sv) ;; taint) ;; + time64) ;; toke) ;; universal) ;; usersub) ;; diff --git a/MANIFEST b/MANIFEST index 814074b..3c81860 100644 --- a/MANIFEST +++ b/MANIFEST @@ -3527,7 +3527,8 @@ djgpp/fixpmain DOS/DJGPP port doio.c I/O operations doop.c Support code for various operations dosish.h Some defines for MS/DOSish machines -dquote_static.c Static functions for double quotish contexts +dquote.c Functions for double quotish contexts +dquote_inline.h Inline functions for double quotish contexts dump.c Debugging output ebcdic_tables.h Generated tables included in utfebcdic.h embed.fnc Database used by embed.pl @@ -4107,7 +4108,6 @@ hv.c Hash value code hv_func.h Hash value static inline function header hv.h Hash value header inline.h Static inline functions -inline_invlist.c Inline functions for handling inversion lists INSTALL Detailed installation instructions installhtml Perl script to install html files for pods install_lib.pl functions shared between install* scripts @@ -4115,6 +4115,7 @@ installman Perl script to install man pages for pods installperl Perl script to do "make install" dirty work INTERN.h Included before domestic .h files intrpvar.h Variables held in each interpreter instance +invlist_inline.h Inline functions for handling inversion lists iperlsys.h Perl's interface to the system keywords.c Perl_keyword(), generated by regen/keywords.pl keywords.h The keyword numbers @@ -4385,7 +4386,7 @@ META.json Distribution meta-data in JSON META.yml Distribution meta-data in YAML mg.c Magic code mg.h Magic header -mg_names.c Generated magic names used by dump.c +mg_names.inc Generated magic names used by dump.c mg_raw.h Generated magic data used by generate_uudmap.c mg_vtable.h Generated magic vtable data miniperlmain.c Basic perl w/o dynamic loading or extensions @@ -4515,9 +4516,9 @@ os2/OS2/typemap Common typemap for OS/2 types os2/perl2cmd.pl Corrects installed binaries under OS/2 os2/perlrexx.c Support perl interpreter embedded in REXX os2/perlrexx.cmd Test perl interpreter embedded in REXX -overload.c generated overload enum (public) -overload.h generated overload name table (implementation) -packsizetables.c The generated packprops array used in pp_pack.c +overload.h generated overload enum (public) +overload.inc generated overload name table (implementation) +packsizetables.inc The generated packprops array used in pp_pack.c pad.c Scratchpad functions pad.h Scratchpad headers parser.h parser object header diff --git a/Makefile.SH b/Makefile.SH index 0a4eb5e..bc5837e 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -476,7 +476,7 @@ h = $(h1) $(h2) $(h3) $(h4) $(h5) $(h6) c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro_core.c perl.c c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c -c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c caretx.c +c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c caretx.c dquote.c time64.c c5 = $(mallocsrc) c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c opmini.c perlmini.c @@ -485,7 +485,7 @@ obj0 = op$(OBJ_EXT) perl$(OBJ_EXT) obj0mini = perlmini$(OBJ_EXT) opmini$(OBJ_EXT) miniperlmain$(OBJ_EXT) obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ_EXT) keywords$(OBJ_EXT) obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$ ... [79 chars truncated] +obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$ ... [113 chars truncated] minindt_obj = $(obj0mini) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) mini_obj = $(minindt_obj) $(MINIDTRACE_O) diff --git a/Makefile.micro b/Makefile.micro index dedf183..a697e16 100644 --- a/Makefile.micro +++ b/Makefile.micro @@ -14,13 +14,13 @@ RUN = all: microperl -O = uav$(_O) udeb$(_O) udoio$(_O) udoop$(_O) udump$(_O) \ +O = uav$(_O) udeb$(_O) udoio$(_O) udoop$(_O) udquote$(_O) udump$(_O) \ uglobals$(_O) ugv$(_O) uhv$(_O) umro$(_O)\ umg$(_O) uperlmain$(_O) uop$(_O) ureentr$(_O) \ upad$(_O) uperl$(_O) uperlio$(_O) uperly$(_O) upp$(_O) \ upp_ctl$(_O) upp_hot$(_O) upp_sys$(_O) upp_pack$(_O) upp_sort$(_O) \ uregcomp$(_O) uregexec$(_O) urun$(_O) \ - uscope$(_O) usv$(_O) utaint$(_O) utoke$(_O) \ + uscope$(_O) usv$(_O) utaint$(_O) utime64$(_O) utoke$(_O) \ unumeric$(_O) ulocale$(_O) umathoms$(_O) \ uuniversal$(_O) uutf8$(_O) uutil$(_O) uperlapi$(_O) ukeywords$(_O) @@ -76,6 +76,9 @@ udoio$(_O): $(HE) doio.c udoop$(_O): $(HE) doop.c $(CC) $(CCFLAGS) -o $@ $(CFLAGS) doop.c +udquote$(_O): $(HE) dquote.c regcomp.h regnodes.h + $(CC) $(CCFLAGS) -o $@ $(CFLAGS) dquote.c + udump$(_O): $(HE) dump.c regcomp.h regnodes.h $(CC) $(CCFLAGS) -o $@ $(CFLAGS) dump.c @@ -154,6 +157,9 @@ usv$(_O): $(HE) sv.c utaint$(_O): $(HE) taint.c $(CC) $(CCFLAGS) -o $@ $(CFLAGS) taint.c +utime64$(_O): $(HE) time64.c time64.h time64_config.h + $(CC) $(CCFLAGS) -o $@ $(CFLAGS) time64.c + utoke$(_O): $(HE) toke.c keywords.h $(CC) $(CCFLAGS) -o $@ $(CFLAGS) toke.c diff --git a/NetWare/Makefile b/NetWare/Makefile index 18558e0..dd4df14 100644 --- a/NetWare/Makefile +++ b/NetWare/Makefile @@ -689,6 +689,7 @@ MICROCORE_SRC = \ ..\deb.c \ ..\doio.c \ ..\doop.c \ + ..\dquote.c \ ..\dump.c \ ..\globals.c \ ..\gv.c \ @@ -716,6 +717,7 @@ MICROCORE_SRC = \ ..\scope.c \ ..\sv.c \ ..\taint.c \ + ..\time64.c \ ..\toke.c \ ..\universal.c \ ..\utf8.c \ diff --git a/dquote_static.c b/dquote.c similarity index 53% rename from dquote_static.c rename to dquote.c index 885ba06..9d35f20 100644 --- a/dquote_static.c +++ b/dquote.c @@ -1,46 +1,21 @@ -/* dquote_static.c +/* dquote.c * - * This file contains static functions that are related to - * parsing double-quotish expressions, but are used in more than - * one file. + * This file contains functions that are related to + * parsing double-quotish expressions. * - * It is currently #included by regcomp.c and toke.c. */ -#define PERL_IN_DQUOTE_STATIC_C -#include "embed.h" - -/* - - regcurly - a little FSA that accepts {\d+,?\d*} - Pulled from regcomp.c. - */ -PERL_STATIC_INLINE I32 -S_regcurly(const char *s) -{ - PERL_ARGS_ASSERT_REGCURLY; - - if (*s++ != '{') - return FALSE; - if (!isDIGIT(*s)) - return FALSE; - while (isDIGIT(*s)) - s++; - if (*s == ',') { - s++; - while (isDIGIT(*s)) - s++; - } - - return *s == '}'; -} +#include "EXTERN.h" +#define PERL_IN_DQUOTE_C +#include "perl.h" /* XXX Add documentation after final interface and behavior is decided */ -/* May want to show context for error, so would pass Perl_bslash_c(pTHX_ const char* current, const char* start, const bool output_warning) +/* May want to show context for error, so would pass S_grok_bslash_c(pTHX_ const char* current, const char* start, const bool output_warning) U8 source = *current; */ -STATIC char -S_grok_bslash_c(pTHX_ const char source, const bool output_warning) +char +Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning) { U8 result; @@ -79,8 +54,8 @@ S_grok_bslash_c(pTHX_ const char source, const bool output_warning) return result; } -STATIC bool -S_grok_bslash_o(pTHX_ char **s, UV *uv, const char** error_msg, +bool +Perl_grok_bslash_o(pTHX_ char **s, UV *uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool UTF) @@ -190,132 +165,8 @@ S_grok_bslash_o(pTHX_ char **s, UV *uv, const char** error_msg, return TRUE; } -PERL_STATIC_INLINE bool -S_grok_bslash_x(pTHX_ char **s, UV *uv, const char** error_msg, - const bool output_warning, const bool strict, - const bool silence_non_portable, - const bool UTF) -{ - -/* Documentation to be supplied when interface nailed down finally - * This returns FALSE if there is an error which the caller need not recover - * from; otherwise TRUE. - * It guarantees that the returned codepoint, *uv, when expressed as - * utf8 bytes, would fit within the skipped "\x{...}" bytes. - * - * On input: - * s is the address of a pointer to a NULL terminated string that begins - * with 'x', and the previous character was a backslash. At exit, *s - * will be advanced to the byte just after those absorbed by this - * function. Hence the caller can continue parsing from there. In - * the case of an error, this routine has generally positioned *s to - * point just to the right of the first bad spot, so that a message - * that has a "<--" to mark the spot will be correctly positioned. - * uv points to a UV that will hold the output value, valid only if the - * return from the function is TRUE - * error_msg is a pointer that will be set to an internal buffer giving an - * error message upon failure (the return is FALSE). Untouched if - * function succeeds - * output_warning says whether to output any warning messages, or suppress - * them - * strict is true if anything out of the ordinary should cause this to - * fail instead of warn or be silent. For example, it requires - * exactly 2 digits following the \x (when there are no braces). - * 3 digits could be a mistake, so is forbidden in this mode. - * silence_non_portable is true if to suppress warnings about the code - * point returned being too large to fit on all platforms. - * UTF is true iff the string *s is encoded in UTF-8. - */ - char* e; - STRLEN numbers_len; - I32 flags = PERL_SCAN_DISALLOW_PREFIX; -#ifdef DEBUGGING - char *start = *s - 1; - assert(*start == '\\'); -#endif - - PERL_ARGS_ASSERT_GROK_BSLASH_X; - - assert(**s == 'x'); - (*s)++; - - if (strict || ! output_warning) { - flags |= PERL_SCAN_SILENT_ILLDIGIT; - } - - if (**s != '{') { - STRLEN len = (strict) ? 3 : 2; - - *uv = grok_hex(*s, &len, &flags, NULL); - *s += len; - if (strict && len != 2) { - if (len < 2) { - *s += (UTF) ? UTF8SKIP(*s) : 1; - *error_msg = "Non-hex character"; - } - else { - *error_msg = "Use \\x{...} for more than two hex characters"; - } - return FALSE; - } - goto ok; - } - - e = strchr(*s, '}'); - if (!e) { - (*s)++; /* Move past the '{' */ - while (isXDIGIT(**s)) { /* Position beyond the legal digits */ - (*s)++; - } - /* XXX The corresponding message above for \o is just '\\o{'; other - * messages for other constructs include the '}', so are inconsistent. - */ - *error_msg = "Missing right brace on \\x{}"; - return FALSE; - } - - (*s)++; /* Point to expected first digit (could be first byte of utf8 - sequence if not a digit) */ - numbers_len = e - *s; - if (numbers_len == 0) { - if (strict) { - (*s)++; /* Move past the } */ - *error_msg = "Number with no digits"; - return FALSE; - } - *s = e + 1; - *uv = 0; - goto ok; - } - - flags |= PERL_SCAN_ALLOW_UNDERSCORES; - if (silence_non_portable) { - flags |= PERL_SCAN_SILENT_NON_PORTABLE; - } - - *uv = grok_hex(*s, &numbers_len, &flags, NULL); - /* Note that if has non-hex, will ignore everything starting with that up - * to the '}' */ - - if (strict && numbers_len != (STRLEN) (e - *s)) { - *s += numbers_len; - *s += (UTF) ? UTF8SKIP(*s) : 1; - *error_msg = "Non-hex character"; - return FALSE; - } - - /* Return past the '}' */ - *s = e + 1; - - ok: - /* guarantee replacing "\x{...}" with utf8 bytes fits within - * existing space */ - assert(OFFUNISKIP(*uv) < *s - start); - return TRUE; -} - -STATIC char* -S_form_short_octal_warning(pTHX_ +char* +Perl_form_short_octal_warning(pTHX_ const char * const s, /* Points to first non-octal */ const STRLEN len /* Length of octals string, so (s-len) points to first diff --git a/dquote_inline.h b/dquote_inline.h new file mode 100644 index 0000000..d8548bf --- /dev/null +++ b/dquote_inline.h @@ -0,0 +1,160 @@ +/* dquote_inline.h + * + * Copyright (C) 2015 by Larry Wall and others + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + */ + +#ifndef DQUOTE_INLINE_H /* Guard against nested #inclusion */ +#define DQUOTE_INLINE_H + +/* + - regcurly - a little FSA that accepts {\d+,?\d*} + Pulled from reg.c. + */ +PERL_STATIC_INLINE I32 +S_regcurly(const char *s) +{ + PERL_ARGS_ASSERT_REGCURLY; + + if (*s++ != '{') + return FALSE; + if (!isDIGIT(*s)) + return FALSE; + while (isDIGIT(*s)) + s++; + if (*s == ',') { + s++; + while (isDIGIT(*s)) + s++; + } + + return *s == '}'; +} + +PERL_STATIC_INLINE bool +S_grok_bslash_x(pTHX_ char **s, UV *uv, const char** error_msg, + const bool output_warning, const bool strict, + const bool silence_non_portable, + const bool UTF) +{ + +/* Documentation to be supplied when interface nailed down finally + * This returns FALSE if there is an error which the caller need not recover + * from; otherwise TRUE. + * It guarantees that the returned codepoint, *uv, when expressed as + * utf8 bytes, would fit within the skipped "\x{...}" bytes. + * + * On input: + * s is the address of a pointer to a NULL terminated string that begins + * with 'x', and the previous character was a backslash. At exit, *s + * will be advanced to the byte just after those absorbed by this + * function. Hence the caller can continue parsing from there. In + * the case of an error, this routine has generally positioned *s to + * point just to the right of the first bad spot, so that a message + * that has a "<--" to mark the spot will be correctly positioned. + * uv points to a UV that will hold the output value, valid only if the + * return from the function is TRUE + * error_msg is a pointer that will be set to an internal buffer giving an + * error message upon failure (the return is FALSE). Untouched if + * function succeeds + * output_warning says whether to output any warning messages, or suppress + * them + * strict is true if anything out of the ordinary should cause this to + * fail instead of warn or be silent. For example, it requires + * exactly 2 digits following the \x (when there are no braces). + * 3 digits could be a mistake, so is forbidden in this mode. + * silence_non_portable is true if to suppress warnings about the code + * point returned being too large to fit on all platforms. + * UTF is true iff the string *s is encoded in UTF-8. + */ + char* e; + STRLEN numbers_len; + I32 flags = PERL_SCAN_DISALLOW_PREFIX; +#ifdef DEBUGGING + char *start = *s - 1; + assert(*start == '\\'); +#endif + + PERL_ARGS_ASSERT_GROK_BSLASH_X; + + assert(**s == 'x'); + (*s)++; + + if (strict || ! output_warning) { + flags |= PERL_SCAN_SILENT_ILLDIGIT; + } + + if (**s != '{') { + STRLEN len = (strict) ? 3 : 2; + + *uv = grok_hex(*s, &len, &flags, NULL); + *s += len; + if (strict && len != 2) { + if (len < 2) { + *s += (UTF) ? UTF8SKIP(*s) : 1; + *error_msg = "Non-hex character"; + } + else { + *error_msg = "Use \\x{...} for more than two hex characters"; + } + return FALSE; + } + goto ok; + } + + e = strchr(*s, '}'); + if (!e) { + (*s)++; /* Move past the '{' */ + while (isXDIGIT(**s)) { /* Position beyond the legal digits */ + (*s)++; + } + /* XXX The corresponding message above for \o is just '\\o{'; other + * messages for other constructs include the '}', so are inconsistent. + */ + *error_msg = "Missing right brace on \\x{}"; + return FALSE; + } + + (*s)++; /* Point to expected first digit (could be first byte of utf8 + sequence if not a digit) */ + numbers_len = e - *s; + if (numbers_len == 0) { + if (strict) { + (*s)++; /* Move past the } */ + *error_msg = "Number with no digits"; + return FALSE; + } + *s = e + 1; + *uv = 0; + goto ok; + } + + flags |= PERL_SCAN_ALLOW_UNDERSCORES; + if (silence_non_portable) { + flags |= PERL_SCAN_SILENT_NON_PORTABLE; + } + + *uv = grok_hex(*s, &numbers_len, &flags, NULL); + /* Note that if has non-hex, will ignore everything starting with that up + * to the '}' */ + + if (strict && numbers_len != (STRLEN) (e - *s)) { + *s += numbers_len; + *s += (UTF) ? UTF8SKIP(*s) : 1; + *error_msg = "Non-hex character"; + return FALSE; + } + + /* Return past the '}' */ + *s = e + 1; + + ok: + /* guarantee replacing "\x{...}" with utf8 bytes fits within + * existing space */ + assert(OFFUNISKIP(*uv) < *s - start); + return TRUE; +} + +#endif /* DQUOTE_INLINE_H */ diff --git a/dump.c b/dump.c index c4d4018..7369a9a 100644 --- a/dump.c +++ b/dump.c @@ -1116,7 +1116,7 @@ Perl_gv_dump(pTHX_ GV *gv) */ static const struct { const char type; const char *name; } magic_names[] = { -#include "mg_names.c" +#include "mg_names.inc" /* this null string terminates the list */ { 0, NULL }, }; diff --git a/embed.fnc b/embed.fnc index af63435..9171ec6 100644 --- a/embed.fnc +++ b/embed.fnc @@ -798,22 +798,22 @@ p |OP* |localize |NN OP *o|I32 lex ApdR |I32 |looks_like_number|NN SV *const sv Apd |UV |grok_bin |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) -EMsR |char |grok_bslash_c |const char source|const bool output_warning -EMsR |bool |grok_bslash_o |NN char** s|NN UV* uv \ +EMiR |bool |grok_bslash_x |NN char** s|NN UV* uv \ |NN const char** error_msg \ |const bool output_warning \ |const bool strict \ |const bool silence_non_portable \ |const bool utf8 -EMiR |bool |grok_bslash_x |NN char** s|NN UV* uv \ +#endif +EMpRX |char |grok_bslash_c |const char source|const bool output_warning +EMpRX |bool |grok_bslash_o |NN char** s|NN UV* uv \ |NN const char** error_msg \ |const bool output_warning \ |const bool strict \ |const bool silence_non_portable \ |const bool utf8 -EMsPR |char*|form_short_octal_warning|NN const char * const s \ +EMpPRX |char*|form_short_octal_warning|NN const char * const s \ |const STRLEN len -#endif Apd |UV |grok_hex |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result Apd |int |grok_infnan |NN const char** sp|NN const char *send Apd |int |grok_number |NN const char *pv|STRLEN len|NULLOK UV *valuep diff --git a/embed.h b/embed.h index 5963253..6cebb19 100644 --- a/embed.h +++ b/embed.h @@ -902,7 +902,10 @@ #define av_reify(a) Perl_av_reify(aTHX_ a) #define current_re_engine() Perl_current_re_engine(aTHX) #define cv_ckproto_len_flags(a,b,c,d,e) Perl_cv_ckproto_len_flags(aTHX_ a,b,c,d,e) +#define form_short_octal_warning(a,b) Perl_form_short_octal_warning(aTHX_ a,b) #define grok_atoUV Perl_grok_atoUV +#define grok_bslash_c(a,b) Perl_grok_bslash_c(aTHX_ a,b) +#define grok_bslash_o(a,b,c,d,e,f,g) Perl_grok_bslash_o(aTHX_ a,b,c,d,e,f,g) #define mg_find_mglob(a) Perl_mg_find_mglob(aTHX_ a) #define multideref_stringify(a,b) Perl_multideref_stringify(aTHX_ a,b) #define op_clear(a) Perl_op_clear(aTHX_ a) @@ -1038,9 +1041,6 @@ #define _core_swash_init(a,b,c,d,e,f,g) Perl__core_swash_init(aTHX_ a,b,c,d,e,f,g) # endif # if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) -#define form_short_octal_warning(a,b) S_form_short_octal_warning(aTHX_ a,b) -#define grok_bslash_c(a,b) S_grok_bslash_c(aTHX_ a,b) -#define grok_bslash_o(a,b,c,d,e,f,g) S_grok_bslash_o(aTHX_ a,b,c,d,e,f,g) #define grok_bslash_x(a,b,c,d,e,f,g) S_grok_bslash_x(aTHX_ a,b,c,d,e,f,g) #define regcurly S_regcurly # endif diff --git a/ext/re/Makefile.PL b/ext/re/Makefile.PL index c6338c7..278477c 100644 --- a/ext/re/Makefile.PL +++ b/ext/re/Makefile.PL @@ -24,29 +24,29 @@ sub upupfile { sub postamble { my $regcomp_c = upupfile('regcomp.c'); my $regexec_c = upupfile('regexec.c'); - my $dquote_static_c = upupfile('dquote_static.c'); - my $inline_invlist_c = upupfile('inline_invlist.c'); + my $dquote_c = upupfile('dquote.c'); + my $invlist_inline_h = upupfile('invlist_inline.h'); <<EOF; re_comp.c : $regcomp_c - \$(RM_F) re_comp.c \$(CP) $regcomp_c re_comp.c -re_comp\$(OBJ_EXT) : re_comp.c dquote_static.c inline_invlist.c +re_comp\$(OBJ_EXT) : re_comp.c dquote.c invlist_inline_h re_exec.c : $regexec_c - \$(RM_F) re_exec.c \$(CP) $regexec_c re_exec.c -re_exec\$(OBJ_EXT) : re_exec.c inline_invlist.c +re_exec\$(OBJ_EXT) : re_exec.c invlist_inline_h -dquote_static.c : $dquote_static_c - - \$(RM_F) dquote_static.c - \$(CP) $dquote_static_c dquote_static.c +dquote.c : $dquote_c + - \$(RM_F) dquote.c + \$(CP) $dquote_c dquote.c -inline_invlist.c : $inline_invlist_c - - \$(RM_F) inline_invlist.c - \$(CP) $inline_invlist_c inline_invlist.c +invlist_inline_h : $inline_invlist_c + - \$(RM_F) invlist_inline_h + \$(CP) $invlist_inline_h inline_invlist.c EOF } diff --git a/gv.c b/gv.c index 5d642af..821a383 100644 --- a/gv.c +++ b/gv.c @@ -34,7 +34,7 @@ Perl stores its global variables. #include "EXTERN.h" #define PERL_IN_GV_C #include "perl.h" -#include "overload.c" +#include "overload.inc" #include "keywords.h" #include "feature.h" diff --git a/inline_invlist.c b/invlist_inline.h similarity index 99% rename from inline_invlist.c rename to invlist_inline.h index 1589f95..4ce04f9 100644 --- a/inline_invlist.c +++ b/invlist_inline.h @@ -1,4 +1,4 @@ -/* inline_invlist.c +/* invlist_inline.h * * Copyright (C) 2012 by Larry Wall and others * diff --git a/mg_names.c b/mg_names.inc similarity index 99% rename from mg_names.c rename to mg_names.inc index 57d52db..fde6872 100644 --- a/mg_names.c +++ b/mg_names.inc @@ -1,6 +1,6 @@ /* -*- buffer-read-only: t -*- * - * mg_names.c + * mg_names.inc * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by regen/mg_vtable.pl. * Any changes made here will be lost! diff --git a/overload.c b/overload.inc similarity index 99% rename from overload.c rename to overload.inc index 3cf64c7..2383ef2 100644 --- a/overload.c +++ b/overload.inc @@ -1,6 +1,6 @@ /* -*- buffer-read-only: t -*- * - * overload.c + * overload.inc * * Copyright (C) 1997, 1998, 2000, 2001, 2005, 2006, 2007, 2011 * by Larry Wall and others diff --git a/packsizetables.c b/packsizetables.inc similarity index 100% rename from packsizetables.c rename to packsizetables.inc diff --git a/plan9/mkfile b/plan9/mkfile index cf2153e..621a04c 100644 --- a/plan9/mkfile +++ b/plan9/mkfile @@ -35,7 +35,7 @@ ext_xs = IO.xs Socket.xs Opcode.xs dl_none.xs Fcntl.xs POSIX.xs ext_c = ${ext_xs:%.xs=%.c} ext_obj = ${ext_xs:%.xs=%.$O} -obj = av.$O deb.$O doio.$O doop.$O dump.$O globals.$O gv.$O hv.$O locale.$O malloc.$O mathoms.$O mg.$O numeric.$O op.$O pad.$O perlapi.$O perlio.$O perly.$O pp.$O pp_ctl.$O pp_hot.$O pp_pack.$O pp_so ... [115 chars truncated] +obj = av.$O deb.$O doio.$O doop.$O dquote.$O dump.$O globals.$O gv.$O hv.$O locale.$O malloc.$O mathoms.$O mg.$O numeric.$O op.$O pad.$O perlapi.$O perlio.$O perly.$O pp.$O pp_ctl.$O pp_hot.$O pp_pac ... [135 chars truncated] OBJS = perl.$O plan9.$O $obj diff --git a/pp_pack.c b/pp_pack.c index cf1074e..dd0dd4e 100644 --- a/pp_pack.c +++ b/pp_pack.c @@ -237,7 +237,7 @@ S_mul128(pTHX_ SV *sv, U8 m) #define PACK_SIZE_UNPREDICTABLE 0x40 /* Not a fixed size element */ #define PACK_SIZE_MASK 0x3F -#include "packsizetables.c" +#include "packsizetables.inc" static void S_reverse_copy(const char *src, char *dest, STRLEN len) diff --git a/pp_sys.c b/pp_sys.c index b0f7798..ebd675b 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -30,7 +30,6 @@ #define PERL_IN_PP_SYS_C #include "perl.h" #include "time64.h" -#include "time64.c" #ifdef I_SHADOW /* Shadow password support for solaris - [email protected] @@ -4671,9 +4670,9 @@ PP(pp_gmtime) } else { if (PL_op->op_type == OP_LOCALTIME) - err = S_localtime64_r(&when, &tmbuf); + err = Perl_localtime64_r(&when, &tmbuf); else - err = S_gmtime64_r(&when, &tmbuf); + err = Perl_gmtime64_r(&when, &tmbuf); } if (err == NULL) { diff --git a/proto.h b/proto.h index 319b248..b7acae9 100644 --- a/proto.h +++ b/proto.h @@ -1264,6 +1264,13 @@ PERL_CALLCONV char* Perl_form(pTHX_ const char* pat, ...) #define PERL_ARGS_ASSERT_FORM \ assert(pat) +PERL_CALLCONV char* Perl_form_short_octal_warning(pTHX_ const char * const s, const STRLEN len) + __attribute__warn_unused_result__ + __attribute__pure__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING \ + assert(s) + PERL_CALLCONV void Perl_free_tied_hv_pool(pTHX); PERL_CALLCONV void Perl_free_tmps(pTHX); PERL_CALLCONV AV* Perl_get_av(pTHX_ const char *name, I32 flags) @@ -1348,6 +1355,17 @@ PERL_CALLCONV UV Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flag #define PERL_ARGS_ASSERT_GROK_BIN \ assert(start); assert(len_p); assert(flags) +PERL_CALLCONV char Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning) + __attribute__warn_unused_result__; + +PERL_CALLCONV bool Perl_grok_bslash_o(pTHX_ char** s, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); +#define PERL_ARGS_ASSERT_GROK_BSLASH_O \ + assert(s); assert(uv); assert(error_msg) + PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) @@ -7312,24 +7330,6 @@ PERL_CALLCONV SV* Perl__core_swash_init(pTHX_ const char* pkg, const char* name, #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) -STATIC char* S_form_short_octal_warning(pTHX_ const char * const s, const STRLEN len) - __attribute__warn_unused_result__ - __attribute__pure__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING \ - assert(s) - -STATIC char S_grok_bslash_c(pTHX_ const char source, const bool output_warning) - __attribute__warn_unused_result__; - -STATIC bool S_grok_bslash_o(pTHX_ char** s, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8) - __attribute__warn_unused_result__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3); -#define PERL_ARGS_ASSERT_GROK_BSLASH_O \ - assert(s); assert(uv); assert(error_msg) - PERL_STATIC_INLINE bool S_grok_bslash_x(pTHX_ char** s, UV* uv, const char** error_msg, const bool output_warning, const bool strict, const bool silence_non_portable, const bool utf8) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) diff --git a/regcomp.c b/regcomp.c index 3e6ac62..556e558 100644 --- a/regcomp.c +++ b/regcomp.c @@ -86,8 +86,8 @@ EXTERN_C const struct regexp_engine my_reg_engine; # include "regcomp.h" #endif -#include "dquote_static.c" -#include "inline_invlist.c" +#include "dquote_inline.h" +#include "invlist_inline.h" #include "unicode_constants.h" #define HAS_NONLATIN1_FOLD_CLOSURE(i) \ @@ -7981,7 +7981,7 @@ S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags) * Some of the methods should always be private to the implementation, and some * should eventually be made public */ -/* The header definitions are in F<inline_invlist.c> */ +/* The header definitions are in F<invlist_inline.h> */ PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_have_0) diff --git a/regen/genpacksizetables.pl b/regen/genpacksizetables.pl index 742eb6f..7a03dcd 100644 --- a/regen/genpacksizetables.pl +++ b/regen/genpacksizetables.pl @@ -70,7 +70,7 @@ my %asciimap = map {chr $_, chr $_} 0..255; # will work; just choose one my %ebcdicmap = map {chr $_, Encode::encode("posix-bc", chr $_)} 0..255; -my $fh = open_new('packsizetables.c', '>', { by => $0, from => 'its data'}); +my $fh = open_new('packsizetables.inc', '>', { by => $0, from => 'its data'}); print $fh <<"EOC"; #if TYPE_IS_SHRIEKING != 0x100 diff --git a/regen/mg_vtable.pl b/regen/mg_vtable.pl index 46dce97..a05a7d4 100644 --- a/regen/mg_vtable.pl +++ b/regen/mg_vtable.pl @@ -2,7 +2,7 @@ # # Regenerate (overwriting only if changed): # -# mg_names.c +# mg_names.inc # mg_raw.h # mg_vtable.h # pod/perlguts.pod @@ -155,7 +155,7 @@ my %sig = my ($vt, $raw, $names) = map { open_new($_, '>', { by => 'regen/mg_vtable.pl', file => $_, style => '*' }); -} 'mg_vtable.h', 'mg_raw.h', 'mg_names.c'; +} 'mg_vtable.h', 'mg_raw.h', 'mg_names.inc'; my $guts = open_new("pod/perlguts.pod", ">"); print $vt <<'EOH'; diff --git a/regen/overload.pl b/regen/overload.pl index 165e1c1..c95ab2d 100644 --- a/regen/overload.pl +++ b/regen/overload.pl @@ -3,7 +3,7 @@ # Regenerate (overwriting only if changed): # # overload.h -# overload.c +# overload.inc # lib/overload/numbers.pm # # from information stored in the DATA section of this file. @@ -34,7 +34,7 @@ my ($c, $h) = map { open_new($_, '>', { by => 'regen/overload.pl', file => $_, style => '*', copyright => [1997, 1998, 2000, 2001, 2005 .. 2007, 2011] }); -} 'overload.c', 'overload.h'; +} 'overload.inc', 'overload.h'; mkdir("lib/overload", 0777) unless -d 'lib/overload'; my $p = open_new('lib/overload/numbers.pm', '>', diff --git a/regen/regen_lib.pl b/regen/regen_lib.pl index 81069fa..184d86b 100644 --- a/regen/regen_lib.pl +++ b/regen/regen_lib.pl @@ -37,7 +37,7 @@ sub open_new { my ($final_name, $mode, $header, $force) = @_; my $name = $final_name . '-new'; my $lang = $final_name =~ /\.pod$/ ? 'Pod' : - $final_name =~ /\.(?:c|h|tab|act)$/ ? 'C' : 'Perl'; + $final_name =~ /\.(?:c|h|inc|tab|act)$/ ? 'C' : 'Perl'; if ($force && -e $final_name) { chmod 0777, $name if $Needs_Write; CORE::unlink $final_name diff --git a/regexec.c b/regexec.c index 3455498..ec4ed86 100644 --- a/regexec.c +++ b/regexec.c @@ -83,7 +83,7 @@ # include "regcomp.h" #endif -#include "inline_invlist.c" +#include "invlist_inline.h" #include "unicode_constants.h" #ifdef DEBUGGING diff --git a/t/porting/args_assert.t b/t/porting/args_assert.t index c3188a7..9d4c058 100644 --- a/t/porting/args_assert.t +++ b/t/porting/args_assert.t @@ -44,8 +44,8 @@ if (!@ARGV) { # *.c or */*.c push @ARGV, $prefix . $1 if m!^((?:[^/]+/)?[^/]+\.c)\t!; } - push @ARGV, $prefix . 'inline.h'; # Special case this '.h' which acts like - # a '.c' + # Special case the *inline.h since they behave like *.c + push @ARGV, glob "$prefix/*inline.h"; } while (<>) { diff --git a/time64.c b/time64.c index f0e8d71..ca7f786 100644 --- a/time64.c +++ b/time64.c @@ -33,12 +33,15 @@ long' type can use localtime64_r() and gmtime64_r() which correctly converts the time even on 32-bit systems. Whether you have 64-bit time values will depend on the operating system. -S_localtime64_r() is a 64-bit equivalent of localtime_r(). +Perl_localtime64_r() is a 64-bit equivalent of localtime_r(). -S_gmtime64_r() is a 64-bit equivalent of gmtime_r(). +Perl_gmtime64_r() is a 64-bit equivalent of gmtime_r(). */ +#include "EXTERN.h" +#define PERL_IN_TIME64_C +#include "perl.h" #include "time64.h" static const char days_in_month[2][12] = { @@ -69,16 +72,6 @@ static const short safe_years[SOLAR_CYCLE_LENGTH] = { 2012, 2013, 2014, 2015 }; -static const char dow_year_start[SOLAR_CYCLE_LENGTH] = { - 5, 0, 1, 2, /* 0 2016 - 2019 */ - 3, 5, 6, 0, /* 4 */ - 1, 3, 4, 5, /* 8 */ - 6, 1, 2, 3, /* 12 */ - 4, 6, 0, 1, /* 16 */ - 2, 4, 5, 6, /* 20 2036, 2037, 2010, 2011 */ - 0, 2, 3, 4 /* 24 2012, 2013, 2014, 2015 */ -}; - /* Let's assume people are going to be looking for dates in the future. Let's provide some cheats so you can skip ahead. This has a 4x speed boost when near 2008. @@ -340,7 +333,7 @@ static struct tm * S_gmtime_r(const time_t *clock, struct tm *result) { } #endif -static struct TM *S_gmtime64_r (const Time64_T *in_time, struct TM *p) +struct TM *Perl_gmtime64_r (const Time64_T *in_time, struct TM *p) { int v_tm_sec, v_tm_min, v_tm_hour, v_tm_mon, v_tm_wday; Time64_T v_tm_tday; @@ -467,7 +460,7 @@ static struct TM *S_gmtime64_r (const Time64_T *in_time, struct TM *p) } -static struct TM *S_localtime64_r (const Time64_T *time, struct TM *local_tm) +struct TM *Perl_localtime64_r (const Time64_T *time, struct TM *local_tm) { time_t safe_time; struct tm safe_date; @@ -491,7 +484,7 @@ static struct TM *S_localtime64_r (const Time64_T *time, struct TM *local_tm) return local_tm; } - if( S_gmtime64_r(time, &gm_tm) == NULL ) { + if( Perl_gmtime64_r(time, &gm_tm) == NULL ) { TIME64_TRACE1("gmtime64_r returned null for %lld\n", *time); return NULL; } diff --git a/time64.h b/time64.h index b7306d0..6f60bce 100644 --- a/time64.h +++ b/time64.h @@ -49,9 +49,8 @@ struct TM64 { /* Declare functions */ -static struct TM *S_gmtime64_r (const Time64_T *, struct TM *); -static struct TM *S_localtime64_r (const Time64_T *, struct TM *); -static Time64_T S_timegm64 (struct TM *); +struct TM *Perl_gmtime64_r (const Time64_T *, struct TM *); +struct TM *Perl_localtime64_r (const Time64_T *, struct TM *); /* Not everyone has gm/localtime_r(), provide a replacement */ diff --git a/toke.c b/toke.c index db82129..205b00b 100644 --- a/toke.c +++ b/toke.c @@ -38,7 +38,7 @@ Individual members of C<PL_parser> have their own documentation. #include "EXTERN.h" #define PERL_IN_TOKE_C #include "perl.h" -#include "dquote_static.c" +#include "dquote_inline.h" #define new_constant(a,b,c,d,e,f,g) \ S_new_constant(aTHX_ a,b,STR_WITH_LEN(c),d,e,f, g) diff --git a/utf8.c b/utf8.c index 360e1f5..cbff7a7 100644 --- a/utf8.c +++ b/utf8.c @@ -31,7 +31,7 @@ #include "EXTERN.h" #define PERL_IN_UTF8_C #include "perl.h" -#include "inline_invlist.c" +#include "invlist_inline.h" static const char unees[] = "Malformed UTF-8 character (unexpected end of string)"; diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index 5a7c49d..e651c1e 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -226,17 +226,17 @@ FULLLIBS2 = $(LIBS2)|$(THRLIBS1)|$(THRLIBS2) #### End of system configuration section. #### -c0 = $(MALLOC_C) av.c caretx.c deb.c doio.c doop.c dump.c globals.c gv.c hv.c mro_core.c +c0 = $(MALLOC_C) av.c caretx.c deb.c doio.c doop.c dquote.c dump.c globals.c gv.c hv.c mro_core.c c1 = mg.c locale.c mathoms.c miniperlmain.c numeric.c op.c pad.c perl.c perlapi.c perlio.c c2 = perly.c pp.c pp_ctl.c pp_hot.c pp_pack.c pp_sort.c pp_sys.c regcomp.c regexec.c reentr.c -c3 = run.c scope.c sv.c taint.c toke.c universal.c utf8.c util.c vms.c keywords.c +c3 = run.c scope.c sv.c taint.c time64.c toke.c universal.c utf8.c util.c vms.c keywords.c c = $(c0) $(c1) $(c2) $(c3) obj0 = perl$(O) -obj1 = $(MALLOC_O) av$(O) caretx$(O) deb$(O) doio$(O) doop$(O) dump$(O) mro_core$(O) globals$(O) gv$(O) hv$(O) +obj1 = $(MALLOC_O) av$(O) caretx$(O) deb$(O) doio$(O) doop$(O) dquote(O) dump$(O) mro_core$(O) globals$(O) gv$(O) hv$(O) obj2 = keywords$(O) locale$(O) mathoms$(O) mg$(O) miniperlmain$(O) numeric$(O) op$(O) pad$(O) perlapi$(O) perlio$(O) obj3 = perly$(O) pp$(O) pp_ctl$(O) pp_hot$(O) reentr$(O) pp_pack$(O) pp_sort$(O) pp_sys$(O) regcomp$(O) -obj4 = regexec$(O) run$(O) scope$(O) sv$(O) taint$(O) toke$(O) universal$(O) utf8$(O) util$(O) vms$(O) +obj4 = regexec$(O) run$(O) scope$(O) sv$(O) taint$(O) time64$(O) toke$(O) universal$(O) utf8$(O) util$(O) vms$(O) mini_obj = perlmini$(O) $(obj1) $(obj2) $(obj3) $(obj4) obj = $(obj0) $(obj1) $(obj2) $(obj3) $(obj4) @@ -625,6 +625,8 @@ doio$(O) : doio.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) doop$(O) : doop.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) +dquote$(O) : dquote.c $(h) + $(CC) $(CORECFLAGS) $(MMS$SOURCE) dump$(O) : dump.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) globals$(O) : globals.c $(generated_headers) $(h) @@ -689,6 +691,8 @@ sv$(O) : sv.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) taint$(O) : taint.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) +time64$(O) : time64.c $(h) + $(CC) $(CORECFLAGS) $(MMS$SOURCE) toke$(O) : toke.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) universal$(O) : universal.c $(h) diff --git a/win32/GNUmakefile b/win32/GNUmakefile index 4f496c9..f92c0f0 100644 --- a/win32/GNUmakefile +++ b/win32/GNUmakefile @@ -537,6 +537,7 @@ MICROCORE_SRC = \ ..\deb.c \ ..\doio.c \ ..\doop.c \ + ..\dquote.c \ ..\dump.c \ ..\globals.c \ ..\gv.c \ @@ -565,6 +566,7 @@ MICROCORE_SRC = \ ..\scope.c \ ..\sv.c \ ..\taint.c \ + ..\time64.c \ ..\toke.c \ ..\universal.c \ ..\utf8.c \ diff --git a/win32/Makefile b/win32/Makefile index 0b77b2c..807c444 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -702,6 +702,7 @@ MICROCORE_SRC = \ ..\deb.c \ ..\doio.c \ ..\doop.c \ + ..\dquote.c \ ..\dump.c \ ..\globals.c \ ..\gv.c \ @@ -730,6 +731,7 @@ MICROCORE_SRC = \ ..\scope.c \ ..\sv.c \ ..\taint.c \ + ..\time64.c \ ..\toke.c \ ..\universal.c \ ..\utf8.c \ diff --git a/win32/Makefile.ce b/win32/Makefile.ce index 67d43c9..b9a979c 100644 --- a/win32/Makefile.ce +++ b/win32/Makefile.ce @@ -622,6 +622,7 @@ MICROCORE_SRC = \ ..\deb.c \ ..\doio.c \ ..\doop.c \ + ..\dquote.c \ ..\dump.c \ ..\globals.c \ ..\gv.c \ @@ -650,6 +651,7 @@ MICROCORE_SRC = \ ..\scope.c \ ..\sv.c \ ..\taint.c \ + ..\time64.c \ ..\toke.c \ ..\universal.c \ ..\utf8.c \ @@ -867,6 +869,7 @@ $(DLLDIR)\caretx.obj \ $(DLLDIR)\deb.obj \ $(DLLDIR)\doio.obj \ $(DLLDIR)\doop.obj \ +$(DLLDIR)\dquote.obj \ $(DLLDIR)\dump.obj \ $(DLLDIR)\globals.obj \ $(DLLDIR)\gv.obj \ @@ -896,6 +899,7 @@ $(DLLDIR)\run.obj \ $(DLLDIR)\scope.obj \ $(DLLDIR)\sv.obj \ $(DLLDIR)\taint.obj \ +$(DLLDIR)\time64.obj \ $(DLLDIR)\toke.obj \ $(DLLDIR)\universal.obj \ $(DLLDIR)\utf8.obj \ diff --git a/win32/makefile.mk b/win32/makefile.mk index 48f34bb..3e59130 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -847,6 +847,7 @@ MICROCORE_SRC = \ ..\deb.c \ ..\doio.c \ ..\doop.c \ + ..\dquote.c \ ..\dump.c \ ..\globals.c \ ..\gv.c \ @@ -875,6 +876,7 @@ MICROCORE_SRC = \ ..\scope.c \ ..\sv.c \ ..\taint.c \ + ..\time64.c \ ..\toke.c \ ..\universal.c \ ..\utf8.c \ -- Perl5 Master Repository
