1$! File: Build_GNV_curl_pcsi_text.com
2$!
3$! Build the *.pcsi$text file from the four components:
4$!    1. Generated =product header section
5$!    2. [--]readme. file from the Curl distribution, modified to fit
6$!       a pcsi$text file format.
7$!    3. [--]copying file from the Curl distribution, modified to fit
8$!       a pcsi$text file format.
9$!    4. Generated Producer section.
10$!
11$! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
12$!
13$! Copyright (C) John Malmberg
14$!
15$! Permission to use, copy, modify, and/or distribute this software for any
16$! purpose with or without fee is hereby granted, provided that the above
17$! copyright notice and this permission notice appear in all copies.
18$!
19$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
20$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
21$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
22$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
23$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
24$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
25$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
26$!
27$! SPDX-License-Identifier: ISC
28$!
29$!===========================================================================
30$!
31$ kit_name = f$trnlnm("GNV_PCSI_KITNAME")
32$ if kit_name .eqs. ""
33$ then
34$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
35$   goto all_exit
36$ endif
37$ producer = f$trnlnm("GNV_PCSI_PRODUCER")
38$ if producer .eqs. ""
39$ then
40$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
41$   goto all_exit
42$ endif
43$ producer_full_name = f$trnlnm("GNV_PCSI_PRODUCER_FULL_NAME")
44$ if producer_full_name .eqs. ""
45$ then
46$   write sys$output "@MAKE_PCSI_CURL_KIT_NAME.COM has not been run."
47$   goto all_exit
48$ endif
49$!
50$!
51$! Parse the kit name into components.
52$!---------------------------------------
53$ producer = f$element(0, "-", kit_name)
54$ base = f$element(1, "-", kit_name)
55$ product = f$element(2, "-", kit_name)
56$ mmversion = f$element(3, "-", kit_name)
57$ majorver = f$extract(0, 3, mmversion)
58$ minorver = f$extract(3, 2, mmversion)
59$ updatepatch = f$element(4, "-", kit_name)
60$ if updatepatch .eqs. "-" then updatepatch = ""
61$!
62$!
63$ product_line = "=product ''producer' ''base' ''product'"
64$ if updatepatch .eqs. ""
65$ then
66$     product_name = " ''majorver'.''minorver'"
67$ else
68$     product_name = " ''majorver'.''minorver'-''updatepatch'"
69$ endif
70$ product_line = product_line + " ''product_name' full"
71$!
72$!
73$! If this is VAX and the file is on NFS, the names may be mangled.
74$!-----------------------------------------------------------------
75$ readme_file = ""
76$ if f$search("[--]readme.") .nes. ""
77$ then
78$   readme_file = "[--]readme."
79$ else
80$   if f$search("[--]$README.") .nes. ""
81$   then
82$       readme_file = "[--]$README."
83$   else
84$       write sys$output "Can not find readme file."
85$       goto all_exit
86$   endif
87$ endif
88$ copying_file = ""
89$ if f$search("[--]copying.") .nes. ""
90$ then
91$   copying_file = "[--]copying."
92$ else
93$   if f$search("[--]$COPYING.") .nes. ""
94$   then
95$       copying_file = "[--]$COPYING."
96$   else
97$       write sys$output "Can not find copying file."
98$       goto all_exit
99$   endif
100$ endif
101$!
102$! Create the file as a VMS text file.
103$!----------------------------------------
104$ base_file = kit_name
105$ create 'base_file'.pcsi$text
106$!
107$!
108$! Start building file.
109$!----------------------
110$ open/append ptxt 'base_file'.pcsi$text
111$ write ptxt product_line
112$!
113$!
114$! First insert the Readme file.
115$!
116$ open/read rf 'readme_file'
117$!
118$ write ptxt "1 'PRODUCT"
119$ write ptxt "=prompt ''producter' ''product' for OpenVMS"
120$!
121$rf_loop:
122$   read/end=rf_loop_end rf line_in
123$   if line_in .nes. ""
124$   then
125$!    PCSI files use the first character in for their purposes.
126$!--------------------------------------------------------------
127$     first_char = f$extract(0, 1, line_in)
128$     if first_char .nes. " " then line_in = " " + line_in
129$   endif
130$   write ptxt line_in
131$   goto rf_loop
132$rf_loop_end:
133$ close rf
134$!
135$!
136$! Now add in the copying file
137$!--------------------------------
138$ write ptxt ""
139$ write ptxt "1 'NOTICE"
140$ write ptxt ""
141$!
142$ open/read cf 'copying_file'
143$!
144$cf_loop:
145$   read/end=cf_loop_end cf line_in
146$   if line_in .nes. ""
147$   then
148$!    PCSI files use the first character in for their purposes.
149$!--------------------------------------------------------------
150$     first_char = f$extract(0, 1, line_in)
151$     if first_char .nes. " " then line_in = " " + line_in
152$   endif
153$   write ptxt line_in
154$   goto cf_loop
155$cf_loop_end:
156$ close cf
157$!
158$! Now we need the rest of the boiler plate.
159$!--------------------------------------------
160$ write ptxt ""
161$ write ptxt "1 'PRODUCER"
162$ write ptxt "=prompt ''producer_full_name'"
163$ write ptxt -
164 "This software product is provided by ''producer_full_name' with no warranty."
165$!
166$ arch_type = f$getsyi("ARCH_NAME")
167$ node_swvers = f$getsyi("node_swvers")
168$ vernum = f$extract(1, f$length(node_swvers), node_swvers)
169$ majver = f$element(0, ".", vernum)
170$ minverdash = f$element(1, ".", vernum)
171$ minver = f$element(0, "-", minverdash)
172$ dashver = f$element(1, "-", minverdash)
173$ if dashver .eqs. "-" then dashver = ""
174$ vmstag = majver + minver + dashver
175$ code = f$extract(0, 1, arch_type)
176$!
177$ write ptxt "1 NEED_VMS''vmstag'"
178$ write ptxt -
179   "=prompt OpenVMS ''vernum' or later is not installed on your system."
180$ write ptxt "This product requires OpenVMS ''vernum' or later to function."
181$ write ptxt "1 NEED_ZLIB"
182$ write ptxt "=prompt ZLIB 1.2-8 or later is not installed on your system."
183$ write ptxt "This product requires ZLIB 1.2-8 or later to function."
184$ write ptxt "1 SOURCE"
185$ write ptxt "=prompt Source modules for ''product'"
186$ write ptxt "The Source modules for ''product' will be installed."
187$ write ptxt "1 RELEASE_NOTES"
188$ write ptxt "=prompt Release notes are available in the [SYSHLP] directory."
189$!
190$ close ptxt
191$!
192$!
193$!
194$all_exit:
195$ exit
196