In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/a2dd16063e263db10679174268644f798e9770e5?hp=a9aff56e0a39d32229b46a8f14ec04f03919406c>
- Log ----------------------------------------------------------------- commit a2dd16063e263db10679174268644f798e9770e5 Author: Craig A. Berry <[email protected]> Date: Thu Dec 8 13:14:19 2016 -0600 Escape extended characters in configure.com's manifest check. Math::BigInt now has a file with '#' in the name. This broke the build on VMS because the manifest checker couldn't find that file. While the current file system can have files with a hash character or other top-row-of-the-keyboard characters, most of them need escaping with a caret when used in a filename in native syntax. So add a more-or-less general purpose escaping routine and run it on each filename in the manifest before converting from Unix to VMS syntax. ----------------------------------------------------------------------- Summary of changes: configure.com | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/configure.com b/configure.com index ddcd9b4b28..c816620942 100644 --- a/configure.com +++ b/configure.com @@ -470,6 +470,27 @@ $ EXIT !2 !$STATUS = "%X00000002" (error) $ ENDIF $Beyond_depth_check: $! +$ escape_extended_chars: subroutine +$ string = 'p1' ! It's the name of the symbol +$ chars_to_escape = p2 +$ sindex = 0 +$ slength = f$length(string) +$ loop_over_chars: +$ if sindex .eq. slength then goto end_loop_over_chars +$ char = f$extract(sindex, 1, string) +$ if f$locate(char, chars_to_escape) .lt. f$length(chars_to_escape) +$ then +$ string = f$extract(0, sindex, string) + "^" + f$extract(sindex, slength, string) +$ slength = slength + 1 ! we've increased overall length by 1 +$ sindex = sindex + 1 ! don't check the char we just escaped again +$ endif +$ sindex = sindex + 1 +$ goto loop_over_chars +$ end_loop_over_chars: +$ 'p1' == string +$! +$ endsubroutine +$! $! after finding MANIFEST let's create (but not yet enter) the UU subdirectory $! $ IF (manifestfound .NES. "") @@ -511,6 +532,9 @@ $ line = F$EDIT(line,"TRIM, COMPRESS") $ file_2_find = F$EXTRACT(0,F$LOCATE(" ",line),line) $ IF F$LOCATE("/",file_2_find) .NE. F$LENGTH(file_2_find) $ THEN +$ escaped_fname == file_2_find +$ call escape_extended_chars escaped_fname "~!#&\'`()+@{},;[]%^=\" +$ file_2_find = escaped_fname $Re_strip_line_manifest: $ loca = F$LOCATE("/",file_2_find) $ ante = F$EXTRACT(0,loca,file_2_find) -- Perl5 Master Repository
