gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, new-vms, updated. gawk-4.1.0-167-g4eee68


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, new-vms, updated. gawk-4.1.0-167-g4eee688
Date: Sat, 04 Jan 2014 19:03:26 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, new-vms has been updated
       via  4eee688d1ff5059db3d40af26df188b90368589c (commit)
      from  e7214165a06bc1f4d9c6bdffc6b2b060beb6afee (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=4eee688d1ff5059db3d40af26df188b90368589c

commit 4eee688d1ff5059db3d40af26df188b90368589c
Author: Arnold D. Robbins <address@hidden>
Date:   Sat Jan 4 20:59:43 2014 +0200

    Update copyright years in VMS files, add packaging scripts.

diff --git a/vms/ChangeLog b/vms/ChangeLog
index ba017d6..0db7efd 100644
--- a/vms/ChangeLog
+++ b/vms/ChangeLog
@@ -1,3 +1,39 @@
+2014-01-03         John E. Malmberg      <address@hidden>
+
+       * config_h.com, generate_config_vms_h_gawk.com,
+         vms_args.c, vms_cli.c, vms_fwrite.c, vms_gawk.c, vms_misc.c,  
+         vms_popen.c: Update copyright to 2014.
+       * descrip.mms: Improve spotless cleanup.
+       * vmstest.com: Improve test cleanup.
+       * backup_gawk_src.com: New file. Create backup savesets for gawk source.
+       * build_gawk_pcsi_desc.com: New file. Create a pcsi$desc manifest
+         file for building a gawk package.
+       * build_gawk_pcsi_text.com: New file. Create a pcsi$text file for
+         building a gawk package.
+       * build_gawk_release_notes.com: New file. Create a VMS release notes
+         file based on the gawk README and COPYING files and the release note
+         start and build instruction files.
+       * compare_gawk_source.com: New file. Helper file to compare and
+         optionally update two gawk source directories.  Used to copy
+         source from an NFS volume to a VMS native volume for backup.
+       * gawk_alias_setup.com: New file. Used at installation time to
+         create hard links for for some files instead of copies.
+       * gawk_build_steps.txt: New file.  Document how to build a PCSI kit.
+       * gawk_release_note_start.txt: New file.  Start of release notes.
+       * gawk_verb.com: New file. Converts the gawk.cld file into a
+         gawk_verb.cld file for setting up GAWK as a DCL command.
+       * gnv_gawk_startup.com: New file.  Makes sure that the GNV$GNU logical
+         name need to easily find the gawk image is defined.
+       * make_pcsi_gawk_kit_name.com: New File. Create the PCSI kit name
+         based on the GAWK version.
+       * pcsi_gawk_file_list.txt: New File.  Input file for creating the
+         pcsi$desc manifest file.
+       * pcsi_product_gawk.com: New file.  File to create the PCSI kit.
+       * remove_old_gawk.com: New file.  File to remove obsolete GNV gawk
+         files replaced by the new PCSI kit.
+       * stage_gawk_install.com: New file.  Stages an install for the
+         pcsi kit building.
+
 2013-12-29         John E. Malmberg      <address@hidden>
 
        * gawk_plugin.opt: New file. Needed to build plugins on IA64
diff --git a/vms/backup_gawk_src.com b/vms/backup_gawk_src.com
new file mode 100644
index 0000000..d1e47fb
--- /dev/null
+++ b/vms/backup_gawk_src.com
@@ -0,0 +1,113 @@
+$! File: Backup_gawk_src.com
+$!
+$! Procedure to create backup save sets for installing in a PCSI kit.
+$!
+$! To comply with most Open Source licenses, the source used for building
+$! a kit will be packaged with the distribution kit for the binary.
+$!
+$! Backup save sets are the only storage format that I can expect a
+$! VMS system to be able to extract ODS-5 filenames and directories.
+$!
+$! The make_pcsi_kit_name.com needs to be run before this procedure to
+$! properly name the files that will be created.
+$!
+$! This file is created from a template file for the purpose of making it
+$! easier to port Unix code, particularly open source code to VMS.
+$! Therefore permission is freely granted for any use.
+$!
+$! 13-Jun-2009 J. Malmberg
+$!
+$!===========================================================================
+$!
+$! Save default
+$ default_dir = f$environment("DEFAULT")
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ if arch_code .nes. "V"
+$ then
+$   set proc/parse=extended
+$ endif
+$!
+$ ss_abort = 44
+$ status = ss_abort
+$!
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$   write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$   write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
+$ if filename_base .eqs. ""
+$ then
+$   write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$!
+$ node_swvers = f$getsyi("NODE_SWVERS")
+$ node_swvers_type = f$extract(0, 1, node_swvers)
+$ node_swvers_vers = f$extract(1, f$length(node_swvers), node_swvers)
+$ swvers_maj = f$element(0, ".", node_swvers_vers)
+$ node_swvers_min_update = f$element(1, ".", node_swvers_vers)
+$ swvers_min = f$element(0, "-", node_swvers_min_update)
+$ swvers_update = f$element(1, "-", node_swvers_min_update)
+$!
+$ if swvers_update .eqs. "-" then swvers_update = ""
+$!
+$ vms_vers = f$fao("!2ZB!2ZB!AS", 'swvers_maj', 'swvers_min', swvers_update)
+$!
+$!
+$!
+$! If available make an interchange save set
+$!-------------------------------------------
+$ interchange = ""
+$ if arch_code .eqs. "V"
+$ then
+$   interchange = "/interchange"
+$ endif
+$ if (swvers_maj .ges. "8") .and. (swvers_min .ges. 4)
+$ then
+$   interchange = "/interchange/noconvert"
+$ endif
+$!
+$!
+$! Put things back on error.
+$ on warning then goto all_exit
+$!
+$ current_default = f$environment("DEFAULT")
+$ my_dir = f$parse(current_default,,,"DIRECTORY") - "[" - "<" - ">" - "]"
+$!
+$ src_root = "src_root:"
+$ if f$trnlnm("src_root1") .nes. "" then src_root = "src_root1:"
+$ backup'interchange' 'src_root'[gawk...]*.*;0 -
+           'filename_base'_original_src.bck/sav
+$ status = $status
+$!
+$! There may be a VMS specific source kit
+$!-----------------------------------------
+$ vms_root = "vms_root:"
+$ if f$trnlnm("vms_root1") .nes. "" then vms_root = "vms_root1:"
+$ files_found = 0
+$ define/user sys$error nl:
+$ define/user sys$output nl:
+$ directory 'vms_root'[...]*.*;*/exc=*.dir
+$ if '$severity' .eq. 1 then files_found = 1
+$!
+$ if files_found .eq. 1
+$ then
+$   backup'interchange' 'vms_root'[gawk...]*.*;0 -
+            'filename_base'_vms_src.bck/sav
+$   status = $status
+$ endif
+$!
+$all_exit:
+$ set def 'default_dir'
+$ exit
diff --git a/vms/build_gawk_pcsi_desc.com b/vms/build_gawk_pcsi_desc.com
new file mode 100644
index 0000000..63d149e
--- /dev/null
+++ b/vms/build_gawk_pcsi_desc.com
@@ -0,0 +1,428 @@
+$! File: Build_GAWK_PCSI_DESC.COM
+$!
+$! Build the *.pcsi$text file in the following sections:
+$!   Required software dependencies.
+$!   install/upgrade/postinstall steps.
+$!      1. Duplicate filenames need an alias procedure.
+$!      2. ODS-5 filenames need an alias procedure.
+$!      3. Special alias links for executables (cp. -> gnv$cp.exe)
+$!         if a lot, then an alias procedure is needed.
+$!      4. Rename the files to lowercase.
+$!   Move Release Notes to destination
+$!   Source kit option
+$!   Create directory lines
+$!   Add file lines for gawk.
+$!   Add Link alias procedure file (used for gawk)
+$!   Add [.SYS$STARTUP]gawk_startup file
+$!   Add Release notes file.
+$!
+$! The file PCSI_GAWK_FILE_LIST.TXT is read in to get the files other
+$! than the release notes file and the source backup file.
+$!
+$! The PCSI system can really only handle ODS-2 format filenames and
+$! assumes that there is only one source directory.  It also assumes that
+$! all destination files with the same name come from the same source file.
+$! Fortunately GAWK does not trip most of these issues, so those steps
+$! above are marked N/A.
+$!
+$! A rename action section is needed to make sure that the files are
+$! created in the GNV$GNU: in the correct case, and to create the alias
+$! link [usr.bin]gawk. for [usr.bin]gawk.exe.
+$!
+$! 02-Jan-2014  J. Malmberg - Gawk version
+$!
+$!===========================================================================
+$!
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$   write sys$output "@[.vms]MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$   write sys$output "@[.vms]MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$ filename_base = f$trnlnm("GNV_PCSI_FILENAME_BASE")
+$ if filename_base .eqs. ""
+$ then
+$   write sys$output "@[.vms]MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$!
+$!
+$! Parse the kit name into components.
+$!---------------------------------------
+$ producer = f$element(0, "-", kit_name)
+$ base = f$element(1, "-", kit_name)
+$ product = f$element(2, "-", kit_name)
+$ mmversion = f$element(3, "-", kit_name)
+$ majorver = f$extract(0, 3, mmversion)
+$ minorver = f$extract(3, 2, mmversion)
+$ updatepatch = f$element(4, "-", kit_name)
+$ if updatepatch .eqs. "-" then updatepatch = ""
+$!
+$! kit type of "D" means a daily build
+$ kit_type = f$edit(f$extract(0, 1, majorver), "upcase")
+$!
+$!
+$ product_line = "product ''producer' ''base' ''product'"
+$ if updatepatch .eqs. ""
+$ then
+$     product_name = " ''majorver'.''minorver'"
+$ else
+$     product_name = " ''majorver'.''minorver'-''updatepatch'"
+$ endif
+$ product_line = product_line + " ''product_name' full;"
+$!write sys$output product_line
+$!
+$!
+$!
+$! Create the file as a VMS text file.
+$!----------------------------------------
+$ base_file = kit_name
+$ create 'base_file'.pcsi$desc
+$!
+$!
+$! Start building file.
+$!----------------------
+$ open/append pdsc 'base_file'.pcsi$desc
+$!
+$ write pdsc product_line
+$!
+$! Required product dependencies.
+$!----------------------------------
+$ vmsprd = "DEC"
+$ if base .eqs. "I64VMS" then vmsprd = "HP"
+$!
+$ write pdsc "   software ''vmsprd' ''base' VMS ;"
+$ arch_type = f$getsyi("ARCH_NAME")
+$ node_swvers = f$getsyi("node_swvers")
+$ vernum = f$extract(1, f$length(node_swvers), node_swvers)
+$ majver = f$element(0, ".", vernum)
+$ minverdash = f$element(1, ".", vernum)
+$ minver = f$element(0, "-", minverdash)
+$ dashver = f$element(1, "-", minverdash)
+$ if dashver .eqs. "-" then dashver = ""
+$ vmstag = majver + minver + dashver
+$ code = f$extract(0, 1, arch_type)
+$ arch_code = f$extract(0, 1, arch_type)
+$ write pdsc -
+ "   if (not <software ''vmsprd' ''base' VMS version minimum ''node_swvers'>) 
;"
+$ write pdsc "      error NEED_VMS''vmstag';"
+$ write pdsc "   end if;"
+$!
+$!
+$!
+$! install/upgrade/postinstall steps.
+$!-----------------------------------
+$!      1. Duplicate filenames need an alias procedure.
+$!      2. ODS-5 filenames need an alias procedure.
+$!      3. Special alias links for executables (gawk. -> gnv$gawk.exe)
+$!         if a lot, then an alias procedure is needed.
+$!      4. Rename the files to lowercase.
+$!
+$!
+$!   Alias links needed.
+$!-------------------------
+$ add_alias_lines = ""
+$ rem_alias_lines = ""
+$ line_out = ""
+$!
+$!   Read through the file list to set up aliases and rename commands.
+$!---------------------------------------------------------------------
+$ open/read flst [.vms]pcsi_gawk_file_list.txt
+$!
+$inst_alias_loop:
+$   read/end=inst_alias_loop_end flst line_in
+$   line_in = f$edit(line_in,"compress,trim,uncomment")
+$   if line_in .eqs. "" then goto inst_alias_loop
+$   pathname = f$element(0, " ", line_in)
+$   linkflag = f$element(1, " ", line_in)
+
+$   if linkflag .nes. "->" then goto inst_alias_write
+$!
+$   linktarget = f$element(2, " ", line_in)
+$   nlink = "pcsi$destination:" + pathname
+$   ntarg = "pcsi$destination:" + linktarget
+$   new_add_alias_line = -
+  """if f$search(""""''nlink'"""") .eqs. """""""" then" + -
+  " set file/enter=''nlink' ''ntarg'"""
+$   if add_alias_lines .nes. ""
+$   then
+$       add_alias_lines = add_alias_lines + "," + new_add_alias_line
+$   else
+$       add_alias_lines = new_add_alias_line
+$   endif
+$!
+$   new_rem_alias_line = -
+  """if f$search(""""''nlink'"""") .nes. """""""" then" + -
+  " set file/remove ''nlink';"""
+$   if rem_alias_lines .nes. ""
+$   then
+$      rem_alias_lines = rem_alias_lines + "," + new_rem_alias_line
+$   else
+$      rem_alias_lines = new_rem_alias_line
+$   endif
+$!
+$   goto inst_alias_loop
+$!
+$inst_alias_write:
+$!
+$!  execute install / remove
+$   write pdsc "   execute install ("
+$! add aliases
+$   i = 0
+$ex_ins_loop:
+$       line = f$element(i, ",", add_alias_lines)
+$       i = i + 1
+$       if line .eqs. "" then goto ex_ins_loop
+$       if line .eqs. "," then goto ex_ins_loop_end
+$       if line_out .nes. "" then write pdsc line_out,","
+$       line_out = line
+$       goto ex_ins_loop
+$ex_ins_loop_end:
+$   if line_out .eqs. "" then line_out = "   ""continue"""
+$   write pdsc line_out
+$   line_out = ""
+$   write pdsc "      )"
+$   write pdsc "   remove ("
+$! remove aliases
+$   line_out = -
+       "  ""@pcsi$destination:[gnv.vms_bin]gawk_alias_setup.com remove"""
+$   i = 0
+$ex_rem_loop:
+$       line = f$element(i, ",", rem_alias_lines)
+$       i = i + 1
+$       if line .eqs. "" then goto ex_rem_loop
+$       if line .eqs. "," then goto ex_rem_loop_end
+$       if line_out .nes. "" then write pdsc line_out,","
+$       line_out = line
+$       goto ex_rem_loop
+$ex_rem_loop_end:
+$   if line_out .eqs. "" then line_out = "   ""continue"""
+$   write pdsc line_out
+$   line_out = ""
+$   write pdsc "      ) ;"
+$!
+$!  execute upgrade
+$   write pdsc "   execute upgrade ("
+$   line_out = -
+       "  ""@pcsi$destination:[gnv.vms_bin]gawk_alias_setup.com remove"""
+$   i = 0
+$ex_upg_loop:
+$       line = f$element(i, ",", rem_alias_lines)
+$       i = i + 1
+$       if line .eqs. "" then goto ex_upg_loop
+$       if line .eqs. "," then goto ex_upg_loop_end
+$       if line_out .nes. "" then write pdsc line_out,","
+$       line_out = line
+$       goto ex_upg_loop
+$ex_upg_loop_end:
+$   if line_out .eqs. "" then line_out = "   ""continue"""
+$   write pdsc line_out
+$   line_out = ""
+$! remove aliases
+$   write pdsc "      ) ;"
+$!
+$!  execute postinstall
+$   write pdsc "   execute postinstall ("
+$   if arch_code .nes. "V"
+$   then
+$       line_out = "   ""set process/parse=extended"","
+$       write pdsc line_out
+$   endif
+$   line_out = "  ""@pcsi$destination:[gnv.vms_bin]remove_old_gawk.com"","
+$   write pdsc line_out
+$   line_out = "  ""@pcsi$destination:[gnv.vms_bin]gawk_alias_setup.com"""
+$   i = 0
+$ex_pins_loop:
+$       line = f$element(i, ",", add_alias_lines)
+$       i = i + 1
+$       if line .eqs. "" then goto ex_pins_loop
+$       if line .eqs. "," then goto ex_pins_loop_end
+$       if line_out .nes. "" then write pdsc line_out,","
+$       line_out = line
+$       goto ex_pins_loop
+$ex_pins_loop_end:
+$   if line_out .eqs. "" then line_out = "   ""continue"""
+$!   write pdsc line_out
+$!   line_out = ""
+$! add aliases and follow with renames.
+$!
+$goto inst_dir
+$!
+$inst_dir_loop:
+$   read/end=inst_alias_loop_end flst line_in
+$   line_in = f$edit(line_in,"compress,trim,uncomment")
+$   if line_in .eqs. "" then goto inst_dir_loop
+$inst_dir:
+$   pathname = f$element(0, " ", line_in)
+$!
+$!  Ignore the directory entries for now.
+$!-----------------------------------------
+$   filedir = f$parse(pathname,,,"DIRECTORY")
+$   if pathname .eqs. filedir then goto inst_dir_loop
+$!
+$!  process .dir extensions for rename
+$!  If this is not a directory then start processing files.
+$!-------------------------
+$   filetype = f$parse(pathname,,,"TYPE")
+$   filetype_u = f$edit(filetype, "upcase")
+$   filename = f$parse(pathname,,,"NAME")
+$   if filetype_u .nes. ".DIR" then goto inst_file
+$!
+$!  process directory lines for rename.
+$!--------------------------------------
+$   if line_out .nes. ""
+$   then
+$       write pdsc line_out,","
+$       line_out = ""
+$   endif
+$   if arch_code .nes. "V"
+$   then
+$       if line_out .nes. "" then write pdsc line_out,","
+$       line_out = "   ""rename pcsi$destination:''pathname' ''filename'.DIR"""
+$   else
+$       if line_out .nes. "" then write pdsc line_out
+$       line_out = ""
+$   endif
+$   goto inst_dir_loop
+$!
+$!
+$!   process file lines for rename
+$!---------------------------------
+$inst_file_loop:
+$   read/end=inst_alias_loop_end flst line_in
+$   line_in = f$edit(line_in,"compress,trim,uncomment")
+$   if line_in .eqs. "" then goto inst_dir_loop
+$   pathname = f$element(0, " ", line_in)
+$!
+$!  Filenames with $ in them are VMS special and do not need to be lowercased.
+$!  --------------------------------------------------------------------------
+$   if f$locate("$", pathname) .lt. f$length(pathname) then goto inst_file_loop
+$!
+$   filetype = f$parse(pathname,,,"TYPE")
+$   filename = f$parse(pathname,,,"NAME") + filetype
+$inst_file:
+$   if arch_code .nes. "V"
+$   then
+$       if line_out .nes. "" then write pdsc line_out,","
+$       filetype = f$parse(pathname,,,"TYPE")
+$       filename = f$parse(pathname,,,"NAME") + filetype
+$       line_out = "   ""rename pcsi$destination:''pathname' ''filename'"""
+$   else
+$       if line_out .nes. "" then write pdsc line_out
+$       line_out = ""
+$   endif
+$   goto inst_file_loop
+$!
+$inst_alias_loop_end:
+$!
+$write pdsc line_out
+$write pdsc "        ) ;"
+$close flst
+$!
+$!   Move Release Notes to destination
+$!-------------------------------------
+$write pdsc "   information RELEASE_NOTES phase after ;"
+$!
+$!   Source kit option
+$!---------------------
+$write pdsc "   option SOURCE default 0;"
+$write pdsc "   directory ""[gnv.common_src]"" PROTECTION PUBLIC ;"
+$write pdsc -
+    "        file ""[gnv.common_src]''filename_base'_original_src.bck"""
+$write pdsc -
+    "          source [common_src]''filename_base'_original_src.bck ;"
+$if f$search("sys$disk:''filename_base'_vms_src.bck") .nes. ""
+$then
+$    write pdsc "   directory ""[gnv.vms_src]"" PROTECTION PUBLIC ;"
+$    write pdsc "        file ""[gnv.vms_src]''filename_base'_vms_src.bck"""
+$    write pdsc "          source [vms_src]''filename_base'_vms_src.bck ;"
+$endif
+$write pdsc "   end option;"
+$!
+$!
+$! Read through the file list again.
+$!----------------------------------
+$open/read flst [.vms]pcsi_gawk_file_list.txt
+$!
+$!
+$!   Create directory lines
+$!-------------------------
+$flst_dir_loop:
+$   read/end=flst_loop_end flst line_in
+$   line_in = f$edit(line_in,"compress,trim,uncomment")
+$   if line_in .eqs. "" then goto flst_dir_loop
+$!
+$   filename = f$element(0, " ", line_in)
+$   linkflag = f$element(1, " ", line_in)
+$   if linkflag .eqs. "->" then goto flst_dir_loop
+$!
+$!  Ignore .dir extensions
+$!-------------------------
+$   filetype = f$edit(f$parse(filename,,,"TYPE"), "upcase")
+$   if filetype .eqs. ".DIR" then goto flst_dir_loop
+$!
+$   destname = filename
+$!
+$!  It should be just a directory then.
+$!-------------------------------------
+$   filedir = f$edit(f$parse(filename,,,"DIRECTORY"), "lowercase")
+$!  If this is not a directory then start processing files.
+$!---------------------------------------------------------
+$   if filename .nes. filedir then goto flst_file
+$!
+$   write pdsc "   directory ""''destname'"" PROTECTION PUBLIC ;"
+$   goto flst_dir_loop
+$!
+$!
+$!   Add file lines for gawk.
+$!---------------------------
+$flst_file_loop:
+$   read/end=flst_loop_end flst line_in
+$   line_in = f$edit(line_in,"compress,trim,uncomment")
+$   if line_in .eqs. "" then goto flst_file_loop
+$   filename = f$element(0, " ", line_in)
+$   destname = filename
+$flst_file:
+$   if arch_code .eqs. "V"
+$   then
+$!      ! These files not available on VAX.
+$       src_dir = f$parse(destname,,,"DIRECTORY")
+$       if src_dir .eqs. "[GNV.USR.LIB.GAWK]" then goto flst_file_loop
+$   endif
+$   srcfile = filename - "gnv."
+$   write pdsc "   file ""''destname'"" "
+$   write pdsc "     source ""''srcfile'"" ;"
+$   goto flst_file_loop
+$!
+$flst_loop_end:
+$ close flst
+$!
+$!   Add Link alias procedure file (N/A for gawk)
+$!-----------------------------------------------------
+$ write pdsc "   file ""[vms_bin]gawk_alias_setup.com"""
+$ write pdsc "     source [vms_bin]gawk_alias_setup.com ;"
+$!
+$!   Add [.SYS$STARTUP]gawk_startup file
+$!---------------------------------------
+$ write pdsc "   file ""[sys$startup]gnv$gawk_startup.com"""
+$ write pdsc "     source [vms_bin]gnv$gawk_startup.com ;"
+$!
+$!   Add Release notes file.
+$!------------------------------
+$ write pdsc -
+    "   file ""[SYSHLP]''filename_base'.release_notes"" release notes ;"
+$!
+$! Close the product file
+$!------------------------
+$ write pdsc "end product;"
+$!
+$close pdsc
+$!
+$all_exit:
+$ exit
diff --git a/vms/build_gawk_pcsi_text.com b/vms/build_gawk_pcsi_text.com
new file mode 100644
index 0000000..a1053cf
--- /dev/null
+++ b/vms/build_gawk_pcsi_text.com
@@ -0,0 +1,179 @@
+$! File: build_gawk_pcsi_text.com
+$!
+$! Build the *.pcsi$text file from the four components:
+$!    1. Generated =product header section
+$!    2. readme. file from the Gawk distribution, modified to fit
+$!       a pcsi$text file format.
+$!    3. copying file from the Gawk distribution, modified to fit
+$!       a pcsi$text file format.
+$!    4. Generated Producer section.
+$!
+$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
+$!
+$!
+$! 02-Jan-2014  J. Malmberg - Gawk version
+$!
+$!===========================================================================
+$!
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$   write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$   write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$ producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
+$ if producer_full_name .eqs. ""
+$ then
+$   write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$!
+$!
+$! Parse the kit name into components.
+$!---------------------------------------
+$ producer = f$element(0, "-", kit_name)
+$ base = f$element(1, "-", kit_name)
+$ product = f$element(2, "-", kit_name)
+$ mmversion = f$element(3, "-", kit_name)
+$ majorver = f$extract(0, 3, mmversion)
+$ minorver = f$extract(3, 2, mmversion)
+$ updatepatch = f$element(4, "-", kit_name)
+$ if updatepatch .eqs. "-" then updatepatch = ""
+$!
+$!
+$ product_line = "=product ''producer' ''base' ''product'"
+$ if updatepatch .eqs. ""
+$ then
+$     product_name = " ''majorver'.''minorver'"
+$ else
+$     product_name = " ''majorver'.''minorver'-''updatepatch'"
+$ endif
+$ product_line = product_line + " ''product_name' full"
+$!
+$!
+$! If this is VAX and the file is on NFS, the names may be mangled.
+$!-----------------------------------------------------------------
+$ readme_file = ""
+$ if f$search("readme.") .nes. ""
+$ then
+$   readme_file = "readme."
+$ else
+$   if f$search("$README.") .nes. ""
+$   then
+$       readme_file = "$README."
+$   else
+$       write sys$output "Can not find readme file."
+$       goto all_exit
+$   endif
+$ endif
+$ copying_file = ""
+$ if f$search("copying.") .nes. ""
+$ then
+$   copying_file = "copying."
+$ else
+$   if f$search("$COPYING.") .nes. ""
+$   then
+$       copying_file = "$COPYING."
+$   else
+$       write sys$output "Can not find copying file."
+$       goto all_exit
+$   endif
+$ endif
+$!
+$! Create the file as a VMS text file.
+$!----------------------------------------
+$ base_file = kit_name
+$ create 'base_file'.pcsi$text
+$!
+$!
+$! Start building file.
+$!----------------------
+$ open/append ptxt 'base_file'.pcsi$text
+$ write ptxt product_line
+$!
+$!
+$! First insert the Readme file.
+$!
+$ open/read rf 'readme_file'
+$!
+$ write ptxt "1 'PRODUCT"
+$ write ptxt "=prompt ''producter' ''product' for OpenVMS"
+$!
+$rf_loop:
+$   read/end=rf_loop_end rf line_in
+$   if line_in .nes. ""
+$   then
+$!    PCSI files use the first character in for their purposes.
+$!--------------------------------------------------------------
+$     first_char = f$extract(0, 1, line_in)
+$     if first_char .nes. " " then line_in = " " + line_in
+$   endif
+$   write ptxt line_in
+$   goto rf_loop
+$rf_loop_end:
+$ close rf
+$!
+$!
+$! Now add in the copying file
+$!--------------------------------
+$ write ptxt ""
+$ write ptxt "1 'NOTICE"
+$ write ptxt ""
+$!
+$ open/read cf 'copying_file'
+$!
+$cf_loop:
+$   read/end=cf_loop_end cf line_in
+$   if line_in .nes. ""
+$   then
+$!    PCSI files use the first character in for their purposes.
+$!--------------------------------------------------------------
+$     first_char = f$extract(0, 1, line_in)
+$     if first_char .nes. " " then line_in = " " + line_in
+$   endif
+$   write ptxt line_in
+$   goto cf_loop
+$cf_loop_end:
+$ close cf
+$!
+$! Now we need the rest of the boiler plate.
+$!--------------------------------------------
+$ write ptxt ""
+$ write ptxt "1 'PRODUCER"
+$ write ptxt "=prompt ''producer_full_name'"
+$ write ptxt -
+ "This software product is provided by ''producer_full_name' with no warranty."
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ node_swvers = f$getsyi("node_swvers")
+$ vernum = f$extract(1, f$length(node_swvers), node_swvers)
+$ majver = f$element(0, ".", vernum)
+$ minverdash = f$element(1, ".", vernum)
+$ minver = f$element(0, "-", minverdash)
+$ dashver = f$element(1, "-", minverdash)
+$ if dashver .eqs. "-" then dashver = ""
+$ vmstag = majver + minver + dashver
+$ code = f$extract(0, 1, arch_type)
+$!
+$ write ptxt "1 NEED_VMS''vmstag'"
+$ write ptxt -
+   "=prompt OpenVMS ''vernum' or later is not installed on your system."
+$ write ptxt "This product requires OpenVMS ''vernum' or later to function."
+$ write ptxt "1 SOURCE"
+$ write ptxt "=prompt Source modules for ''product'"
+$ write ptxt "The Source modules for ''product' will be installed."
+$ write ptxt "1 RELEASE_NOTES"
+$ write ptxt "=prompt Release notes are available in the [SYSHLP] directory."
+$!
+$ close ptxt
+$!
+$!
+$!
+$all_exit:
+$ exit
diff --git a/vms/build_gawk_release_notes.com b/vms/build_gawk_release_notes.com
new file mode 100644
index 0000000..c088ff8
--- /dev/null
+++ b/vms/build_gawk_release_notes.com
@@ -0,0 +1,67 @@
+$! File: Build_gawk_release_notes.com
+$!
+$! Build the release note file from the three components:
+$!    1. The gawk_release_note_start.txt
+$!    2. readme. file from the Gawk distribution.
+$!    3. The gawk_build_steps.txt.
+$!
+$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
+$! logical name.
+$!
+$!
+$! 31-Dec-2013  J. Malmberg
+$!
+$!===========================================================================
+$!
+$ base_file = f$trnlnm("GNV_PCSI_FILENAME_BASE")
+$ if base_file .eqs. ""
+$ then
+$   write sys$output "@MAKE_PCSI_GAWK_KIT_NAME.COM has not been run."
+$   goto all_exit
+$ endif
+$!
+$ gawk_vms_readme = f$search("sys$disk:[.readme_d]readme.vms")
+$ if gawk_vms_readme .eqs. ""
+$ then
+$   gawk_vms_readme = f$search("sys$disk:[.$README_$D]$README.VMS")
+$ endif
+$ if gawk_vms_readme .eqs. ""
+$ then
+$   write sys$output "Can not find gawk README.VMS file."
+$   goto all_exit
+$ endif
+$!
+$ gawk_readme = f$search("sys$disk:[]readme.")
+$ if gawk_readme .eqs. ""
+$ then
+$   gawk_readme = f$search("sys$disk:[]$README.")
+$ endif
+$ if gawk_readme .eqs. ""
+$ then
+$   write sys$output "Can not find gawk readme file."
+$   goto all_exit
+$ endif
+$!
+$ gawk_copying = f$search("sys$disk:[]copying.")
+$ if gawk_copying .eqs. ""
+$ then
+$   gawk_copying = f$search("sys$disk:[]$COPYING.")
+$ endif
+$ if gawk_copying .eqs. ""
+$ then
+$   write sys$output "Can not find gawk copying file."
+$   goto all_exit
+$ endif
+$!
+$ type/noheader sys$disk:[.vms]gawk_release_note_start.txt,-
+        'gawk_readme',-
+        'gawk_vms_readme',-
+        'gawk_copying', -
+        sys$disk:[.vms]gawk_build_steps.txt -
+        /out='base_file'.release_notes
+$!
+$ purge 'base_file'.release_notes
+$ rename 'base_file.release_notes ;1
+$!
+$all_exit:
+$   exit
diff --git a/vms/compare_gawk_source.com b/vms/compare_gawk_source.com
new file mode 100644
index 0000000..260ec4e
--- /dev/null
+++ b/vms/compare_gawk_source.com
@@ -0,0 +1,367 @@
+$! Compare_gawk_source.com
+$!
+$! This procedure compares the files in two directories and reports the
+$! differences.
+$!
+$! It needs to be customized to the local site directories.
+$!
+$! This is used by me for these purposes:
+$!     1. Compare the original source of a project with an existing
+$!        VMS port.
+$!     2. Compare the checked out repository of a project with the
+$!        the local working copy to make sure they are in sync.
+$!     3. Keep a copy directory up to date.  The third is needed by
+$!        me because VMS Backup can create a saveset of files from a
+$!        NFS mounted volume.
+$!
+$! First the files in the original source directory which is assumed to be
+$! under source codde control are compared with the copy directory.
+$!
+$! Then the files are are only in the copy directory are listed.
+$!
+$! The result will five diagnostics about of files:
+$!    1. Files that are not generation 1.
+$!    2. Files missing in the copy directory.
+$!    3. Files in the copy directory not in the source directory.
+$!    4. Files different from the source directory.
+$!    5. Files that VMS DIFF can not process.
+$!
+$! This needs to be run on an ODS-5 volume.
+$!
+$! If UPDATE is given as a second parameter, files missing or different in the
+$! copy directory will be updated.
+$!
+$! By default:
+$!    The source directory is source_root:[gawk.reference.gawk],
+$!    the logical used on my system for the GNV Mecurial repository checkout.
+$!    If source_root: is not defined, then src_root:[gawk] will be
+$!    translated to something like DISK:[dir.gawk.reference.gawk]
+$!    and then DISK:[dir.gawk.vms_source.gawk] will be used.
+$!
+$!    The copy directory is vms_root:[gawk]
+$!    The UPDATE parameter is ignored.
+$!
+$!    This setting is used to make sure that the working vms directory
+$!    and the VMS specific repository checkout directory have the same
+$!    contents if they are different.
+$!
+$! If P1 is "SRCBCK" then this
+$!     The source directory tree is: src_root:[gawk]
+$!     The copy directory is src_root1:[gawk]
+$!
+$!   src_root1:[gawk] is used by me to work around that VMS backup will
+$!   not use NFS as a source directory so I need to make a copy.
+$!
+$!   This is to make sure that the backup save set for the unmodified
+$!   source is up to date.
+$!
+$!   If your repository checkout is not on an NFS mounted volume, you do not
+$!   need to use this option or have the logical name src_root1 defined.
+$!
+$! If P1 is "VMSBCK" then this changes the two directories:
+$!    The source directory is vms_root:[gawk]
+$!    The copy directory is vms_root1:[gawk]
+$!
+$!   vms_root:
+$!   src_root1:[gawk] is used by me to work around that VMS backup will
+$!   not use NFS as a source directory so I need to make a copy.
+$!
+$!   This is to make sure that the backup save set for the unmodified
+$!   source is up to date.
+$!
+$!   If your repository checkout is not on an NFS mounted volume, you do not
+$!   need to use this option or have the logical name src_root1 defined.
+$!
+$! 02-Jan-2014   J. Malmberg
+$!==========================================================================
+$!
+$! Update missing/changed files.
+$update_file = 0
+$if (p2 .eqs. "UPDATE")
+$then
+$   update_file = 1
+$endif
+$!
+$myproc = f$environment("PROCEDURE")
+$myprocdir = f$parse(myproc,,,"DIRECTORY") - "[" - "]" - "<" - ">"
+$myprocdir = f$edit(myprocdir, "LOWERCASE")
+$mydefault = f$environment("DEFAULT")
+$mydir = f$parse(mydefault,,,"DIRECTORY")
+$mydir = f$edit(mydir, "LOWERCASE")
+$odelim = f$extract(0, 1, mydir)
+$mydir = mydir - "[" - "]" - "<" - ">"
+$mydev = f$parse(mydefault,,,"DEVICE")
+$!
+$ref = ""
+$if P1 .eqs. ""
+$then
+$   ref_base_dir = myprocdir - ".vms"
+$   wrk_base_dir = mydir
+$   update_file = 0
+$   resultd = f$parse("src_root:",,,,"NO_CONCEAL")
+$   resultd = f$edit(resultd, "LOWERCASE")
+$   resultd = resultd - "][" - "><" - ".;" - ".."
+$   resultd_len = f$length(resultd) - 1
+$   delim = f$extract(resultd_len, 1, resultd)
+$   ref_root_base = mydir + delim
+$   if f$locate(".reference.", resultd) .lt. resultd_len
+$   then
+$      resultd = resultd - ref_root_base - "reference." + "vms_source."
+$   else
+$      resultd = resultd - ref_root_base - "gnu." + "gnu_vms."
+$   endif
+$   ref = resultd + ref_base_dir
+$   wrk = "VMS_ROOT:" + odelim + wrk_base_dir
+$   resultd_len = f$length(resultd) - 1
+$   resultd = f$extract(0, resultd_len, resultd) + delim
+$   ref_root_dir = f$parse(resultd,,,"DIRECTORY")
+$   ref_root_dir = f$edit(ref_root_dir, "LOWERCASE")
+$   ref_root_dir = ref_root_dir - "[" - "]"
+$   ref_base_dir = ref_root_dir + "." + ref_base_dir
+$endif
+$!
+$if p1 .eqs. "SRCBCK"
+$then
+$   ref_base_dir = "gawk"
+$   wrk_base_dir = "gawk"
+$   ref = "src_root:[" + ref_base_dir
+$   wrk = "src_root1:[" + wrk_base_dir
+$   if update_file
+$   then
+$       if f$search("src_root1:[000000]gawk.dir") .eqs. ""
+$       then
+$           create/dir/prot=o:rwed src_root1:[gawk]
+$       endif
+$   endif
+$endif
+$!
+$!
+$if p1 .eqs. "VMSBCK"
+$then
+$   ref_base_dir = "gawk"
+$   wrk_base_dir = "gawk"
+$   ref = "vms_root:[" + ref_base_dir
+$   wrk = "vms_root1:[" + wrk_base_dir
+$   if update_file
+$   then
+$       if f$search("vms_root1:[000000]gawk.dir") .eqs. ""
+$       then
+$           create/dir/prot=o:rwed vms_root1:[gawk]
+$       endif
+$   endif
+$endif
+$!
+$!
+$if ref .eqs. ""
+$then
+$   write sys$output "Unknown compare type specified!"
+$   exit 44
+$endif
+$!
+$!
+$!
+$! Future - check the device types involved for the
+$! the syntax to check.
+$ODS2_SYNTAX = 0
+$NFS_MANGLE = 0
+$PWRK_MANGLE = 0
+$!
+$vax = f$getsyi("HW_MODEL") .lt. 1024
+$if vax
+$then
+$   ODS2_SYNTAX = 1
+$endif
+$!
+$report_missing = 1
+$!
+$if .not. ODS2_SYNTAX
+$then
+$   set proc/parse=extended
+$endif
+$!
+$loop:
+$  ref_spec = f$search("''ref'...]*.*;",1)
+$  if ref_spec .eqs. "" then goto loop_end
+$!
+$  ref_dev = f$parse(ref_spec,,,"DEVICE")
+$  ref_dir = f$parse(ref_spec,,,"DIRECTORY")
+$  ref_dir = f$edit(ref_dir, "LOWERCASE")
+$  ref_name = f$parse(ref_spec,,,"NAME")
+$  ref_type = f$parse(ref_spec,,,"TYPE")
+$!
+$!
+$  if f$locate(".CVS]", ref_dir) .lt. f$length(ref_dir) then goto loop
+$  if f$locate(".cvs]", ref_dir) .lt. f$length(ref_dir) then goto loop
+$  if f$locate(".$cvs]", ref_dir) .lt. f$length(ref_dir) then goto loop
+$  if f$locate(".^.git", ref_dir) .lt. f$length(ref_dir) then goto loop
+$  if f$locate(".$5ngit", ref_dir) .lt. f$length(ref_dir) then goto loop
+$!
+$  rel_path = ref_dir - "[" - ref_base_dir
+$!  rel_path_len = f$length(rel_path) - 1
+$!  delim = f$extract(rel_path_len, 1, rel_path)
+$!  rel_path = rel_path - ".]" - ".>" - "]" - ">"
+$!  rel_path = rel_path + delim
+$!
+$  if ODS2_SYNTAX
+$  then
+$  endif
+$!
+$  wrk_path = wrk + rel_path
+$!
+$  ref_name_type = ref_name + ref_type
+$!
+$  if ref_name_type .eqs. "CVS.DIR" then goto loop
+$  if ref_name_type .eqs. "cvs.dir" then goto loop
+$  if ref_name_type .eqs. "$CVS.DIR" then goto loop
+$  if ref_name_type .eqs. "^.git.DIR" then goto loop
+$  if ref_name_type .eqs. "$5ngit.DIR" then goto loop
+$  if ref_name_type .eqs. "$5NGIT.DIR" then goto loop
+$  if ODS2_SYNTAX
+$  then
+$!
+$  endif
+$!
+$  wrk_spec = wrk_path + ref_name_type
+$!
+$!
+$  wrk_chk = f$search(wrk_spec, 0)
+$  if wrk_chk .eqs. ""
+$  then
+$    if report_missing
+$    then
+$      write sys$output "''wrk_spec' is missing"
+$    endif
+$    if update_file
+$    then
+$      copy/log 'ref_spec' 'wrk_spec'
+$    endif
+$    goto loop
+$  endif
+$!
+$  wrk_name = f$parse(wrk_spec,,,"NAME")
+$  wrk_type = f$parse(wrk_spec,,,"TYPE")
+$  wrk_fname = wrk_name + wrk_type"
+$  ref_fname = ref_name + ref_type
+$!
+$  if ref_fname .nes. wrk_fname
+$  then
+$    write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'"""
+$  endif
+$!
+$  ref_type = f$edit(ref_type, "UPCASE")
+$  if ref_type .eqs. ".DIR" then goto loop
+$!
+$  if ODS2_SYNTAX
+$  then
+$       ref_fname = f$edit(ref_fname, "LOWERCASE")
+$  endif
+$!
+$! These files have records to long to diff, and we don't change them anyway.
+$  ref_skip = 0
+$  if ref_type .eqs. ".GMO" then ref_skip = 1
+$  if ref_type .eqs. ".PDF" then ref_skip = 1
+$  if ref_type .eqs. ".PNG" then ref_skip = 1
+$  if ref_type .eqs. ".JPG" then ref_skip = 1
+$  if ref_fname .eqs. "inftest.ok" then ref_skip = 1
+$  if ref_fname .eqs. "longsub.in" then ref_skip = 1
+$  if ref_fname .eqs. "longsub.ok" then ref_skip = 1
+$  if ref_fname .eqs. "nasty2.ok" then ref_skip = 1
+$  if ref_fname .eqs. "profile5.awk" then ref_skip = 1
+$  if ref_fname .eqs. "profile5.ok" then ref_skip = 1
+$  if ref_fname .eqs. "po.m4" then ref_skip = 1
+$!
+$!
+$  if ref_skip .ne. 0
+$  then
+$    if report_missing
+$    then
+$        write sys$output "Skipping diff of ''ref_fname'"
+$    endif
+$    goto loop
+$  endif
+$!
+$!
+$  wrk_ver = f$parse(wrk_chk,,,"VERSION")
+$  if wrk_ver .nes. ";1"
+$  then
+$    write sys$output "Version for ''wrk_spec' is not 1"
+$  endif
+$  set noon
+$  diff/out=nl: 'wrk_spec' 'ref_spec'
+$  if $severity .nes. "1"
+$  then
+$    write sys$output "''wrk_spec' is different from ''ref_spec'"
+$    if update_file
+$    then
+$       delete 'wrk_spec';*
+$       copy/log 'ref_spec' 'wrk_spec'
+$    endif
+$  endif
+$  set on
+$
+$!
+$  goto loop
+$loop_end:
+$!
+$!
+$missing_loop:
+$! For missing loop, check the latest generation.
+$  ref_spec = f$search("''wrk'...]*.*;")
+$  if ref_spec .eqs. "" then goto missing_loop_end
+$!
+$  ref_dev = f$parse(ref_spec,,,"DEVICE")
+$  ref_dir = f$parse(ref_spec,,,"DIRECTORY")
+$  ref_dir = f$edit(ref_dir, "LOWERCASE")
+$  ref_name = f$parse(ref_spec,,,"NAME")
+$  ref_type = f$parse(ref_spec,,,"TYPE")
+$!
+$  rel_path = ref_dir - "[" - wrk_base_dir
+$!
+$!
+$  wrk_path = ref + rel_path
+$  wrk_spec = wrk_path + ref_name + ref_type
+$  wrk_name = f$parse(wrk_spec,,,"NAME")
+$  wrk_type = f$parse(wrk_spec,,,"TYPE")
+$!
+$  wrk_fname = wrk_name + wrk_type"
+$  ref_fname = ref_name + ref_type
+$!
+$  wrk_skip = 0
+$  ref_utype = f$edit(ref_type,"UPCASE")
+$  ref_ufname = f$edit(ref_fname,"UPCASE")
+$!
+$!
+$  if wrk_skip .eq. 0
+$  then
+$     wrk_chk = f$search(wrk_spec, 0)
+$     if wrk_chk .eqs. ""
+$     then
+$         if report_missing
+$         then
+$             write sys$output "''wrk_spec' is missing"
+$         endif
+$         goto missing_loop
+$     endif
+$  else
+$     goto missing_loop
+$  endif
+$!
+$  if ref_fname .nes. wrk_fname
+$  then
+$    write sys$output "''wrk_spc' wrong name, should be ""''ref_fname'"""
+$  endif
+$!
+$  if ref_utype .eqs. ".DIR" then goto missing_loop
+$!
+$  wrk_ver = f$parse(wrk_chk,,,"VERSION")
+$  if wrk_ver .nes. ";1"
+$  then
+$    write sys$output "Version for ''wrk_spec' is not 1"
+$  endif
+$!
+$  goto missing_loop
+$!
+$!
+$missing_loop_end:
+$!
+$exit
diff --git a/vms/config_h.com b/vms/config_h.com
index 406e126..c1d3bec 100644
--- a/vms/config_h.com
+++ b/vms/config_h.com
@@ -29,19 +29,28 @@ $!
 $! This procedure may not guess the options correctly for all architectures,
 $! and is a work in progress.
 $!
-$! Copyright 2011, John Malmberg
-$!
-$! Permission to use, copy, modify, and/or distribute this software for any
-$! purpose with or without fee is hereby granted, provided that the above
-$! copyright notice and this permission notice appear in all copies.
-$!
-$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+$! Copyright (C) 2014 the Free Software Foundation, Inc.
+$!
+$! This file is part of GAWK, the GNU implementation of the
+$! AWK Progamming Language.
+$!
+$! GAWK is free software; you can redistribute it and/or modify
+$! it under the terms of the GNU General Public License as published by
+$! the Free Software Foundation; either version 3 of the License, or
+$! (at your option) any later version.
+$!
+$! GAWK is distributed in the hope that it will be useful,
+$! but WITHOUT ANY WARRANTY; without even the implied warranty of
+$! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+$! GNU General Public License for more details.
+$!
+$! You should have received a copy of the GNU General Public License
+$! along with this program; if not, write to the Free Software
+$! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
+$! USA
+$!
+$! Per assignment agreement with FSF, similar procedures may be present
+$! in other packages under other licensing agreements and copyrights
 $!
 $! 15-Jan-2001 J. Malmberg     Original
 $! 29-Apr-2001 J. Malmberg     Also look for config.*in* in a [.include]
diff --git a/vms/descrip.mms b/vms/descrip.mms
index f53db27..1f24f8f 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -345,6 +345,23 @@ spotless : clean tidy
       - if f$search("config.h").nes."" then delete config.h;*
       - if f$search("config_vms.h").nes."" then delete config_vms.h;*
       - if f$search("gawk.exe").nes."" then  delete gawk.exe;*
+      - if f$search("*.dsf").nes."" then  delete *.dsf;*
+      - if f$search("*.map").nes."" then  delete *.map;*
+      - if f$search("*.pcsi$desc").nes."" then  delete *.pcsi$desc;*
+      - if f$search("*.pcsi$text").nes."" then  delete *.pcsi$text;*
+      - if f$search("gawk*_src.bck").nes."" then  delete gawk*_src.bck;*
+      - if f$search("*.release_notes").nes."" then  delete *.release_notes;*
+      - if f$search("filefuncs.exe").nes."" then  delete filefuncs.exe;*
+      - if f$search("fnmatch.exe").nes."" then  delete fnmatch.exe;*
+      - if f$search("inplace.exe").nes."" then  delete inplace.exe;*
+      - if f$search("ordchr.exe").nes."" then  delete ordchr.exe;*
+      - if f$search("readdir.exe").nes."" then  delete readdir.exe;*
+      - if f$search("revoutput.exe").nes."" then  delete revoutput.exe;*
+      - if f$search("revtwoway.exe").nes."" then  delete revtwoway.exe;*
+      - if f$search("rwarray.exe").nes."" then  delete rwarray.exe;*
+      - if f$search("testext.exe").nes."" then  delete testext.exe;*
+      - if f$search("time.exe").nes."" then  delete time.exe;*
+      - if f$search("gawk_verb.cld").nes."" then  delete gawk_verb.cld;*
       - if f$search("gawk.dvi").nes."" then  delete gawk.dvi;*
       - if f$search("[.doc]texindex.exe").nes."" then \
             delete [.doc]texindex.exe;*
diff --git a/vms/gawk_alias_setup.com b/vms/gawk_alias_setup.com
new file mode 100644
index 0000000..73f70d1
--- /dev/null
+++ b/vms/gawk_alias_setup.com
@@ -0,0 +1,110 @@
+$! File: gawk_alias_setup.com
+$!
+$! The PCSI procedure needs a helper script to set up and remove aliases.
+$!
+$! If p1 starts with "R" then remove instead of install.
+$!
+$!
+$! 02-Jan-2014  J. Malmberg - Gawk Version
+$!
+$!===========================================================================
+$!
+$ mode = "install"
+$ code = f$extract(0, 1, p1)
+$ if code .eqs. "R" .or. code .eqs. "r" then mode = "remove"
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ if arch_code .nes. "V"
+$ then
+$   set proc/parse=extended
+$ endif
+$!
+$!
+$ call do_alias "gawk" "[bin]"
+$ call do_alias "gawk" "[bin]" "awk"
+$ call do_alias "gawk" "[bin]" "gawk" "[usr.bin]"
+$ call do_alias "gawk" "[bin]" "awk" "[usr.bin]"
+$ call do_alias "gawk.1" "[usr.share.man.man1]" "awk.1"
+$!
+$ exit
+$!!
+$!
+$do_alias: subroutine
+$ if mode .eqs. "install"
+$ then
+$   call add_alias "''p1'" "''p2'" "''p3'" "''p4'"
+$ else
+$   call remove_alias "''p1'" "''p2'" "''p3'" "''p4'"
+$ endif
+$ exit
+$ENDSUBROUTINE ! do_alias
+$!
+$!
+$! P1 is the filename, p2 is the directory prefix,
+$! p3 is the alias name if different than p1
+$! p4 is the alias directory if different than p2
+$add_alias: subroutine
+$ if p3 .eqs. "" then p3 = p1
+$ if p4 .eqs. "" then p4 = p2
+$ ftype = f$element(1, ".", p1)
+$ if ftype .eqs. "."
+$ then
+$    file = "gnv$gnu:''p2'gnv$''p1'.EXE"
+$    alias = "gnv$gnu:''p4'''p3'."
+$ else
+$    file = "gnv$gnu:''p2'''p1'"
+$    alias = "gnv$gnu:''p4'''p3'"
+$ endif
+$ if f$search(file) .nes. ""
+$ then
+$   if f$search(alias) .eqs. ""
+$   then
+$       set file/enter='alias' 'file'
+$   endif
+$   alias1 = alias + "exe"
+$   if (ftype .eqs. ".") .and. (f$search(alias1) .eqs. "")
+$   then
+$       set file/enter='alias1' 'file'
+$   endif
+$ endif
+$ exit
+$ENDSUBROUTINE ! add_alias
+$!
+$remove_alias: subroutine
+$ if p3 .eqs. "" then p3 = p1
+$ if p4 .eqs. "" then p4 = p2
+$ ftype = f$element(1, ".", p1)
+$ if ftype .eqs. "."
+$ then
+$   file = "gnv$gnu:''p2'''p1'.EXE"
+$   alias = "gnv$gnu:''p4'''p3'."
+$ else
+$   file = "gnv$gnu:''p2'''p1'"
+$   alias = "gnv$gnu:''p4'''p3'"
+$ endif
+$ file_fid = "No_file_fid"
+$ if f$search(file) .nes. ""
+$ then
+$   fid = f$file_attributes(file, "FID")
+$   if f$search(alias) .nes. ""
+$   then
+$       afid = f$file_attributes(alias, "FID")
+$       if (afid .eqs. fid)
+$       then
+$           set file/remove 'alias';
+$       endif
+$   endif
+$   alias1 = alias + "exe"
+$   if (ftype .eqs. ".") .and. (f$search(alias1) .nes. "")
+$   then
+$       afid = f$file_attributes(alias1, "FID")
+$       if (afid .eqs. fid)
+$       then
+$           set file/remove 'alias1';
+$       endif
+$   endif
+$ endif
+$ exit
+$ENDSUBROUTINE ! remove_alias
diff --git a/vms/gawk_build_steps.txt b/vms/gawk_build_steps.txt
new file mode 100644
index 0000000..b3bb281
--- /dev/null
+++ b/vms/gawk_build_steps.txt
@@ -0,0 +1,220 @@
+From File: gawk_build_steps.txt
+
+Building GAWK on OpenVMS for use with GNV requires a current HP C compiler
+and MMK.
+
+The HP C 7.x compilers were used for building on Alpha and Itanium.
+The Compaq C 6.4 compiler is being used on VAX.
+
+MMK was obtained from https://github.com/endlesssoftware/mmk
+
+Several special things were done in this port of Gawk to VMS to make it
+easier to keep it up to date with the Unix version.
+
+Note the GNV$ prefix is registered for the GNV project to prevent name
+collisions with other products and packages.  This is a VMS convention.
+
+The files are stored with GNV_ instead of GNV$ most open source source
+code maintainers do not want to files with $ in their source repositories.
+
+The build procedure will copy the files to have the GNV$ names as needed.
+
+1. The original GNU Gawk source files are in their own directory tree which
+is never written to by the build process.  This directory is kept up to date
+with the current official patches.  See below about the how this is done
+with logical names.
+
+2. A file vms_eco_level.h is used to set the ECO of the package.  The
+vms_eco_level.h needs to be set back to zero if the version or patch level
+of the GNU Unix source is changed.  This file is currently only used
+by the kit building procedure.
+
+The source kits are provided in backup savesets inside of the PCSI install kit.
+
+Backup save sets are currently the only distribution medium that I can be
+sure is installed on a target VMS system that will correctly unpack files
+with extended character sets in them.  You may need to adjust the ownership
+of the restored files for kits on Alpha/Itanium VMS versions 8.1 and earlier.
+
+On VAX, the filenames will be as seen on the VAX system, typically with non
+ODS-2 characters and case changes prefixed with $ characters.
+
+[gnv.common_src]gawk_*_original_src.bck is the original source of the
+gawk kit as provided by the GNV project.
+[gnv.vms_src]gawk-*_vms_src.bck, if present, has the changed files that
+are used for building that are not yet in the gawk source kits
+distributed by the GNU gawk project.
+
+These backup savesets should be restored to different directory trees on
+an ODS-5 volume(s) which are referenced by concealed rooted logical names,
+unless on VAX, where either an NFS or ODS-2 volume can be used.
+
+SRC_ROOT: is for the source files common to all platforms.  This can be a
+          read only copy of the files from a change control repository.
+
+          In my build environment, the TRUNK_ROOT:[gawk] is the
+          same directory as src_root:[gawk].  TRUNK_ROOT:[gawk] is a
+          checkout of the gawk repository used for the build.
+
+VMS_ROOT: is for the files that were changed from the repository copy of
+          SRC_ROOT:
+
+          Note, you should create the VMS_ROOT: directory tree even if it is
+          initially empty.  This is where you should put edits if you are
+          making changes.
+
+          In my build environment, the source_root:[gnu_vms.gawk] is a
+          directory with the checked out code and vms_root:[gawk] is
+          a copy with any local modifications.
+
+          The command procedure compare_gawk_source.com will report any
+          differences in the source_root:[gnu_vms.gawk] directory and the
+          vms_root:[gawk] directory.  If the source_root: logical is not
+          defined, it will translate the logical name src_root to do the
+          effective of src_root:[gawk.-.-.gnu_vms.gawk] to find the
+          VMS specific code CVS checkout based on where the checkout for
+          the GNU source is expected to be.
+
+LCL_ROOT: is manually created to have the same base and sub-directories as
+          SRC_ROOT: and VMS_ROOT:  This is for the architecture specific
+          binaries and other files created during the build.
+
+The logical name REF_ROOT: is optionally defined to be a logical name that
+is a search list for VMS_ROOT:,SRC_ROOT:
+
+The logical name PRJ_ROOT: is defined to be a logical name that is a search
+list for LCL_ROOT:,REF_ROOT:
+
+The VMS_ROOT and LCL_ROOT directory trees can be created with commands
+similar to:
+
+  $ create/dir lcl_root:[gawk]/prot=w:re
+  $ copy src_root:[gawk...]*.dir -
+    lcl_root:[gawk...]/prot=(o:rwed,w:re)
+  $ create/dir vms_root:[gawk]/prot=w:re
+  $ copy src_root:[gawk...]*.dir -
+    vms_root:[gawk...]/prot=(o:rwed,w:re)
+
+One of the ways with to protect the source from being modified is to have
+the directories under src_root: owned by a user or resource where the build
+username only has read access to it.
+
+Edit the file gawk_release_note_start.txt or other text files to reflect
+any changes.
+
+Edit the file PCSI_GAWK_FILE_LIST.TXT if there are new files added to the
+kit.  These files should all be ODS-2 legal filenames and directories.
+
+Note that if src_root: or vms_root: are NFS mounted disks, the
+step of backing up the source files will probably hang or fail.
+
+You need to copy the source files to VMS mounted disks and create
+logical names SRC_ROOT1 and VMS_ROOT1 to work around this to to
+reference local disks.  Make sure src_root1:[000000] and
+vms_root1:[000000] exist and can be written to.
+
+The command procedure compare_gawk_source can be used to check
+those directories and keep them up to date.
+
+    @[.vms]compare_gawk_source.com SRCBCK UPDATE
+
+    This compares the reference GNU source with the backup
+    staging directory for it and updates with any changes.
+
+    @[.vms]compare_gawk_source.com VMSBCK UPDATE
+
+    This compares the VMS specific source with the backup
+    staging directory for it and updates with any changes.
+
+    Leave off "UPDATE" to just check without doing any changes.
+
+    If you are not using NFS mounted disks and do not want to have a
+    separate directory for staging the sources for backup make sure
+    that src_root1: and vms_root1: do not exist.
+
+The kits will be built in the directory STAGE_ROOT:[KIT], which must be
+writable to the build procedure.
+
+Define the logical name GNV_PCSI_PRODUCER to indicate who is making the
+distribution.
+
+Define the logical name GNV_PCSI_PRODUCER_FULL_NAME to be your full name
+or full name of your company.
+
+These two GNV_PCSI_* logical names need to be manually defined to indicate
+the "branding" to differentiate the source of the kit.
+
+A limitation of the PCSI kitting procedure is that when selecting files, it
+tends to ignore the directory structure and assumes that all files with the
+same name are the same file, so every file placed in the kit must have a
+unique ODS-2 legal name.  Then a procedure needs to be added to the kit to
+create an alias link on install and remove the link on remove.
+
+While newer versions of PCSI can support ODS-5 filenames, not all verions
+of PCSI on systems that have ODS-5 filenames do.  So as a post install step,
+the PCSI kit built by these steps does a rename to the correct case.
+
+With these search lists set up and the logical names described, Gawk can
+be built and kitted by setting your default to PRJ_ROOT:[gawk]
+and then issuing the command:
+
+   $ @[.vms]pcsi_product_gawk.com
+
+First it will build the binaries by using  MMK utility.  The case of the
+parameter may be significant on ODS-5.
+
+   $ mmk/descrip=[.vms]descrip.mms gawk
+
+Then for Alpha and Itanium, it will build the dynamic extensions.
+
+   $ mmk/descrip=[.vms]descrip.mms extensions
+
+To clean up after a build to start over, run mmk with the target spotless.
+
+   $ mmk/descrip=[.vms]descrip.mms spotless
+
+The files are installed into a NEW_GNU directory for staging by running the
+procedure stage_gawk_install.com.  This copies the binaries and creates
+alias links to them.
+
+   $ @[.vms]stage_gawk_install.com remove
+   $ @[.vms]stage_gawk_install.com
+
+On the VAX platform, the staged files are needed for building the PCSI
+kit, as the VAX source was staged on an NFS volume, which encodes the
+filenames that have any upper case or special symbols in them.
+
+To remove the staged files, the procedure is run again with the parameter
+"REMOVE".  This makes sure that the alias links are removed.
+
+The names and contents of the PCSI files requires that the version of
+gawk be encoded in a special format.  This is done by:
+
+   @[.vms]make_pcsi_gawk_kit_name.com
+
+The release notes are built from the release note start, readme files and
+this file:
+
+   @[.release]build_gawk_release_notes.com
+
+Then the backup the source kits.
+
+Building a PCSI kit for an architecture takes the following steps after
+making sure that you have a working build environment.
+
+On VAX, the product command always prompts to the terminal for a confirmation.
+
+If there is another kit for this same version of gawk, but for a different
+base platform or operating system version, the product command will prompt
+to the terminal to select which one to compress.
+
+       The following message is normal:
+          %PCSI-I-CANNOTVAL, cannot validate
+            EAGLE$DQA0:[stage_root.][kit]GNV-AXPVMS-GAWK-V--1.PCSI;1
+          -PCSI-I-NOTSIGNED, product kit is not signed and therefore has
+          no manifest file
+
+This will result in both compressed and uncompressed kits for the target
+platform.
+
+Good Luck.
diff --git a/vms/gawk_release_note_start.txt b/vms/gawk_release_note_start.txt
new file mode 100644
index 0000000..44fceaf
--- /dev/null
+++ b/vms/gawk_release_note_start.txt
@@ -0,0 +1,189 @@
+From file: gawk_release_note_start.com
+
+This is GNU gawk packaged for VMS.
+
+The original readme files for GAWK for standalone building on VMS are
+supplied here along with a procedure for building GAWK for the making
+a PCSI kit.
+
+Note: I am a hobbyist and am not providing any support or any commitment
+to supply bug fixes or future releases.  This code is as-is with no
+warrantees.
+
+The testing of this port of Gawk involved running some self tests that
+were provided with the source.
+
+This version of gawk supports dynamically loaded extensions on Alpha and
+Itanium versions of VMS.  The pre-built dynamically loaded extensions
+are in gnv$gnu:[usr.lib.gawk].
+
+The linker option file used to build a dynamically loaded extension is
+located in gnv$gnu:[usr.src.gawk.extension.vms], and the gawkapi.h file
+is in gnv$gnu:[usr.include].
+
+Special installation notes:
+
+*  Please see https://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/
+   for the latest information on installing GNV related PCSI kits.
+
+*  We are updating and replacing GNV one kit at a time and transitioning
+   GNV to be a set of kits that the GNV package will install.  During
+   this transition some extra issues will need to be handled during
+   installs and upgrades.
+
+*  Due to the way that PCSI identifies packages, if you install a package
+   from one producer and then want to upgrade it from another producer,
+   you will probably need to uninstall the previous package first.
+
+   Some of these packages were previously created with different producer
+   prefixes.  We are standardizing on VMSPORTS and GNV as the branding
+   prefixes.  GNV will be for packages that are part of the GNV product
+   suite, and VMSPORTS will be for most other packages.
+
+   This uninstall can cause warning messages about dependencies.  If you
+   are transitioning to an upwardly compatible package, you can ignore
+   those warnings.
+
+*  This package should be installed to the same volume as GNV is installed.
+
+   If you uninstall or upgrade GNV or install a GNV from before the
+   transition is complete, you will need to reinstall all other packages
+   that install to the same GNV directory tree.
+
+   This is because at least some of the existing GNV installation procedures
+   have bugs in them were instead of just deleting the files that were
+   installed, they delete all files in the GNV directory tree.
+
+*  Because this is a transition, this package is replacing files from the
+   old GNV packages.  This is a necessary issue to allow incremental
+   improvement as we can not replace the GNV package until we get all
+   the component packages done.
+
+*  The GNV 2.x through at least the 3.0.1 kits make an unusual change
+   to the disk directory structure where they are installed where
+   they use the [vms$common.gnv] as a mount point and mount the posix
+   root on it.  This is a bug because it causes many problems and does
+   not offer any advantages.  One of the problems is that it causes
+   problems with other PCSI installs and uninstalls to that directory.
+
+   This bug can be manually repaired such as has been done on
+   on encompasserve.org as documented in PORTING_TO_VMS notes conference.
+
+   At this time, we do not have a scripted repair to this bug, and it
+   may not be possible to fully script a repair because this bug can
+   cause the POSIX root and [vms$common.gnv] to have different contents
+   when they should be the same directory, and it will take a manual
+   inspection to select which files go where.
+
+*  Because of the directory change bug, the gnv$startup.com in the GNV
+   kit must be run when the system boots up or the [vms$common.gnv]
+   directory will appear to be empty.
+
+   If a PCSI kit like this one is installed when the GNV startup has not
+   been run, it will create a new directory tree under [vms$common.gnv]
+   that will not be visible to the posix root.  If you uninstall this
+   PCSI kit before running the gnv$startup.com procedure then you can
+   install it after running the gnv$startup.com procedure.  If you have
+   run the gnv$startup.com procedure after the install, then you have
+   a mess, and you will need to use the GNV umnt to un-mount the
+   [vms$common.gnv] directory before the uninstall of this kit will
+   work.
+
+An analyze/disk/repair step on the installation disk should be done after
+installation to collect files left over from incomplete deletions into the
+SYSLOST directory.  This step should be done on a "quiet" system per HP
+recomendations.
+
+Bugs can be logged at the tracker with https://sourceforge.net/projects/gnv/.
+There is no guarantee that bugs will be fixed for a hobbyist build.
+
+VMS specific port information:
+
+The logical name GNV$GNU is used to find the simulated posix root and defines
+the logical name SYS$POSIX_ROOT in the process table in user mode for child
+processes if needed.  This is to comply with VMS logical name conventions.
+The logical name BIN is also set in the process table in user mode to be
+GNV$GNU:[BIN] if it is not already set.
+
+The following DECC$Feature settings are in in effect for Gawk by default:
+
+DECC$ACL_ACCESS_CHECK enabled.
+DECC$ALLOW_REMOVE_OPEN_FILES enabled.
+DECC$ARGV_PARSE_STYLE enabled.
+DECC$EFS_CASE_PRESERVE enabled.
+DECC$EFS_CHARSET enabled.
+DECC$EFS_FILE_TIMESTAMPS enabled.
+DECC$ENABLE_GETENV_CACHE enabled.
+DECC$EXEC_FILEATTR_INHERITANCE set to 2.
+DECC$FILE_PERMISSION_UNIX enabled.
+DECC$FILE_SHARING enabled.
+DECC$FILE_OWNER_UNIX enabled.
+DECC$FILENAME_REPORT_UNIX enabled.
+DECC$FILENAME_UNIX_NO_VERSION enabled.
+DECC$GLOB_UNIX_STYLE enabled.
+DECC$POSIX_SEEK_STREAM_FILE enabled.
+DECC$READDIR_DROPDOTNOTYPE enabled.
+DECC$RENAME_NO_INHERIT enabled.
+DECC$STDIO_CTX_EOL enabled.
+DECC$STRTOL_ERANGE enabled.
+DECC$UNIX_PATH_BEFORE_LOGNAME enabled.
+
+While more strict UNIX compatibility feature settings can be applied by users
+by setting feature logical names, these settings are all the Bash and most
+ported programs need.
+
+This port of Gawk uses the VMS CRTL to handle the Unix format pathnames
+and as such is dependent on them.  It is a known issue that directories with
+a Unix name "file.dir/" and some symbolic links are not handled correctly.
+This is a combination of problems with RMS and CRTL.  The RMS portion is
+fixed with the VMS84?_RMS-V0300 ECO kit.  I am not aware of a CRTL kit that
+fixes the issues.
+
+This kit is designed to be used with the GNV Bash 4.2.45 or later kit.
+
+Fixes and enhancements:
+
+* No logical names required for proper Gawk operations other than GNV$GNU
+  for locating the simulated "/".
+
+* GNV$GNU is used to find the posix root and locally sets SYS$POSIX_ROOT
+  for child processes if needed.  This is to comply with VMS logical
+  name conventions.  The logical name BIN is also set locally to be
+  GNV$GNU:[BIN] if it is not already set.
+
+* config.h now generated at part of the build from a template.
+
+The supplied GNV$GAWK_STARTUP.COM procedure is provided in
+[VMS$COMMON.SYS$STARTUP] can be put in your VMS startup procedure to install
+selected images as known because they need privileges.  It is recommended
+that the GNV$STARTUP.COM procedure be run first, followed by the
+GNV$BASH_STARTUP.COM procedure before the GNV$GAWK_STARTUP.COM is
+executed.
+
+The names of the gawk image have been prefixed with GNV$ to prevent
+possible naming conflicts with other programs that are on the system.  The
+GNV$ prefix has been registered with HP for this purpose.
+
+OpenVMS specific building and kitting instructions are after the standard
+bash readme file below.
+
+The source kits contains files for building Gawk using MMK.
+MMK 4.0 was used for this build on Alpha and Itanium Itanium.
+
+Currently, the focus of the OpenVMS GNV porting team is to address bugs in
+the OpenVMS port of GNV components that pose immediate barriers to running
+configure and make scripts for Open Source Software packages targeting
+OpenVMS environments.
+
+The GNV development team is involved in an ongoing effort to identify and
+document the underlying technical causes for these current limitations and (if
+available) workarounds as well as developing code fixes to eliminate them. The
+VMS-Ports Source Forge project at https://sourceforge.net/p/vms-ports/tickets/
+currently documents OpenVMS CRTL bugs and limitations with respect to porting
+Open Source Software using OpenVMS. The VMS-Ports Source Forge Project also
+contains examples of ported packages provided by volunteer contributors as well
+as documentation with recommendations on how to setup, modify and use the
+OpenVMS GNV environment for the purpose of porting Open Source software
+packages to OpenVMS. Browse to https://sourceforge.net/p/vms-ports/wiki/Home/
+for more information.
+
diff --git a/vms/gawk_verb.com b/vms/gawk_verb.com
new file mode 100644
index 0000000..b74c49e
--- /dev/null
+++ b/vms/gawk_verb.com
@@ -0,0 +1,26 @@
+$! gawk_verb.com - build the gawk_verb.cld from the gawk.cld.
+$!
+$! The CLD file needed to modify a DCL command table is different
+$! from the CLD file needed to build the product by specifying an image.
+$!
+$! So read in the [.vms]gawk.cld and generate a gawk_verb.cld.
+$!
+$! 23-Dec-2012 - J. Malmberg
+$!
+$outfile = "sys$disk:[]gawk_verb.cld"
+$infile = "[.vms]gawk.cld"
+$open/read cld 'infile'
+$create 'outfile'
+$open/append cldv 'outfile'
+$loop:
+$read cld/end=loop_end line_in
+$if f$locate("image gawk", line_in) .lt. f$length(line_in)
+$then
+$    write cldv "    image gnv$gnu:[bin]gnv$gawk"
+$    goto loop
+$endif
+$write cldv line_in
+$goto loop
+$loop_end:
+$close cldv
+$close cld
diff --git a/vms/gawkmisc.vms b/vms/gawkmisc.vms
index 749c603..725cf66 100644
--- a/vms/gawkmisc.vms
+++ b/vms/gawkmisc.vms
@@ -3,7 +3,8 @@
  */
 
 /* 
- * Copyright (C) 1986, 1988, 1989, 1991-1996, 2003, 2011 the Free Software 
Foundation, Inc.
+ * Copyright (C) 1986, 1988, 1989, 1991-1996, 2003, 2011, 2014
+ * the Free Software Foundation, Inc.
  * 
  * This file is part of GAWK, the GNU implementation of the
  * AWK Progamming Language.
diff --git a/vms/gnv_gawk_startup.com b/vms/gnv_gawk_startup.com
new file mode 100644
index 0000000..e691965
--- /dev/null
+++ b/vms/gnv_gawk_startup.com
@@ -0,0 +1,75 @@
+$! File: gnv$gawk_Startup.com / gnv_gawk_startup.com
+$!
+$! Procedure to setup the GAWK images for use by programs from the
+$! VMS SYSTARTUP*.COM procedure.
+$!
+$! 14-Mar-2011 J. Malmberg
+$! 04-May-2011 J. Malmberg      Use GNV_PCSI_DESTINATION to find the
+$!                              value to assing GNV$GNU per suggestion
+$!                              by Martin Vorlander.
+$! 02-Jan-2014 J. Malmberg     Gawk Version
+$!========================================================================
+$!
+$!
+$! GNV$GNU if needed.
+$ if f$trnlnm("GNV$GNU") .eqs. ""
+$ then
+$   x = f$trnlnm("GNU","LNM$SYSTEM_TABLE")
+$   if x .nes. ""
+$   then
+$       write sys$output -
+ "Notice: logical name GNU: was found in the system table instead of GNV$GNU:"
+$       write sys$output -
+ "This is a known bug in the GNV 2.1.3 and earlier kits."
+$       define/system/exec/trans=conc GNV$GNU 'x'
+$   else
+$!
+$!      File name per VMS standards
+$!      ---------------------------
+$       file1 = "sys$startup:gnv$destination_''f$getsyi("ARCH_NAME")'.com"
+$!
+$!      File name in GNV 2.1.3
+$!      ----------------------
+$       file2 = "sys$startup:gnv_destination_''f$getsyi("ARCH_NAME")'.com"
+$!
+$!      File name before GNV 2.1.3
+$!      ---------------------------
+$       file3 = "sys$startup:gnv_destination''f$getsyi("ARCH_NAME")'.com"
+$       arch_file = ""
+$       if f$search(file1) .nes. ""
+$       then
+$           arch_file = file1
+$       else
+$           if f$search(file2) .nes. ""
+$           then
+$               arch_file = file2
+$           else
+$               if f$search("file3") .nes. "" then arch_file = file3
+$           endif
+$       endif
+$       if (arch_file) .nes. "" then @'arch_file'
+$!
+$!      Logical name per VMS standards
+$!      -------------------------------
+$       destination = f$trnlnm("GNV$PCSI_DESTINATION")
+$!
+$!      Logical name in GNV 2.1.3
+$!      --------------------------
+$       if destination .eqs. ""
+$       then
+$           destination = f$trnlnm("GNV_PCSI_DESTINATION")
+$       endif
+$       if destination .eqs. ""
+$       then
+$           !Assume this procedure is on the same volume as the GNV install.
+$           my_proc = f$environment("PROCEDURE")
+$           my_dev = f$parse(my_proc,,,"DEVICE","NO_CONCEAL")
+$           destination = "''my_dev'[vms$common.gnv.]"
+$       endif
+$       define/system/exec/trans=conc gnv$gnu 'destination'
+$   endif
+$ endif
+$!
+$!
+$all_exit:
+$ exit
diff --git a/vms/make_pcsi_gawk_kit_name.com b/vms/make_pcsi_gawk_kit_name.com
new file mode 100644
index 0000000..daaa37a
--- /dev/null
+++ b/vms/make_pcsi_gawk_kit_name.com
@@ -0,0 +1,189 @@
+$! File: MAKE_PCSI_GAWK_KIT_NAME.COM
+$!
+$! Calculates the PCSI kit name for use in building an installation kit.
+$! PCSI is HP's PolyCenter Software Installation Utility.
+$!
+$! The results are stored in as logical names so that other procedures
+$! can use them.
+$!
+$! 92-Jan-2014  J. Malmberg    Gawk version
+$!========================================================================
+$!
+$! Save default
+$default_dir = f$environment("DEFAULT")
+$!
+$! Put things back on error.
+$on warning then goto all_exit
+$!
+$! The producer is the name or common abbreviation for the entity that is
+$! making the kit.  It must be set as a logical name before running this
+$! procedure.
+$!
+$! HP documents the producer as the legal owner of the software, but for
+$! open source work, it should document who is creating the package for
+$! distribution.
+$!
+$producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$if producer .eqs. ""
+$then
+$   write sys$output "The logical name GNV_PCSI_PRODUCER needs to be defined."
+$   write sys$output "This should be set to the common abbreviation or name of"
+$   write sys$output "the entity creating this kit.  If you are an individual"
+$   write sys$output "then use your initials as long as they do not match"
+$   write sys$output "a different well known producer prefix."
+$   goto all_exit
+$endif
+$producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
+$if producer_full_name .eqs. ""
+$then
+$   write sys$output "The logical name GNV_PCSI_PRODUCER_FULL_NAME needs to"
+$   write sys$output "be defined.  This should be set to the full name of"
+$   write sys$output "the entity creating this kit.  If you are an individual"
+$   write sys$output "then use your name."
+$   write sys$output "EX: DEFINE GNV_PCSI_PRODUCER_FULL_NAME ""First M. Last"""
+$   goto all_exit
+$endif
+$!
+$write sys$output "*****"
+$write sys$output "***** Producer = ''producer'"
+$write sys$output "*****"
+$!
+$!
+$! Base is one of 'VMS', 'AXPVMS', 'I64VMS', 'VAXVMS' and indicates what
+$! binaries are in the kit.  A kit with just 'VMS' can be installed on all
+$! architectures.
+$!
+$base = "VMS"
+$arch_type = f$getsyi("ARCH_NAME")
+$code = f$extract(0, 1, arch_type)
+$if (code .eqs. "I") then base = "I64VMS"
+$if (code .eqs. "V") then base = "VAXVMS"
+$if (code .eqs. "A") then base = "AXPVMS"
+$!
+$!
+$product = "gawk"
+$!
+$!
+$! We need to get the version from config.h.  It will have a lines like
+$! #define PACKAGE_VERSION "4.1.0a"
+$!
+$!
+$open/read/error=version_loop_end verf config.h
+$version_loop:
+$   read/end=version_loop_end verf line_in
+$   if line_in .eqs. "" then goto version_loop
+$   if f$locate("#define PACKAGE_VERSION", line_in) .ne. 0
+$   then
+$       goto version_loop
+$   endif
+$   tag = f$element(1, " ", line_in)
+$   value = f$element(2, " ", line_in) - """" - """"
+$   if tag .eqs. "PACKAGE_VERSION"
+$   then
+$       distversion = value
+$       goto version_loop_end
+$   endif
+$   goto version_loop
+$version_loop_end:
+$close verf
+$!
+$!
+$! Optional ECO file.
+$ECO_LEVEL = ""
+$vms_eco_file = "[.vms]vms_eco_level.h"
+$if f$search(vms_eco_file) .nes. ""
+$then
+$   open/read ef 'vms_eco_file'
+$ecolevel_loop:
+$       read/end=ecolevel_loop_end ef line_in
+$       prefix = f$element(0, " ", line_in)
+$       if prefix .nes. "#define" then goto ecolevel_loop
+$       key = f$element(1, " ", line_in)
+$       value = f$element(2, " ", line_in) - """" - """"
+$       if key .eqs. "VMS_ECO_LEVEL"
+$       then
+$           ECO_LEVEL = value
+$           if ECO_LEVEL .eq. 0
+$           then
+$               ECO_LEVEL = ""
+$           else
+$               ECO_LEVEL = "E" + ECO_LEVEL
+$           endif
+$           goto ecolevel_loop_end
+$       endif
+$       goto ecolevel_loop
+$ecolevel_loop_end:
+$    close ef
+$endif
+$!
+$raw_version = distversion
+$!
+$!
+$! This translates to V0114-08 or D0115-01
+$! We can not encode the snapshot date into the version due to the way that
+$! the Polycenter Software Installation Utility evaluates the name.
+$!
+$! version_type = 'V' for a production release, and 'D' for a build from a
+$! daily repository snapshot, and a code for a build from a pre-release branch
+$majorver = f$element(0, ".", raw_version)
+$minorver = f$element(1, ".", raw_version)
+$update = f$element(2,".", raw_version)
+$if update .eqs. "." then update = ""
+$vtype = "V"
+$if update .nes. ""
+$then
+$   update_len = f$length(update)
+$   code = f$extract(update_len - 1, 1, update)
+$   code = f$edit(code, "UPCASE")
+$   if (code .ges. "A") .and. (code .les. "Z")
+$   then
+$       update = f$extract(0, update_len - 1, update)
+$       vtype = code
+$   endif
+$endif
+$if update .eqs. "0" then update = ""
+$!
+$!
+$version_fao = "!2ZB!2ZB"
+$mmversion = f$fao(version_fao, 'majorver', 'minorver')
+$version = vtype + "''mmversion'"
+$if update .nes. "" .or. ECO_LEVEL .nes. ""
+$then
+$!  The presence of an ECO implies an update
+$   if update .eqs. "" .and. ECO_LEVEL .nes. "" then update = "0"
+$   version = version + "-" + update + ECO_LEVEL
+$   fversion = version
+$else
+$   fversion = version
+$   version = version + "-"
+$endif
+$!
+$! Kit type 1 is complete kit, the only type that this procedure will make.
+$Kittype = 1
+$!
+$! Write out a logical name for the resulting base kit name.
+$name = "''producer'-''base'-''product'-''version'-''kittype'"
+$define GNV_PCSI_KITNAME "''name'"
+$fname = "''product'-''fversion'"
+$!
+$! No ECO or Patch level
+$fname_len = f$length(fname)
+$if f$extract(fname_len - 1, 1, fname) .eqs. "-"
+$then
+$    fname = f$extract(0, fname_len - 1, fname)
+$    fname_len = fname_len - 1
+$endif
+$if f$extract(fname_len - 1, 1, fname) .eqs. "-"
+$then
+$    fname = f$extract(0, fname_len - 1, fname)
+$    fname_len = fname_len - 1
+$endif
+$define GNV_PCSI_FILENAME_BASE 'fname'
+$write sys$output "*****"
+$write sys$output "***** GNV_PCSI_KITNAME = ''name'."
+$write sys$output "***** GNV_PCSI_FILENAME_BASE = ''fname'."
+$write sys$output "*****"
+$!
+$all_exit:
+$set def 'default_dir'
+$exit '$status'
diff --git a/vms/pcsi_gawk_file_list.txt b/vms/pcsi_gawk_file_list.txt
new file mode 100644
index 0000000..67d2d32
--- /dev/null
+++ b/vms/pcsi_gawk_file_list.txt
@@ -0,0 +1,120 @@
+! File: pcsi_gawk_file_list.txt
+!
+! File list for building a PCSI kit.
+! Very simple format so that the parsing logic can be simple.
+! links first, directory second, and files third.
+!
+! link -> file tells procedure to create/remove a link on install/uninstall
+! If more than one link, consider using an alias file.
+!
+! [xxx.yyy]foo.dir is a directory file for the rename phase.
+! [xxx.yyy.foo] is a directory file for the create phase.
+! Each subdirectory needs to be on its own pair of lines.
+!
+! [xxx.yyy]file.ext is a file for the rename and add phases.
+!
+! 14-Mar-2011  J. Malmberg
+! 08-Dec-2013  J. Malmberg      This list is based on what was found on
+!                               some Linux systems and what can be currently
+!                               built on VMS.
+!
+!============================================================================
+![gnv.bin]awk. -> [gnv.bin]gnv$gawk.exe
+![gnv.bin]awk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.bin]gawk. -> [gnv.bin]gnv$gawk.exe
+![gnv.bin]gawk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]awk. -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]awk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]gawk. -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.bin]gawk.exe -> [gnv.bin]gnv$gawk.exe
+![gnv.usr.share.man.man1]awk.1 -> [gnv.usr.share.man.man1]gawk.1
+[gnv]
+[000000]gnv.dir
+[gnv.bin]
+[gnv]bin.dir
+[gnv.vms_bin]
+[gnv]vms_bin.dir
+[gnv.vms_help]
+[gnv]vms_help.dir
+[gnv.lib]
+[gnv]lib.dir
+[gnv.usr]
+[gnv]usr.dir
+[gnv.usr.bin]
+[gnv.usr]bin.dir
+[gnv.usr.include]
+[gnv.usr]include.dir
+[gnv.usr.lib]
+[gnv.usr]lib.dir
+[gnv.usr.lib.gawk]
+[gnv.usr.lib]gawk.dir
+[gnv.usr.share]
+[gnv.usr]share.dir
+[gnv.usr.share.awk]
+[gnv.usr.share]awk.dir
+[gnv.usr.share.doc]
+[gnv.usr.share]doc.dir
+[gnv.usr.share.doc.gawk]
+[gnv.usr.share.doc]gawk.dir
+[gnv.usr.share.info]
+[gnv.usr.share]info.dir
+[gnv.usr.share.man]
+[gnv.usr.share]man.dir
+[gnv.usr.share.man.man1]
+[gnv.usr.share.man]man1.dir
+![gnv.usr.share.man.man7]
+![gnv.usr.share.man]man7.dir
+[gnv.usr]src.dir
+[gnv.usr.src]
+[gnv.usr.src]gawk.dir
+[gnv.usr.src.gawk]extension.dir
+[gnv.usr.src.gawk.extension]
+[gnv.usr.src.gawk.extension]vms.dir
+[gnv.usr.src.gawk.extension.vms]
+[gnv.bin]gnv$gawk.exe
+[gnv.bin]igawk.
+[gnv.vms_bin]remove_old_gawk.com
+[gnv.vms_bin]gawk_alias_setup.com
+[gnv.vms_bin]gawk_verb.cld
+[gnv.vms_help]gawk.hlp
+[gnv.usr.include]gawkapi.h
+[gnv.usr.lib.gawk]filefuncs.exe
+[gnv.usr.lib.gawk]fnmatch.exe
+[gnv.usr.lib.gawk]inplace.exe
+[gnv.usr.lib.gawk]ordchr.exe
+[gnv.usr.lib.gawk]readdir.exe
+[gnv.usr.lib.gawk]revoutput.exe
+[gnv.usr.lib.gawk]revtwoway.exe
+[gnv.usr.lib.gawk]rwarray.exe
+[gnv.usr.lib.gawk]time.exe
+[gnv.usr.share.awk]assert.awk
+[gnv.usr.share.awk]bits2str.awk
+[gnv.usr.share.awk]cliff_rand.awk
+[gnv.usr.share.awk]ctime.awk
+[gnv.usr.share.awk]ftrans.awk
+[gnv.usr.share.awk]getopt.awk
+[gnv.usr.share.awk]gettime.awk
+[gnv.usr.share.awk]join.awk
+[gnv.usr.share.awk]libintl.awk
+[gnv.usr.share.awk]noassign.awk
+[gnv.usr.share.awk]ord.awk
+[gnv.usr.share.awk]readable.awk
+[gnv.usr.share.awk]readfile.awk
+[gnv.usr.share.awk]rewind.awk
+[gnv.usr.share.awk]round.awk
+[gnv.usr.share.awk]strtonum.awk
+[gnv.usr.share.awk]walkarray.awk
+[gnv.usr.share.awk]zerofile.awk
+[gnv.usr.share.doc.gawk]COPYING.
+[gnv.usr.share.doc.gawk]NEWS.
+[gnv.usr.share.doc.gawk]POSIX.STD
+[gnv.usr.share.doc.gawk]README.
+[gnv.usr.share.doc.gawk]README.vms
+[gnv.usr.share.doc.gawk]README.multibyte
+[gnv.usr.share.doc.gawk]README.tests
+[gnv.usr.share.info]gawk.info
+[gnv.usr.share.info]gawkinet.info
+[gnv.usr.share.man.man1]gawk.1
+[gnv.usr.share.man.man1]igawk.1
+![gnv.usr.share.man.man7]
+[gnv.usr.src.gawk.extension.vms]gawk_plugin.opt
diff --git a/vms/pcsi_product_gawk.com b/vms/pcsi_product_gawk.com
new file mode 100644
index 0000000..b0d9feb
--- /dev/null
+++ b/vms/pcsi_product_gawk.com
@@ -0,0 +1,187 @@
+$! File: pcsi_product_gawk.com
+$!
+$! This command file packages up the product GAWK into a sequential
+$! format kit
+$!
+$! 13-Dec-2013  J.Malmberg
+$!
+$!=========================================================================
+$!
+$! Save default
+$ default_dir = f$environment("DEFAULT")
+$!
+$! Put things back on error.
+$ on warning then goto all_exit
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ can_build = 1
+$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
+$ if producer .eqs. ""
+$ then
+$   write sys$output "GNV_PCSI_PRODUCER logical name has not been set."
+$   can_build = 0
+$ endif
+$ producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
+$ if producer_full_name .eqs. ""
+$ then
+$   write sys$output -
+        "GNV_PCSI_PRODUCER_FULL_NAME logical name has not been set."
+$   can_build = 0
+$ endif
+$ stage_root_name = f$trnlnm("STAGE_ROOT")
+$ if stage_root_name .eqs. ""
+$ then
+$   write sys$output "STAGE_ROOT logical name has not been set."
+$   can_build = 0
+$ endif
+$!
+$ if (can_build .eq. 0)
+$ then
+$   write sys$output "Not able to build a kit."
+$   goto all_exit
+$ endif
+$!
+$!
+$! Build the gawk image(s)
+$!-------------------------
+$ if f$search("gawk.exe") .eqs. ""
+$ then
+$   mmk/descrip=[.vms]descrip.mms gawk
+$ endif
+$ if arch_code .nes. "V"
+$ then
+$   if f$search("filefuncs.exe") .eqs. ""
+$   then
+$       mmk/descrip=[.vms]descrip.mms extensions
+$   endif
+$ endif
+$!
+$! Build the gawk_verb.cld
+$!-------------------------
+$ if f$search("gawk_verb.cld") .eqs. ""
+$ then
+$   @[.vms]gawk_verb.com
+$ endif
+$!
+$! Stage the images for building the kit
+$!--------------------------------------
+$ @[.vms]stage_gawk_install.com remove
+$ @[.vms]stage_gawk_install.com
+$!
+$!
+$!
+$! Make sure that the kit name is up to date for this build
+$!----------------------------------------------------------
+$ @[.vms]make_pcsi_gawk_kit_name.com
+$!
+$! Make sure that the release note file name is up to date
+$!---------------------------------------------------------
+$ @[.vms]build_gawk_release_notes.com
+$!
+$!
+$! Make sure that the source has been backed up.
+$!----------------------------------------------
+$ @[.vms]backup_gawk_src.com
+$!
+$! Regenerate the PCSI description file.
+$!--------------------------------------
+$ @[.vms]build_gawk_pcsi_desc.com
+$!
+$! Regenerate the PCSI Text file.
+$!---------------------------------
+$ @[.vms]build_gawk_pcsi_text.com
+$!
+$!
+$! Parse the kit name into components.
+$!---------------------------------------
+$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
+$ if kit_name .eqs. ""
+$ then
+$   write sys$output "@[.vms]make_pcsi_gawk_kit_name.com has not been run."
+$   goto all_exit
+$ endif
+$ producer = f$element(0, "-", kit_name)
+$ base = f$element(1, "-", kit_name)
+$ product_name = f$element(2, "-", kit_name)
+$ mmversion = f$element(3, "-", kit_name)
+$ majorver = f$extract(0, 3, mmversion)
+$ minorver = f$extract(3, 2, mmversion)
+$ updatepatch = f$element(4, "-", kit_name)
+$ if updatepatch .eqs. "" then updatepatch = ""
+$!
+$ version_fao = "!AS.!AS"
+$ mmversion = f$fao(version_fao, "''majorver'", "''minorver'")
+$ if updatepatch .nes. ""
+$ then
+$   version = "''mmversion'" + "-" + updatepatch
+$ else
+$   version = "''mmversion'"
+$ endif
+$!
+$!
+$! Move to the base directories
+$ current_default = f$environment("DEFAULT")
+$ my_dir = f$parse(current_default,,,"DIRECTORY") - "[" - "<" - ">" - "]"
+$!
+$!
+$ source = "''default_dir'"
+$ src1 = "new_gnu:[bin],"
+$ src2 = "new_gnu:[usr.bin],"
+$ src3 = "new_gnu:[vms_bin],"
+$ src4 = "new_gnu:[vms_help],"
+$ src5 = "new_gnu:[vms_src],"
+$ src6 = "new_gnu:[common_src],"
+$ src7 = "sys$disk:[''my_dir'],sys$disk:[''my_dir'.vms],"
+$ src8 = "new_gnu:[usr.share.awk],"
+$ src9 = "new_gnu:[usr.share.man.man1],"
+$ src10 = "new_gnu:[usr.share.doc.gawk],"
+$ src11 = "new_gnu:[usr.share.info],"
+$ src12 = "sys$disk:[''m_dir'.pc.awklib]"
+$ gnu_src = src1 + src2 + src3 + src4 + src5 + src6 + src7 + src8 + src9
+$ gnu_src = gnu_src + src10 + src11 + src12
+$!
+$!
+$ base = ""
+$ arch_name = f$edit(f$getsyi("arch_name"),"UPCASE")
+$ if arch_name .eqs. "ALPHA" then base = "AXPVMS"
+$ if arch_name .eqs. "IA64" then base = "I64VMS"
+$ if arch_name .eqs. "VAX" then base = "VAXVMS"
+$!
+$ if base .eqs. "" then exit 44
+$!
+$ pcsi_option = "/option=noconfirm"
+$ if arch_code .eqs. "V"
+$ then
+$   pcsi_option = ""
+$ endif
+$!
+$!
+$product package 'product_name' -
+ /base='base' -
+ /producer='producer' -
+ /source='source' -
+ /destination=STAGE_ROOT:[KIT] -
+ /material=('gnu_src','source') -
+ /format=sequential 'pcsi_option'
+$!
+$!
+$! VAX can not do a compressed kit.
+$! ZIP -9 "-V" does a better job, so no reason to normally build a compressed
+$! kit.
+$!----------------------------------
+$if p1 .eqs. "COMPRESSED"
+$then
+$   if arch_code .nes. "V"
+$   then
+$       product copy /options=(novalidate, noconfirm) /format=compressed -
+        'product_name' -
+        /source=stage_root:[kit]/dest=stage_root:[kit] -
+        /version='version'/base='base'
+$   endif
+$endif
+$!
+$all_exit:
+$ set def 'default_dir'
+$ exit
diff --git a/vms/remove_old_gawk.com b/vms/remove_old_gawk.com
new file mode 100644
index 0000000..ed68fc4
--- /dev/null
+++ b/vms/remove_old_gawk.com
@@ -0,0 +1,113 @@
+$! File: remove_old_gawk.com
+$!
+$! This is a procedure to remove the old gawk images that were installed
+$! by the GNV kits and replace them with links to the new image.
+$!
+$! 02-Jan-2014  J. Malmberg    Gawk version
+$!
+$!==========================================================================
+$!
+$vax = f$getsyi("HW_MODEL") .lt. 1024
+$old_parse = ""
+$if .not. VAX
+$then
+$   old_parse = f$getjpi("", "parse_style_perm")
+$   set process/parse=extended
+$endif
+$!
+$old_cutils = "gawk,awk,"
+$!
+$!
+$ i = 0
+$cutils_loop:
+$   file = f$element(i, ",", old_cutils)
+$   if file .eqs. "" then goto cutils_loop_end
+$   if file .eqs. "," then goto cutils_loop_end
+$   call update_old_image 'file'
+$   i = i + 1
+$   goto cutils_loop
+$cutils_loop_end:
+$!
+$!
+$if .not. VAX
+$then
+$   file = "gnv$gnu:[usr.share.man.cat1]awk^.1.gz"
+$   if f$search(file) .nes. "" then delete 'file';*
+$   file = "gnv$gnu:[usr.share.man.cat1]gawk^.1.gz"
+$   if f$search(file) .nes. "" then delete 'file';*
+$   file = "gnv$gnu:[usr.share.man.cat1]iawk^.1.gz"
+$   if f$search(file) .nes. "" then delete 'file';*
+$endif
+$!
+$!
+$if .not. VAX
+$then
+$   set process/parse='old_parse'
+$endif
+$!
+$all_exit:
+$  exit
+$!
+$! Remove old image or update it if needed.
+$!-------------------------------------------
+$update_old_image: subroutine
+$!
+$ file = p1
+$! First get the FID of the new gawk image.
+$! Don't remove anything that matches it.
+$ new_gawk = f$search("GNV$GNU:[BIN]GNV$''file'.EXE")
+$!
+$ new_gawk_fid = "No_new_gawk_fid"
+$ if new_gawk .nes. ""
+$ then
+$   new_gawk_fid = f$file_attributes(new_gawk, "FID")
+$ endif
+$!
+$!
+$!
+$! Now get check the "''file'." and "''file'.exe"
+$! May be links or copies.
+$! Ok to delete and replace.
+$!
+$!
+$ old_gawk_fid = "No_old_gawk_fid"
+$ old_gawk = f$search("gnv$gnu:[bin]''file'.")
+$ old_gawk_exe_fid = "No_old_gawk_fid"
+$ old_gawk_exe = f$search("gnv$gnu:[bin]''file'.exe")
+$ if old_gawk_exe .nes. ""
+$ then
+$   old_gawk_exe_fid = f$file_attributes(old_gawk_exe, "FID")
+$ endif
+$!
+$ if old_gawk .nes. ""
+$ then
+$   fid = f$file_attributes(old_gawk, "FID")
+$   if fid .nes. new_gawk_fid
+$   then
+$       if fid .eqs. old_gawk_exe_fid
+$       then
+$           set file/remove 'old_gawk'
+$       else
+$           delete 'old_gawk'
+$       endif
+$       if new_gawk .nes. ""
+$       then
+$           set file/enter='old_gawk' 'new_gawk'
+$       endif
+$   endif
+$ endif
+$!
+$ if old_gawk_exe .nes. ""
+$ then
+$   if old_gawk_fid .nes. new_gawk_fid
+$   then
+$       delete 'old_gawk_exe'
+$       if new_gawk .nes. ""
+$       then
+$           set file/enter='old_gawk_exe' 'new_gawk'
+$       endif
+$   endif
+$ endif
+$!
+$ exit
+$ENDSUBROUTINE ! Update old image
diff --git a/vms/stage_gawk_install.com b/vms/stage_gawk_install.com
new file mode 100644
index 0000000..22daf7f
--- /dev/null
+++ b/vms/stage_gawk_install.com
@@ -0,0 +1,300 @@
+$! File: stage_gawk_install.com
+$!
+$! Stages the build products to new_gnu:[...] for testing and for building
+$! a kit.
+$!
+$! If p1 starts with "R" then remove instead of install.
+$!
+$! The file PCSI_GAWK_FILE_LIST.TXT is read in to get the files other
+$! than the release notes file and the source backup file.
+$!
+$! The PCSI system can really only handle ODS-2 format filenames and
+$! assumes that there is only one source directory.  It also assumes that
+$! all destination files with the same name come from the same source file.
+$!
+$!
+$! 29-Sep-2013  J. Malmberg
+$!
+$!===========================================================================
+$!
+$ arch_type = f$getsyi("ARCH_NAME")
+$ arch_code = f$extract(0, 1, arch_type)
+$!
+$ mode = "install"
+$ code = f$extract(0, 1, p1)
+$ if code .eqs. "R" .or. code .eqs. "r" then mode = "remove"
+$!
+$!  First create the directories
+$!--------------------------------
+$ if mode .eqs. "install"
+$ then
+$   create/dir new_gnu:[bin]/prot=o:rwed
+$   create/dir new_gnu:[vms_bin]/prot=o:rwed
+$   create/dir new_gnu:[vms_help]/prot=o:rwed
+$   create/dir new_gnu:[lib]/prot=o:rwed
+$   create/dir new_gnu:[usr.bin]/prot=o:rwed
+$   create/dir new_gnu:[usr.include]/prot=o:rwed
+$   create/dir new_gnu:[usr.lib.gawk]/prot=o:rwed
+$   create/dir new_gnu:[usr.share.awk]/prot=o:rwed
+$   create/dir new_gnu:[usr.share.doc.gawk]/prot=o:rwed
+$   create/dir new_gnu:[usr.share.info]/prot=o:rwed
+$   create/dir new_gnu:[usr.src.gawk.extension.vms]/prot=o:rwed
+$   create/dir new_gnu:[usr.share.doc.man.man1]/prot=o:rwed
+$ endif
+$!
+$ if mode .eqs. "install"
+$ then
+$    copy [.vms]gnv_gawk_startup.com -
+         new_gnu:[vms_bin]gnv$gawk_startup.com
+$ else
+$    file = "new_gnu:[vms_bin]gnv$gawk_startup.com"
+$    if f$search(file) .nes. "" then delete 'file';*
+$ endif
+$!
+$!
+$!   Read through the file list to set up aliases and rename commands.
+$!---------------------------------------------------------------------
+$ open/read flst [.vms]pcsi_gawk_file_list.txt
+$!
+$inst_alias_loop:
+$   ! Skip the aliases
+$   read/end=inst_file_loop_end flst line_in
+$   line_in = f$edit(line_in,"compress,trim,uncomment")
+$   if line_in .eqs. "" then goto inst_alias_loop
+$   pathname = f$element(0, " ", line_in)
+$   linkflag = f$element(1, " ", line_in)
+$   if linkflag .nes. "->" then goto inst_alias_done
+$   goto inst_alias_loop
+$!
+$inst_file_loop:
+$!
+$   read/end=inst_file_loop_end flst line_in
+$   line_in = f$edit(line_in,"compress,trim,uncomment")
+$   if line_in .eqs. "" then goto inst_file_loop
+$!
+$inst_alias_done:
+$!
+$!
+$!   Skip the directories as we did them above.
+$!   Just process the files.
+$   tdir = f$parse(line_in,,,"DIRECTORY")
+$   tdir_len = f$length(tdir)
+$   tname = f$parse(line_in,,,"NAME")
+$   lctname = f$edit(tname, "LOWERCASE")
+$   ttype = f$parse(line_in,,,"TYPE")
+$   if arch_code .eqs. "V"
+$   then
+$       tname = lctname
+$       ttype = f$edit(ttype, "LOWERCASE")
+$       tdir = f$edit(tdir, "LOWERCASE")
+$   endif
+$   if tname .eqs. "" then goto inst_file_loop
+$   if ttype .eqs. ".dir" then goto inst_file_loop
+$!
+$!   if p1 starts with "R" then remove instead of install.
+$!
+$!   If gnv$xxx.exe, then:
+$!       Source is []gnv$gawk.exe
+$!       Destination1 is new_gnu:[bin]gnv$gawk.exe
+$!       Destination2 is new_gnu:[bin]xxx.  (alias)
+$!       Destination2 is new_gnu:[bin]xxx.exe  (alias)
+$!       We put all in new_gnu:[bin] instead of some in [usr.bin] because
+$!       older GNV kits incorrectly put some images in [bin] and [bin]
+$!       comes first in the search list.
+$   if f$locate("gnv$", tname) .eq. 0
+$   then
+$       myfile_len = f$length(tname)
+$       myfile = f$extract(4, myfile_len, tname)
+$       source = "[]''myfile'''ttype'"
+$       dest1 = "new_gnu:[bin]''tname'''ttype'"
+$       dest2 = "new_gnu:[bin]''myfile'."
+$       dest3 = "new_gnu:[bin]''myfile'.exe"
+$       if mode .eqs. "install"
+$       then
+$           if f$search(dest1) .eqs. "" then copy 'source' 'dest1'
+$           if f$search(dest2) .eqs. "" then set file/enter='dest2' 'dest1'
+$           if f$search(dest3) .eqs. "" then set file/enter='dest3' 'dest1'
+$       else
+$           if f$search(dest2) .nes. "" then set file/remove 'dest2';*
+$           if f$search(dest3) .nes. "" then set file/remove 'dest3';*
+$           if f$search(dest1) .nes. "" then delete 'dest1';*
+$       endif
+$       goto inst_file_loop
+$   endif
+$!
+$!   If lib.gawk] then
+$!       source is sys$disk:[]
+$!       dest is new_gnu:[usr.lib.gawk]
+$    if f$locate("lib.gawk]", tdir) .lt. tdir_len
+$    then
+$!       ! Not yet available on VAX/VMS
+$        if arch_code .eqs. "V" then goto inst_file_loop
+$!
+$        source = "[]''tname'''ttype'"
+$        dest = "new_gnu:[usr.lib.gawk]''tname'''ttype'"
+$        if mode .eqs. "install"
+$        then
+$            if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$        else
+$            if f$search(dest) .nes. "" then delete 'dest';*
+$        endif
+$        goto inst_file_loop
+$    endif
+$!
+$!   If .vms_bin] then
+$!       source is sys$disk:[]
+$!       dest is [vms_bin]
+$   if (f$locate("vms_bin]", tdir) .lt. tdir_len)
+$   then
+$       if (ttype .eqs. ".cld")
+$       then
+$           source = "sys$disk:[]''tname'''ttype'"
+$       else
+$           source = "sys$disk:[.vms]''tname'''ttype'"
+$       endif
+$       dest = "new_gnu:[vms_bin]''tname'''ttype'"
+$       if mode .eqs. "install"
+$       then
+$           if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$       else
+$           if f$search(dest) .nes. "" then delete 'dest';*
+$       endif
+$       goto inst_file_loop
+$   endif
+$!
+$!   If .vms_hlp] then
+$!       source is sys$disk:[.vms]
+$!       dest is [vms_help]
+$   if (f$locate("vms_help]", tdir) .lt. tdir_len) .and. (ttype .eqs. ".hlp")
+$   then
+$       source = "sys$disk:[.vms]''tname'''ttype'"
+$       dest = "new_gnu:[vms_help]''tname'''ttype'"
+$       if mode .eqs. "install"
+$       then
+$           if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$       else
+$           if f$search(dest) .nes. "" then delete 'dest';*
+$       endif
+$       goto inst_file_loop
+$   endif
+$!
+$!   If doc.gawk] then
+$!       source is sys$disk:[] or [.readme_d]
+$!       dest is [usr.share.doc.gawk]
+$   if f$locate(".doc.gawk]", tdir) .lt. tdir_len
+$   then
+$       if lctname .eqs. "readme" .and. ttype .nes. "."
+$       then
+$           source = "sys$disk:[.README_D]''tname'''ttype'"
+$           if f$search(source) .eqs. ""
+$           then
+$!              ! This may be an NFS mangled name on VAX.
+$               stype = ttype - "."
+$               if stype .nes. "vms" then stype = "$" + stype
+$               source = "sys$disk:[.$README_$D]$README.''stype'"
+$           endif
+$       else
+$           source = "sys$disk:[]''tname'''ttype'"
+$           if f$search(source) .eqs. ""
+$           then
+$               source = "sys$disk:[]$''tname'''ttype'"
+$           endif
+$       endif
+$       dest = "new_gnu:[usr.share.doc.gawk]''tname'''ttype'"
+$       if mode .eqs. "install"
+$       then
+$           if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$       else
+$           if f$search(dest) .nes. "" then delete 'dest';*
+$       endif
+$       goto inst_file_loop
+$   endif
+$!
+$!   If .awk] then
+$!       source is sys$disk:[.awklib.eg.lib]
+$!       dest is new_gnu:[usr.share.awk]
+$    if f$locate(".awk]", tdir) .lt. tdir_len
+$    then
+$        source = "[.awklib.eg.lib]''tname'''ttype'"
+$        dest = "new_gnu:[usr.share.awk]''tname'''ttype'"
+$        if mode .eqs. "install"
+$        then
+$            if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$        else
+$            if f$search(dest) .nes. "" then delete 'dest';*
+$        endif
+$        goto inst_file_loop
+$    endif
+$!
+$!   If *.info then
+$!       source is [.doc]gawk.info
+$!       dest is [.usr.share.info]
+$    if ttype .eqs. ".info"
+$    then
+$        source = "[.doc]''tname'''ttype'"
+$        dest = "new_gnu:[usr.share.info]''tname'''ttype'"
+$        if mode .eqs. "install"
+$        then
+$            if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$        else
+$            if f$search(dest) .nes. "" then delete 'dest';*
+$        endif
+$        goto inst_file_loop
+$    endif
+$!
+$!   If *.h then
+$!       source is []*.h
+$!       dest is [.usr.include]
+$    if ttype .eqs. ".h"
+$    then
+$        source = "[]''tname'''ttype'"
+$        dest = "new_gnu:[usr.include]''tname'''ttype'"
+$        if mode .eqs. "install"
+$        then
+$            if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$        else
+$            if f$search(dest) .nes. "" then delete 'dest';*
+$        endif
+$        goto inst_file_loop
+$    endif
+$!
+$!   If *.opt then
+$!       source is [.vms]gawk_plugin.opt
+$!       dest is [.usr.src.gawk.extension.vms]
+$    if ttype .eqs. ".opt"
+$    then
+$        source = "[.vms]''tname'''ttype'"
+$        dest = "new_gnu:[usr.src.gawk.extension.vms]''tname'''ttype'"
+$        if mode .eqs. "install"
+$        then
+$            if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$        else
+$            if f$search(dest) .nes. "" then delete 'dest';*
+$        endif
+$        goto inst_file_loop
+$    endif
+$!
+$!   If xxx.1 then
+$!       source is [.doc]xxx.1
+$!       dest is [usr.share.man.man1]
+$    if ttype .eqs. ".1"
+$    then
+$        source = "[.doc]''tname'''ttype'"
+$        dest = "new_gnu:[usr.share.man.man1]''tname'''ttype'"
+$        if mode .eqs. "install"
+$        then
+$            if f$search(dest) .eqs. "" then copy 'source' 'dest'
+$        else
+$            if f$search(dest) .nes. "" then delete 'dest';*
+$        endif
+$        goto inst_file_loop
+$    endif
+$!
+$    goto inst_file_loop
+$!
+$inst_file_loop_end:
+$!
+$close flst
+$!
+$all_exit:
+$   exit
diff --git a/vms/vms_args.c b/vms/vms_args.c
index 9788275..1216513 100644
--- a/vms/vms_args.c
+++ b/vms/vms_args.c
@@ -1,7 +1,7 @@
 /* vms_args.c -- command line parsing, to emulate shell i/o redirection.
                [ Escape sequence parsing now suppressed. ]
 
-   Copyright (C) 1991-1996, 1997, 2011 the Free Software Foundation, Inc.
+   Copyright (C) 1991-1996, 1997, 2011, 2014 the Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
diff --git a/vms/vms_cli.c b/vms/vms_cli.c
index aa09344..08e2d14 100644
--- a/vms/vms_cli.c
+++ b/vms/vms_cli.c
@@ -1,6 +1,6 @@
 /* vms_cli.c -- interface to CLI$xxx routines for fetching command line 
components
 
-   Copyright (C) 1991-1993, 2003, 2011 the Free Software Foundation, Inc.
+   Copyright (C) 1991-1993, 2003, 2011, 2014 the Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
diff --git a/vms/vms_fwrite.c b/vms/vms_fwrite.c
index 435fead..f29ec83 100644
--- a/vms/vms_fwrite.c
+++ b/vms/vms_fwrite.c
@@ -1,6 +1,6 @@
 /* vms_fwrite.c - augmentation for the fwrite() function.
 
-   Copyright (C) 1991-1996, 2010, 2011 the Free Software Foundation, Inc.
+   Copyright (C) 1991-1996, 2010, 2011, 2014 the Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
diff --git a/vms/vms_gawk.c b/vms/vms_gawk.c
index fce0fa8..4080e1d 100644
--- a/vms/vms_gawk.c
+++ b/vms/vms_gawk.c
@@ -1,6 +1,7 @@
 /* vms_gawk.c -- parse GAWK command line using DCL syntax
 
-   Copyright (C) 1991-1993, 1996, 2003, 2005, 2011 the Free Software 
Foundation, Inc.
+   Copyright (C) 1991-1993, 1996, 2003, 2005, 2011, 2014
+   the Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
diff --git a/vms/vms_misc.c b/vms/vms_misc.c
index ed47953..82c2f8a 100644
--- a/vms/vms_misc.c
+++ b/vms/vms_misc.c
@@ -1,6 +1,6 @@
 /* vms_misc.c -- sustitute code for missing/different run-time library 
routines.
 
-   Copyright (C) 1991-1993, 1996-1997, 2001, 2003, 2009, 2010, 2011
+   Copyright (C) 1991-1993, 1996-1997, 2001, 2003, 2009, 2010, 2011, 2014
    the Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
diff --git a/vms/vms_popen.c b/vms/vms_popen.c
index d956811..23482df 100644
--- a/vms/vms_popen.c
+++ b/vms/vms_popen.c
@@ -1,6 +1,7 @@
 /* [.vms]vms_popen.c -- substitute routines for missing pipe calls.
 
-   Copyright (C) 1991-1993, 1996, 2010, 2011 the Free Software Foundation, Inc.
+   Copyright (C) 1991-1993, 1996, 2010, 2011, 2014
+   the Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
diff --git a/vms/vmstest.com b/vms/vmstest.com
index f5c815b..6d46c4d 100644
--- a/vms/vmstest.com
+++ b/vms/vmstest.com
@@ -949,7 +949,12 @@ $  gawk -f nasty.awk >_nasty.tmp
 $      call fixup_LRL nasty.ok
 $      call fixup_LRL _nasty.tmp "purge"
 $      cmp nasty.ok sys$disk:[]_nasty.tmp
-$      if $status then  rm _nasty.tmp;
+$      if $status
+$      then
+$          rm _nasty.tmp;
+$          file = "lcl_root:[]nasty.ok"
+$          if f$search(file) .nes. "" then rm 'file';*
+$      endif
 $      set On
 $      return
 $
@@ -959,7 +964,12 @@ $  gawk -f nasty2.awk >_nasty2.tmp
 $      call fixup_LRL nasty2.ok
 $      call fixup_LRL _nasty2.tmp "purge"
 $      cmp nasty2.ok sys$disk:[]_nasty2.tmp
-$      if $status then  rm _nasty2.tmp;
+$      if $status
+$      then
+$          rm _nasty2.tmp;
+$          file = "lcl_root:[]nasty2.ok"
+$          if f$search(file) .nes. "" then rm 'file';*
+$      endif
 $      set On
 $      return
 $
@@ -981,7 +991,6 @@ $   set noOn
 $      gawk -f 'test'.awk >_'test'.tmp 2>&1
 $      if .not. $status then call exit_code '$status' _'test'.tmp
 $      set On
-$      diff 'test'.ok sys$disk:[]_'test'.tmp/out='test'.diff
 $      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
@@ -1770,7 +1779,7 @@ World!
 $      endif
 $      gawk /Commands="BEGIN { print ""World!"" }" _NL: /Output=_vms_cmd.tmp
 $      cmp vms_cmd.ok sys$disk:[]_vms_cmd.tmp
-$      if $status then  rm _vms_cmd.tmp;
+$      if $status then  rm _vms_cmd.tmp;,vms_cmd.ok;*
 $      return
 $
 $vms_io1:      echo "vms_io1"
@@ -1783,7 +1792,7 @@ $ gawk -f - >_vms_io1.tmp
 # prior to 3.0.4, gawk crashed doing any redirection after closing stdin
 BEGIN { print "Hello" >"/dev/stdout" }
 $      cmp vms_io1.ok sys$disk:[]_vms_io1.tmp
-$      if $status then  rm _vms_io1.tmp;
+$      if $status then  rm _vms_io1.tmp;,vms_io1.ok;*
 $      return
 $
 $vms_io2:      echo "vms_io2"
@@ -1811,7 +1820,7 @@ $ set On
 $      cmp _NL: sys$disk:[]_vms_io2.tmp
 $      if $status then  rm _vms_io2.tmp;
 $      cmp vms_io2.ok sys$disk:[]_vms_io2.vfc
-$      if $status then  rm _vms_io2.vfc;*
+$      if $status then  rm _vms_io2.vfc;*,vms_io2.ok;*
 $      return
 $!
 $!
@@ -1859,7 +1868,7 @@ $ if .not. $status then call exit_code '$status' 
_'test'.tmp
 $      set On
 $      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then rm _'test'.tmp;
-$      if f$search(filefunc_file) .nes. "" then rm 'filefunc_file';
+$      if f$search(filefunc_file) .nes. "" then rm 'filefunc_file';*
 $      return
 $!
 $rwarray:
@@ -1877,7 +1886,7 @@ $     write tout "old and new are equal - GOOD"
 $          close tout
 $      endif
 $      cmp 'test'.ok sys$disk:[]_'test'.tmp
-$      if $status then rm _'test'.tmp;,orig.out;,new.out;
+$      if $status then rm _'test'.tmp;,orig.bin;,orig.out;,new.out;
 $      return
 $!
 $readdir:
@@ -1890,6 +1899,8 @@ $ if .not. $status
 $      then
 $          call exit_code '$status' _'test'.tmp
 $          write sys$output _'test'.tmp
+$      else
+$          rm _'test'.tmp;*,_'test'.;*
 $      endif
 $      set On
 $      return

-----------------------------------------------------------------------

Summary of changes:
 vms/ChangeLog                    |   36 ++++
 vms/backup_gawk_src.com          |  113 ++++++++++
 vms/build_gawk_pcsi_desc.com     |  428 ++++++++++++++++++++++++++++++++++++++
 vms/build_gawk_pcsi_text.com     |  179 ++++++++++++++++
 vms/build_gawk_release_notes.com |   67 ++++++
 vms/compare_gawk_source.com      |  367 ++++++++++++++++++++++++++++++++
 vms/config_h.com                 |   35 ++--
 vms/descrip.mms                  |   17 ++
 vms/gawk_alias_setup.com         |  110 ++++++++++
 vms/gawk_build_steps.txt         |  220 +++++++++++++++++++
 vms/gawk_release_note_start.txt  |  189 +++++++++++++++++
 vms/gawk_verb.com                |   26 +++
 vms/gawkmisc.vms                 |    3 +-
 vms/gnv_gawk_startup.com         |   75 +++++++
 vms/make_pcsi_gawk_kit_name.com  |  189 +++++++++++++++++
 vms/pcsi_gawk_file_list.txt      |  120 +++++++++++
 vms/pcsi_product_gawk.com        |  187 +++++++++++++++++
 vms/remove_old_gawk.com          |  113 ++++++++++
 vms/stage_gawk_install.com       |  300 ++++++++++++++++++++++++++
 vms/vms_args.c                   |    2 +-
 vms/vms_cli.c                    |    2 +-
 vms/vms_fwrite.c                 |    2 +-
 vms/vms_gawk.c                   |    3 +-
 vms/vms_misc.c                   |    2 +-
 vms/vms_popen.c                  |    3 +-
 vms/vmstest.com                  |   27 ++-
 26 files changed, 2787 insertions(+), 28 deletions(-)
 create mode 100644 vms/backup_gawk_src.com
 create mode 100644 vms/build_gawk_pcsi_desc.com
 create mode 100644 vms/build_gawk_pcsi_text.com
 create mode 100644 vms/build_gawk_release_notes.com
 create mode 100644 vms/compare_gawk_source.com
 create mode 100644 vms/gawk_alias_setup.com
 create mode 100644 vms/gawk_build_steps.txt
 create mode 100644 vms/gawk_release_note_start.txt
 create mode 100644 vms/gawk_verb.com
 create mode 100644 vms/gnv_gawk_startup.com
 create mode 100644 vms/make_pcsi_gawk_kit_name.com
 create mode 100644 vms/pcsi_gawk_file_list.txt
 create mode 100644 vms/pcsi_product_gawk.com
 create mode 100644 vms/remove_old_gawk.com
 create mode 100644 vms/stage_gawk_install.com


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]