1$!
2$! @(#)installvms.com	7.31 04/04/20
3$!
4$! Top-level installation command procedure for OpenVMS
5$! See the INSTALL.VMS file for details.
6$! OpenVMS versions: 6.0 and later, tested with 7.2 and 7.3 on VAX(tm) machines
7$!                   and 7.2-1 as well as 7.3-1 on Alpha(tm) machines
8$!
9$!      xmcd   - Motif(R) CD Audio Player/Ripper
10$!
11$!   Copyright (C) 1993-2004  Ti Kan
12$!   E-mail: xmcd@amb.org
13$!   Contributing author: Michael Monscheuer
14$!   E-mail: M.Monscheuer@t-online.de
15$!
16$!   This program is free software; you can redistribute it and/or modify
17$!   it under the terms of the GNU General Public License as published by
18$!   the Free Software Foundation; either version 2 of the License, or
19$!   (at your option) any later version.
20$!
21$!   This program is distributed in the hope that it will be useful,
22$!   but WITHOUT ANY WARRANTY; without even the implied warranty of
23$!   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24$!   GNU General Public License for more details.
25$!
26$!   You should have received a copy of the GNU General Public License
27$!   along with this program; if not, write to the Free Software
28$!   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29$!
30$!=============================================================================
31$!
32$!
33$! If xmcd.exe already exists in the xmcd_d directory and a further
34$! compilation of the sources is NOT desired, you may pass the text
35$! string "install" as P1 to this procedure to only install xmcd.
36$!
37$! You need to specify "install" as P1 if you intend to install
38$! a precompiled binary kit.
39$!
40$! In case you want to only compile and link the image, pass the
41$! the text string "compile" as P1 to this procedure.
42$!
43$! Passing no parameters to this procedure will result in compiling,
44$! linking, and installing xmcd. P1 is not case sensitive.
45$!
46$! This procedure also will generate Local Discography category
47$! index files in HTML format. Furthermore it will convert pre-v3.x
48$! CD related HTML index files to the xmcd v3.x standard.
49$!
50$! Running this procedure again after some failure or interruption
51$! is supported. It is expected to recognize what it is meant to do.
52$!
53$!
54$	SET NOON
55$	P1 = F$EXTRACT(0,1,F$EDIT(P1,"UPCASE,COLLAPSE"))
56$	IF F$TRNLNM("LMF$DEC_C","LMF$LICENSE_TABLE") .EQS. "" .AND. P1 .NES. "I"
57$	 THEN
58$	  WRITE SYS$OUTPUT ""
59$	  WRITE SYS$OUTPUT "  This node does not have a C compiler license loaded."
60$	  WRITE SYS$OUTPUT "  Building the xmcd executable is not possible."
61$	  WRITE SYS$OUTPUT ""
62$	  EXIT
63$	ENDIF
64$	ENVI = F$ENVIRONMENT("DEFAULT")
65$	USEN = F$ENVIRONMENT("DEFAULT")
66$	IF F$LOCATE("<",ENVI) .NE. F$LENGTH(ENVI) THEN SET DEFAULT []
67$	ENVI = F$ENVIRONMENT("DEFAULT")
68$!
69$! Resolve concealed logical, if necessary.
70$!
71$	ENVD = F$PARSE(ENVI,,,"DEVICE") - ":"
72$	IF F$TRNLNM(ENVD,,,,,"CONCEALED")
73$	 THEN
74$	  CCLD = F$TRNLNM(ENVD)
75$	  IF F$LOCATE("[",CCLD) .EQ. F$LENGTH(CCLD)
76$	   THEN
77$	    ENVI = F$TRNLNM(ENVD) + F$PARSE(ENVI,,,"DIRECTORY")
78$	   ELSE
79$	    ENVI = F$TRNLNM(ENVD) - "]" + (F$PARSE(ENVI,,,"DIRECTORY") - "[")
80$	  ENDIF
81$	ENDIF
82$!
83$	IF F$VERIFY()
84$	 THEN
85$	  ESC = "<ESC>"
86$	  BEL = "<BEL>"
87$	  CR  = "<CR>"
88$	  LF  = "<LF>"
89$	 ELSE
90$	  BEL[0,8]=7
91$	  LF[0,8]=10
92$	  CR[0,8]=13
93$	  ESC[0,8]=27
94$	ENDIF
95$	WRITE SYS$OUTPUT ""
96$	WRITE SYS$OUTPUT "  This is free software and comes with no warranty."
97$	WRITE SYS$OUTPUT "  See the GNU General Public License in the COPYING file for details.''CR'''LF'"
98$	WRITE SYS$OUTPUT "  This software contains support for the Gracenote CDDB(R) Disc"
99$	WRITE SYS$OUTPUT "  Recognition Service.  See the CDDB file in the DOCS area for information.''CR'''LF'"
100$	INQUIRE/NOPUNCTATION DUMMY "''ESC'[28C''ESC'[7mPress Return to continue''ESC'[0m"
101$	WRITE SYS$OUTPUT "''ESC'[0;0H''ESC'[2J''CR'''LF'  Beginning INSTALLVMS.COM at ''F$CVTIME(,"ABSOLUTE",)'"
102$	WRITE SYS$OUTPUT " ----------------------------------------------------''CR'''LF'"
103$	IF P1 .EQS. ""
104$	 THEN
105$	  WRITE SYS$OUTPUT "  This procedure will first compile and link the sources."
106$	  WRITE SYS$OUTPUT "  Then it will install xmcd on your system."
107$	 ELSE
108$	  IF P1 .EQS. "C"
109$	   THEN
110$	    WRITE SYS$OUTPUT "  This procedure will compile and link the sources."
111$	    WRITE SYS$OUTPUT "  An installation of xmcd on your system will not be done."
112$	   ELSE
113$	    WRITE SYS$OUTPUT "  This procedure will install xmcd on your system."
114$	    WRITE SYS$OUTPUT "  A new xmcd image file will not be created."
115$	  ENDIF
116$	ENDIF
117$	WRITE SYS$OUTPUT ""
118$	WRITE SYS$OUTPUT "  Checking environment for presence of CDDA components ..."
119$!
120$! Check for presence of MMOV (MultiMedia services for OpenVms, aka mme on
121$! unix) if running on an Alpha machine.
122$!
123$	MMOVRTL = 0
124$	MMOVRTF = 0
125$	MMOVDVL = 0
126$	MMOVDVF = 0
127$	IF F$GETSYI("ARCH_NAME") .EQS. "Alpha"
128$	 THEN
129$	  IF F$TRNLNM("LMF$DEC_MMOV-RT","LMF$LICENSE_TABLE") .NES. "" THEN MMOVRTL = 1
130$	  IF F$SEARCH("SYS$SYSTEM:MMOV$AUDIO*.EXE")          .NES. "" THEN MMOVRTF = 1
131$	  IF F$TRNLNM("LMF$DEC_MMOV-DV","LMF$LICENSE_TABLE") .NES. "" THEN MMOVDVL = 1
132$	  IF F$SEARCH("SYS$COMMON:[MMOV_INCLUDES]*.*")       .NES. "" THEN MMOVDVF = 1
133$	ENDIF
134$!
135$! Check for presence of LAME MP3 encoder
136$!
137$	LAME = 0
138$	LAMELOCA = F$SEARCH("[000000...]LAME.EXE")
139$	IF LAMELOCA .EQS. "" THEN LAMELOCA = F$SEARCH("SYS$SYSTEM:LAME.EXE")
140$	IF LAMELOCA .NES. ""
141$	 THEN
142$	  MESENV = F$ENVIRONMENT("MESSAGE")
143$	  SET MESSAGE/NOTEXT/NOSEVERITY/NOFACILITY/NOIDENTIFICATION
144$	  DEFINE SYS$ERROR LAMEOUT.TMP
145$	  MC 'LAMELOCA'
146$	  DEASSIGN SYS$ERROR
147$	  SET MESSAGE 'MESENV'
148$	  IF F$SEARCH("LAMEOUT.TMP") .NES. ""
149$	   THEN
150$	    OPEN/READ 99 LAMEOUT.TMP
151$	    READ  99 LINE
152$	    CLOSE 99
153$	    DELETE/NOCONFIRM LAMEOUT.TMP;*
154$	    IF F$EXTRACT(0,4,LINE) .EQS. "LAME" THEN LAME = 1
155$	  ENDIF
156$	ENDIF
157$	WRITE SYS$OUTPUT "''ESC'[2A''ESC'[0J"
158$
159$	IF P1 .NES. "C"
160$	 THEN
161$	  WRITE SYS$OUTPUT "  Prerequisite for a successful completion of this installation"
162$	  WRITE SYS$OUTPUT "  is write access to SYS$SYSTEM:. If write access to SYS$SYTEM:"
163$	  WRITE SYS$OUTPUT "  is not available, a personal installation for user"
164$	  WRITE SYS$OUTPUT "  ''F$EDIT(F$GETJPI("","USERNAME"),"COLLAPSE")' will be created.''CR'''LF'"
165$	  WRITE SYS$OUTPUT "  To run xmcd you need the DIAGNOSE and PHY_IO privileges."
166$	  WRITE SYS$OUTPUT "  To use xmcd's WWWwarp features you need the CMKRNL privilege."
167$	  WRITE SYS$OUTPUT "  For further details regarding privileges see the INSTALL.VMS file.''CR'''LF'"
168$	  WRITE SYS$OUTPUT "  Please be prepared to answer a few simple questions regarding''CR'''LF'"
169$	  WRITE SYS$OUTPUT "   - device names"
170$	  IF LAME
171$	   THEN
172$	    WRITE SYS$OUTPUT "   - previously installed versions of xmcd and"
173$	    WRITE SYS$OUTPUT "   - web browser(s) installed on your system''CR'''LF'"
174$	   ELSE
175$	    WRITE SYS$OUTPUT "   - previously installed versions of xmcd"
176$	    WRITE SYS$OUTPUT "   - the presence of the LAME MP3 encoder and"
177$	    WRITE SYS$OUTPUT "   - web browser(s) installed on your system''CR'''LF'"
178$	  ENDIF
179$	ENDIF
180$	INQUIRE/NOPUNCTATION DUMMY "''ESC'[20C''ESC'[7mPress Return to continue or ^Y to abort''ESC'[0m"
181$	WRITE SYS$OUTPUT "''ESC'[1A''ESC'[2K"
182$!
183$! Check whether this procedure is run from the correct directory.
184$!
185$	IF F$SEARCH("DOCS_D.DIR") .EQS. "" .AND. F$SEARCH("DOCS.DIR") .EQS. ""
186$	 THEN
187$	  WRITE SYS$OUTPUT "''CR'''LF'''BEL'  It seems your current default directory is not the"
188$	  WRITE SYS$OUTPUT "  one it should be.''CR'''LF'''BEL'"
189$	  WRITE SYS$OUTPUT "  Please SET DEFAULT to the xmcd top-level directory"
190$	  WRITE SYS$OUTPUT "  and run this procedure again.''CR'''LF'''BEL'"
191$	  GOTO ENDEX
192$	ENDIF
193$	IF P1 .EQS. "I" THEN GOTO NO_CC
194$	IF P1 .EQS. "C" THEN GOTO INQSSP
195$!
196$! Check whether user knows what he's going to do.
197$!
198$ INQRNR:
199$	INQUIRE RNR "  Did you read the installation notes in INSTALL.VMS ? (Y/N)"
200$	RNR = F$EXTRACT(0,1,F$EDIT(RNR,"UPCASE,COLLAPSE"))
201$	IF RNR .NES. "Y" .AND. RNR .NES. "N" THEN GOTO INQRNR
202$	IF .NOT. RNR
203$	 THEN
204$ INQRTN:
205$	  INQUIRE RTN "  Do you want to read them now ? (Y/N)"
206$	  RTN = F$EXTRACT(0,1,F$EDIT(RTN,"UPCASE,COLLAPSE"))
207$	  IF RTN .NES. "Y" .AND. RTN .NES. "N" THEN GOTO INQRTN
208$	  IF .NOT. RTN THEN GOTO INQBKP
209$	  INSTNOTES = F$SEARCH("[...]INSTALL.VMS")
210$	  TYPE/PAGE 'INSTNOTES'
211$	ENDIF
212$ INQBKP:
213$	WRITE SYS$OUTPUT "''CR'''LF'"
214$	WRITE SYS$OUTPUT "  This procedure may move directory trees."
215$	INQUIRE BKP "  Are you satisfied with the backups of your disks ? (Y/N)"
216$	BKP = F$EXTRACT(0,1,F$EDIT(BKP,"UPCASE,COLLAPSE"))
217$	IF BKP .NES. "Y" .AND. BKP .NES. "N" THEN GOTO INQBKP
218$	IF .NOT. BKP
219$	 THEN
220$	  WRITE SYS$OUTPUT "''CR'''LF'  Please correct the situation and backup your disks first before"
221$	  WRITE SYS$OUTPUT "  installing xmcd. ''CR'''LF'''CR'''LF'"
222$	  GOTO ENDEX
223$	ENDIF
224$ INQSSP:
225$	MAKEVMS_MOD = 0
226$	WRITE SYS$OUTPUT "''CR'''LF'"
227$	WRITE SYS$OUTPUT "  If you want the Gracenote CDDB(R) Disc Recognition Service"
228$	WRITE SYS$OUTPUT "  (remote CD database) functionality being disabled, answer NO to"
229$	WRITE SYS$OUTPUT "  the following question."
230$	WRITE SYS$OUTPUT "  You need to answer with NO in case your system has no TCP/IP and"
231$	WRITE SYS$OUTPUT "  socket support.''CR'''LF'"
232$	INQUIRE SSP "  Do you want the remote CD database functionality being enabled ? (Y/N)"
233$	SSP = F$EXTRACT(0,1,F$EDIT(SSP,"UPCASE,COLLAPSE"))
234$	IF SSP .NES. "Y" .AND. SSP .NES. "N" THEN GOTO INQSSP
235$	IF SSP .EQS. "N"
236$	 THEN
237$	  OPEN/WRITE 97 NOCDDB.EDT
238$	  WRITE 97 "SUBSTITUTE/def=(/def=(noremote,/WHOLE"
239$	  WRITE 97 "EXIT"
240$	  CLOSE 97
241$	  DEFINE/NOLOG SYS$INPUT SYS$COMMAND
242$	  DEFINE/NOLOG SYS$OUTPUT NLA0:
243$	  EDITTT/EDT/COMMAND=NOCDDB.EDT MAKEVMS.COM
244$	  DEASSIGN SYS$OUTPUT
245$	  DEASSIGN SYS$INPUT
246$	  DELETE/NOCONFIRM NOCDDB.EDT;*
247$	  MAKEVMS_MOD = MAKEVMS_MOD + 1
248$	ENDIF
249$!
250$! Cleanup XMCD_D directory first, then compile and link.
251$! If compiling or linking failed, revert cleanup if applicable.
252$!
253$	IF F$SEARCH("[.XMCD_D]XMCD.EXE") .NES. "" THEN RENAME [.XMCD_D]XMCD.EXE;* [.XMCD_D]XMCD_OLD.EXE
254$
255$!
256$! If running on Alpha, determine how to compile in regard to MMOV kits and licenses.
257$!
258$	IF F$GETSYI("ARCH_NAME") .EQS. "Alpha"
259$	 THEN
260$	  IF MMOVRTL + MMOVRTF + MMOVDVL + MMOVDVF .NE. 4
261$	   THEN
262$	    WRITE SYS$OUTPUT "''CR'''LF'"
263$	    WRITE SYS$OUTPUT "  Playing CDDA audio on your machine's audio device requires the following"
264$	    WRITE SYS$OUTPUT "  MMOV (MultiMedia for OpenVMS) prerequisites:"
265$	    WRITE SYS$OUTPUT ""
266$	    IF MMOVRTF THEN WRITE SYS$OUTPUT "   - The MMOV runtime kit"
267$	    IF .NOT. MMOVRTF THEN WRITE SYS$OUTPUT "   - The MMOV runtime kit         *"
268$	    IF MMOVRTL THEN WRITE SYS$OUTPUT "   - The MMOV runtime license"
269$	    IF .NOT. MMOVRTL THEN WRITE SYS$OUTPUT "   - The MMOV runtime license     *"
270$	    IF MMOVDVF THEN WRITE SYS$OUTPUT "   - The MMOV development kit"
271$	    IF .NOT. MMOVDVF THEN WRITE SYS$OUTPUT "   - The MMOV development kit     *"
272$	    IF MMOVDVL THEN WRITE SYS$OUTPUT "   - The MMOV development license"
273$	    IF .NOT. MMOVDVL THEN WRITE SYS$OUTPUT "   - The MMOV development license *"
274$	    WRITE SYS$OUTPUT ""
275$	    WRITE SYS$OUTPUT "  The items marked with an asterisk (*) don't seem to be present on your system."
276$	    WRITE SYS$OUTPUT "  A xmcd executable with CDDA play audio support cannot be compiled."
277$	    WRITE SYS$OUTPUT "  You may now continue to compile a xmcd version which only supports saving"
278$	    WRITE SYS$OUTPUT "  CDDA audio to files or you may exit this procedure to install the required"
279$	    WRITE SYS$OUTPUT "  kits and licenses."
280$	    WRITE SYS$OUTPUT ""
281$ INQCOWOMO:
282$	    INQUIRE COWOMO "  Do you want to continue without CDDA play audio support ? (Y/N)
283$	    COWOMO = F$EXTRACT(0,1,F$EDIT(COWOMO,"UPCASE,COLLAPSE"))
284$	    IF COWOMO .NES. "Y" .AND. COWOMO .NES. "N" THEN GOTO INQCOWOMO
285$	    IF COWOMO .EQS. "N"
286$	     THEN
287$	      WRITE SYS$OUTPUT ""
288$	      WRITE SYS$OUTPUT "  Please refer to the file INSTALL.VMS in the [.docs] directory regarding"
289$	      WRITE SYS$OUTPUT "  a correct installation of MMOV."
290$	      WRITE SYS$OUTPUT ""
291$	      GOTO ENDEX
292$	    ENDIF
293$	    OPEN/WRITE 98 NOMMOV.EDT
294$	    WRITE 98 "SUBSTITUTE/has_mme,//WHOLE"
295$	    WRITE 98 "FIND '$ write out ""! mmov (aka mme)'"
296$	    WRITE 98 "DELETE"
297$	    WRITE 98 "FIND '$ write out ""sys$sysdevice:[sys0.syscommon.syslib]mmov.olb'"
298$	    WRITE 98 "DELETE"
299$	    WRITE 98 "EXIT"
300$	    CLOSE 98
301$	    DEFINE/NOLOG SYS$INPUT SYS$COMMAND
302$	    DEFINE/NOLOG SYS$OUTPUT NLA0:
303$	    EDITTT/EDT/COMMAND=NOMMOV.EDT MAKEVMS.COM
304$	    DEASSIGN SYS$OUTPUT
305$	    DEASSIGN SYS$INPUT
306$	    DELETE/NOCONFIRM NOMMOV.EDT;*
307$	    MAKEVMS_MOD = MAKEVMS_MOD + 1
308$	   ELSE
309$	    IF F$TRNLNM("MME") .EQS. ""
310$	     THEN
311$	      DEFINE/SYSTEM/EXEC/NOLOG MME MMOV$INCLUDE
312$	      WRITE SYS$OUTPUT ""
313$	      WRITE SYS$OUTPUT "  The logical name MME was not found to be defined on your system."
314$	      WRITE SYS$OUTPUT "  It is required for the MMOV development software and has now been defined"
315$	      WRITE SYS$OUTPUT "  temporarily."
316$	      WRITE SYS$OUTPUT "  Please add the following command to SYS$COMMON:[SYS$STARTUP]MMOV$STARTUP.COM:"
317$	      WRITE SYS$OUTPUT ""
318$	      WRITE SYS$OUTPUT "  $DEFINE/SYSTEM/EXEC/NOLOG MME MMOV$INCLUDE"
319$	      WRITE SYS$OUTPUT ""
320$	      INQUIRE/NOPUNCTATION DUMMY "''ESC'[20C''ESC'[7mPress Return to continue or ^Y to abort''ESC'[0m"
321$	      WRITE SYS$OUTPUT "''ESC'[1A''ESC'[2K"
322$	    ENDIF
323$	  ENDIF
324$	ENDIF
325$!
326$! If running on VAX, MMOV is not available.
327$!
328$	IF F$GETSYI("ARCH_NAME") .EQS. "VAX"
329$	 THEN
330$	  OPEN/WRITE 98 NOMMOV.EDT
331$	  WRITE 98 "SUBSTITUTE/has_mme,//WHOLE"
332$	  WRITE 98 "FIND '$ write out ""! mmov (aka mme)'"
333$	  WRITE 98 "DELETE"
334$	  WRITE 98 "FIND '$ write out ""sys$sysdevice:[sys0.syscommon.syslib]mmov.olb'"
335$	  WRITE 98 "DELETE"
336$	  WRITE 98 "EXIT"
337$	  CLOSE 98
338$	  DEFINE/NOLOG SYS$INPUT SYS$COMMAND
339$	  DEFINE/NOLOG SYS$OUTPUT NLA0:
340$	  EDITTT/EDT/COMMAND=NOMMOV.EDT MAKEVMS.COM
341$	  DEASSIGN SYS$OUTPUT
342$	  DEASSIGN SYS$INPUT
343$	  DELETE/NOCONFIRM NOMMOV.EDT;*
344$	  MAKEVMS_MOD = MAKEVMS_MOD + 1
345$	ENDIF
346$!
347$! Check for VMS version. Modify compilation commands if pthreads not available
348$!
349$	IF F$GETSYI("VERSION") .LES. "V7.0"
350$	 THEN
351$	  OPEN/WRITE 96 NOPTHR.EDT
352$	  WRITE 96 "SUBSTITUTE/,use_pthread_delay_np//WHOLE"
353$	  WRITE 96 "SUBSTITUTE/has_pthreads/no_pthreads/WHOLE"
354$	  WRITE 96 "EXIT"
355$	  CLOSE 96
356$	  DEFINE/NOLOG SYS$INPUT SYS$COMMAND
357$	  DEFINE/NOLOG SYS$OUTPUT NLA0:
358$	  EDITTT/EDT/COMMAND=NOPTHR.EDT MAKEVMS.COM
359$	  DEASSIGN SYS$OUTPUT
360$	  DEASSIGN SYS$INPUT
361$	  DELETE/NOCONFIRM NOPTHR.EDT;*
362$	  MAKEVMS_MOD = MAKEVMS_MOD + 1
363$	ENDIF
364$
365$	WRITE SYS$OUTPUT "''ESC'[0;0H''ESC'[2J''CR'''LF'  Starting compilation of source code...''CR'''LF'"
366$	@MAKEVMS
367$	SET DEFAULT 'ENVI'
368$ RMMK:
369$	IF MAKEVMS_MOD .NE. 0 THEN DELETE/NOCONFIRM MAKEVMS.COM;0
370$	MAKEVMS_MOD = MAKEVMS_MOD - 1
371$	IF MAKEVMS_MOD .GE. 0 THEN GOTO RMMK
372$	IF F$SEARCH("[.XMCD_D]XMCD.EXE") .EQS. ""
373$	 THEN
374$	  IF F$SEARCH("[.XMCD_D]XMCD_OLD.EXE") .NES. "" THEN RENAME [.XMCD_D]XMCD_OLD.EXE;* [.XMCD_D]XMCD.EXE
375$	  WRITE SYS$OUTPUT "''CR'''LF'  Compiling and linking the xmcd executable failed."
376$	  WRITE SYS$OUTPUT "  Installation of xmcd aborted.''CR'''LF'''CR'''LF'"
377$	  GOTO ENDEX
378$	ENDIF
379$	WRITE SYS$OUTPUT "''CR'''LF'  Compiling and linking the xmcd executable completed successfully"
380$	IF P1 .EQS. "C"
381$	 THEN
382$	  WRITE SYS$OUTPUT "  at ''F$CVTIME(,"ABSOLUTE",)'''CR'''LF'"
383$	  GOTO ENDEX
384$	ENDIF
385$ NO_CC:
386$	IF F$SEARCH("[.XMCD_D]XMCD.EXE") .NES. "" THEN RENAME [.XMCD_D]XMCD.EXE []
387$	CMDDEF = "XMCD :== $''ENVI'XMCD.EXE"
388$!
389$! Determine XMCD_LIBDIR logical and add definition of logicals to
390$! user's LOGIN.COM
391$!
392$	LIBDIR = ENVI  -"]"
393$	SET DEFAULT SYS$LOGIN
394$	IF F$SEARCH("LOGIN.COM") .EQS. ""
395$	 THEN
396$	  WRITE SYS$OUTPUT ""
397$	  WRITE SYS$OUTPUT "  You don't seem to have SYS$LOGIN:LOGIN.COM executed as the default"
398$	  WRITE SYS$OUTPUT "  procedure when logging into the system."
399$	  WRITE SYS$OUTPUT "  Please include the LOGIN.COM now being created into your default login"
400$	  WRITE SYS$OUTPUT "  procedure after completion of this procedure."
401$	  WRITE SYS$OUTPUT ""
402$	ENDIF
403$	IF .NOT. LAME
404$	 THEN
405$	  WRITE SYS$OUTPUT ""
406$	  WRITE SYS$OUTPUT "  The LAME MP3 encoder was not found searching the default directories."
407$ INQLMPR:
408$	  INQUIRE LAMEPRES "  Do you have the LAME MP3 encoder installed on your sytem ? (Y/N)"
409$	  LAMEPRES = F$EXTRACT(0,1,F$EDIT(LAMEPRES,"UPCASE,COLLAPSE"))
410$	  IF LAMEPRES .NES. "Y" .AND. LAMEPRES .NES. "N" THEN GOTO INQLMPR
411$	  IF LAMEPRES
412$	   THEN
413$	    WRITE SYS$OUTPUT ""
414$	    WRITE SYS$OUTPUT "  Please enter the complete path including the device name for the LAME"
415$	    WRITE SYS$OUTPUT "  executable now (device:[directory]name.extension)''CR'''LF'"
416$	    INQUIRE LAMELOCA "  The LAME path is"
417$	    IF F$SEARCH(LAMELOCA) .EQS. ""
418$	     THEN
419$	      WRITE SYS$OUTPUT ""
420$	      WRITE SYS$OUTPUT "  Sorry, but the LAME executable is NOT ''LAMELOCA'"
421$	      WRITE SYS$OUTPUT "  Please review your related answers.''CR'''LF'"
422$	      WRITE SYS$OUTPUT ""
423$	      GOTO INQLMPR
424$	     ELSE
425$	      MESENV = F$ENVIRONMENT("MESSAGE")
426$	      SET MESSAGE/NOTEXT/NOSEVERITY/NOFACILITY/NOIDENTIFICATION
427$	      DEFINE SYS$ERROR LAMEOUT.TMP
428$	      MC 'LAMELOCA'
429$	      DEASSIGN SYS$ERROR
430$	      SET MESSAGE 'MESENV'
431$	      IF F$SEARCH("LAMEOUT.TMP") .NES. ""
432$	       THEN
433$	        OPEN/READ 99 LAMEOUT.TMP
434$	        READ  99 LINE
435$	        CLOSE 99
436$	        DELETE/NOCONFIRM LAMEOUT.TMP;*
437$	        IF F$EXTRACT(0,4,LINE) .EQS. "LAME" THEN LAME = 1
438$	      ENDIF
439$	      IF .NOT. LAME
440$	       THEN
441$	        WRITE SYS$OUTPUT ""
442$	        WRITE SYS$OUTPUT "  Sorry, but the LAME executable is NOT ''LAMELOCA'"
443$	        WRITE SYS$OUTPUT "  Please review your related answers.''CR'''LF'"
444$	        WRITE SYS$OUTPUT ""
445$	        GOTO INQLMPR
446$	      ENDIF
447$	    ENDIF
448$	  ENDIF
449$	ENDIF
450$	LIBDIR_D = LIBDIR
451$	IF F$TRNLNM(F$ELEMENT(0,":",LIBDIR)) .NES. "" THEN LIBDIR_D = F$TRNLNM(F$ELEMENT(0,":",LIBDIR)) + F$ELEMENT(1,":",LIBDIR)
452$	OPEN/WRITE 100 LOGIN.ADD
453$	WRITE 100 "$	"
454$	WRITE 100 "$	''CMDDEF'"
455$	WRITE 100 "$	DEFINE/JOB XMCD_LIBDIR ""''LIBDIR'"""
456$	WRITE 100 "$	DEFINE/JOB $DISCOGDIR ''LIBDIR_D'.DISCOG.] /TRANSLATION_ATTRIBUTES=(TERMINAL,CONCEALED)"
457$	IF LAME THEN WRITE 100 "$	LAME_PATH :== ''LAMELOCA'"
458$	WRITE 100 "$	"
459$	CLOSE 100
460$	WRITE SYS$OUTPUT "''CR'''LF'  Next you will automatically enter your LOGIN.COM."
461$	WRITE SYS$OUTPUT "  Then move your cursor to the line where you want the setup commands for"
462$	WRITE SYS$OUTPUT "  the xmcd library and discography directories to be.''CR'''LF'"
463$	WRITE SYS$OUTPUT "  Simply press the key ""PF1"" and then ""I"" to insert the line(s) needed."
464$	WRITE SYS$OUTPUT "  To exit press ""PF1"" and ""E"" then.''CR'''LF'"
465$	WRITE SYS$OUTPUT "  If you are re-running this procedure and already have the correct"
466$	WRITE SYS$OUTPUT "  definitions in your LOGIN.COM, only press ""PF1"" and ""Q"" to quit.''CR'''LF'"
467$	INQUIRE/NOPUNCTATION DUMMY "''ESC'[28C''ESC'[7mPress Return to continue''ESC'[0m"
468$	OPEN/WRITE 116 E.E
469$	WRITE 116 "SET TEXT END ""[EOF]"""
470$	WRITE 116 "SET MODE CHANGE"
471$	WRITE 116 "DEFINE KEY GOLD E AS 'EXT EXIT.'"
472$	WRITE 116 "DEFINE KEY GOLD Q AS 'EXT QUIT.'"
473$	WRITE 116 "DEFINE KEY GOLD I AS ""EXT INCLUDE LOGIN.ADD."""
474$	CLOSE 116
475$	DEFINE/USER/NOLOG SYS$INPUT SYS$COMMAND
476$	EDITTT/EDT/COMMAND=E.E LOGIN.COM
477$	DELETE/NOCONFIRM LOGIN.ADD;*,E.E;*
478$	SET DEFAULT 'ENVI'
479$!
480$! Move basic config files to target directory.
481$! Prompt user to specify a CD drive.
482$!
483$	IF F$SEARCH("[.LIBDI_D]COMMON.CFG") .NES. "" THEN RENAME [.LIBDI_D]COMMON.CFG []
484$	IF F$SEARCH("[.LIBDI_D]DEVICE.CFG") .NES. "" THEN RENAME [.LIBDI_D]DEVICE.CFG []
485$	WRITE SYS$OUTPUT "''CR'''LF'  You now need to specify the CD drive you want to use with xmcd."
486$	WRITE SYS$OUTPUT "  Please enter its name at the following prompt."
487$	WRITE SYS$OUTPUT "  If you are in a VMS cluster environment, you need to"
488$	WRITE SYS$OUTPUT "  specify the full device name, f.i. MYBOX$DKB400:''CR'''LF'"
489$ DEV_NAM:
490$	CDR = ""
491$	INQUIRE CDR "  Please enter the CD drive's device name"
492$	CDR = F$EDIT(CDR,"UPCASE,COLLAPSE")
493$	IF CDR .EQS. "" THEN GOTO DEV_NAM
494$	IF CDR .EQS. "EXIT" THEN GOTO ENDEX
495$	IF .NOT. F$GETDVI(CDR,"EXISTS")
496$	 THEN
497$	  WRITE SYS$OUTPUT "''CR'''LF'  ''BEL'''CDR' is not a valid device name.''BEL'"
498$	  GOTO DEV_NAM
499$	ENDIF
500$!
501$! Apply required changes to config files.
502$!
503$	OPEN/WRITE 120 COMM.MOD
504$	OPEN/WRITE 121 DEVI.MOD
505$	WRITE 120 "device:			''CDR'"
506$	WRITE 121 "devicelist:		''CDR'"
507$	CLOSE 120
508$	CLOSE 121
509$	OPEN/WRITE 130 COMM.EDT
510$	OPEN/WRITE 131 DEVI.EDT
511$	WRITE 130 "FIND 'device:'"
512$	WRITE 131 "FIND 'devicelist:'"
513$	WRITE 130 "DELETE"
514$	WRITE 131 "DELETE"
515$	WRITE 130 "INCLUDE COMM.MOD"
516$	WRITE 131 "INCLUDE DEVI.MOD"
517$	WRITE 130 "EXIT"
518$	WRITE 131 "EXIT"
519$	CLOSE 130
520$	CLOSE 131
521$	WRITE SYS$OUTPUT "''CR'''LF'  Updating basic config files to use ''CDR'..."
522$	DEFINE/NOLOG SYS$INPUT SYS$COMMAND
523$	DEFINE/NOLOG SYS$OUTPUT NLA0:
524$	EDITTT/EDT/COMMAND=COMM.EDT COMMON.CFG
525$	EDITTT/EDT/COMMAND=DEVI.EDT DEVICE.CFG
526$	DEASSIGN SYS$OUTPUT
527$	DEASSIGN SYS$INPUT
528$	DELETE/NOCONFIRM *.EDT;*,*.MOD;*
529$	IF F$GETSYI("VERSION") .LES. "V7" THEN GOTO SETUP_HELP
530$!
531$! Prepare user having to specify the CD drive model.
532$!
533$	DRVMDL = F$GETDVI(CDR,"DEVICE_TYPE_NAME")
534$
535$	WRITE SYS$OUTPUT "''CR'''LF'  You now need to specify your CD drive model."
536$	WRITE SYS$OUTPUT "  This information will be used to apply changes to xmcd's device"
537$	WRITE SYS$OUTPUT "  configuration file which will be necessary to make use of all your"
538$	WRITE SYS$OUTPUT "  CD drive's capabilities."
539$	WRITE SYS$OUTPUT ""
540$	WRITE SYS$OUTPUT "  Your CD drive ''CDR' is considered to be a ''ESC'[7m ''DRVMDL' ''ESC'[0m."
541$	WRITE SYS$OUTPUT ""
542$	WRITE SYS$OUTPUT "  Remember this model type when next being prompted with the drive"
543$	WRITE SYS$OUTPUT "  manufacturer and model type menus.''CR'''LF'"
544$	INQUIRE/NOPUNCTATION DUMMY "''ESC'[28C''ESC'[7mPress Return to continue''ESC'[0m"
545$!
546$! Start the device.cfg configuration procedure
547$!
548$	IF F$SEARCH("[.MISC_D]SELDRIVE.COM") .NES. "" THEN RENAME [.MISC_D]SELDRIVE.COM []
549$	@SELDRIVE.COM "" "NO_ENTRY_TEXT"
550$
551$	WRITE SYS$OUTPUT "''CR'''LF'"
552$
553$ SETUP_HELP:
554$!
555$! Move help and doc files as well as the X resource file to their target directories.
556$!
557$	WRITE SYS$OUTPUT "''CR'''LF'  Setting up help and documentation files..."
558$	IF F$SEARCH("HELP.DIR") .EQS. "" THEN CREATE/DIRECTORY [.HELP]
559$	IF F$SEARCH("[.XMCD_D.HLPFILES]*.*") .NES. "" THEN RENAME [.XMCD_D.HLPFILES]*.* [.HELP]
560$	IF F$SEARCH("DOCS_D.DIR") .NES. "" THEN RENAME DOCS_D.DIR DOCS.DIR
561$	WRITE SYS$OUTPUT "''CR'''LF'  Moving X resources file to target directory..."
562$	COPY/NOLOG [.XMCD_D]XMCD.AD SYS$COMMON:[DECW$DEFAULTS.USER]XMCD.DAT
563$	IF $SEVERITY .NE. 1
564$	 THEN
565$	  WRITE SYS$OUTPUT "''CR'''LF'  Copying the X resources file to DECW$SYSTEM_DEFAULTS failed."
566$	  WRITE SYS$OUTPUT "  Please have your system manager copy XMCD.AD from the XMCD_D area to"
567$	  WRITE SYS$OUTPUT "  SYS$COMMON:[DECW$DEFAULTS.USER]XMCD.DAT on your behalf for a"
568$	  WRITE SYS$OUTPUT "  correct installation."
569$	  WRITE SYS$OUTPUT "  To make xmcd working for only you, the X resources file is copied to"
570$	  WRITE SYS$OUTPUT "  your SYS$LOGIN: directory.''CR''LF'"
571$	  INQUIRE/NOPUNCTATION DUMMY "''BEL'''ESC'[28C''ESC'[7mPress Return to continue''ESC'[0m''BEL'"
572$	  COPY/NOLOG [.XMCD_D]XMCD.AD SYS$LOGIN:XMCD.DAT
573$	  SET FILE/PROT=W:RE SYS$LOGIN:XMCD.DAT
574$	 ELSE
575$	  SET FILE/PROT=W:RE SYS$COMMON:[DECW$DEFAULTS.USER]XMCD.DAT
576$	  IF F$SEARCH("SYS$LOGIN:XMCD.DAT") .NES. ""
577$	   THEN
578$	    WRITE SYS$OUTPUT "''CR'''LF'  Please review your private X resources file in SYS$LOGIN"
579$	    WRITE SYS$OUTPUT "  to match the current version number and also check it for current
580$	    WRITE SYS$OUTPUT "  changes you may want to apply."
581$	  ENDIF
582$	ENDIF
583$!
584$! If no CDINFO directory exists or if there are no files in it,
585$! prompt user to indicate whether there is a 2.x version CDDB.
586$! If there is, let the user specify the directory where the old CDDB
587$! is resident.
588$!
589$	XMCD2 = 0
590$	XMCD3 = 0
591$	CDEX  = 0
592$	CDDB  = 0
593$	IF F$SEARCH("CDINFO.DIR") .NES. ""
594$	 THEN
595$	  CDEX = 1
596$	  IF F$SEARCH("[.CDINFO]*.DIR") .NES. ""
597$	   THEN
598$	    GOTO NO_CDDB
599$	  ENDIF
600$	ENDIF
601$	WRITE SYS$OUTPUT "''CR'''LF'  If you have xmcd version 2.x previously installed on your system,"
602$	WRITE SYS$OUTPUT "  there is a CDDB.DIR directory under your xmcd library.  This has"
603$	WRITE SYS$OUTPUT "  been deprecated, but this release of xmcd will continue to read files"
604$	WRITE SYS$OUTPUT "  from that directory, if it is renamed or backed up to CDINFO.DIR."
605$	WRITE SYS$OUTPUT "  Please indicate now if you have xmcd version 2.x previously installed"
606$	WRITE SYS$OUTPUT "  on your system. If so, you'll be prompted to enter the complete path"
607$	WRITE SYS$OUTPUT "  including the device name for xmcd 2.x's CDDB.DIR''CR'''LF'"
608$ INQDB:
609$	INQUIRE CDDB "  Do you have xmcd version 2.x previously installed ? (Y/N)"
610$	CDDB = F$EXTRACT(0,1,F$EDIT(CDDB,"UPCASE,COLLAPSE"))
611$	IF CDDB .NES. "Y" .AND. CDDB .NES. "N" THEN GOTO INQDB
612$	IF .NOT. CDDB THEN GOTO NO_CDDB_2X
613$	WRITE SYS$OUTPUT "''CR'''LF'  Please enter the complete path of your xmcd 2.x's CDDB.DIR"
614$	WRITE SYS$OUTPUT "  For example MYBOX$DKA400:[XMCD-2_6]''CR'''LF'"
615$	VRB  = "Specify"
616$	EVRB = ""
617$ INQDBP:
618$	INQUIRE CDDB_LOC "  ''VRB' complete path''EVRB'"
619$	IF F$EDIT(CDDB_LOC,"COLLAPSE,UPCASE") .EQS. "EXIT" THEN GOTO NO_CDDB_2X
620$	IF F$SEARCH("''CDDB_LOC'CDDB.DIR") .EQS. ""
621$	 THEN
622$	  WRITE SYS$OUTPUT "''CR'''LF'  ''CDDB_LOC' does not include CDDB.DIR''CR'''LF'"
623$	  WRITE SYS$OUTPUT "  If you erroneously indicated to have a 2.x CDDB"
624$	  WRITE SYS$OUTPUT "  please type EXIT at the path prompt.''CR'''LF'"
625$	  VRB  = "Respecify"
626$	  EVRB = " or type EXIT"
627$	  GOTO INQDBP
628$	ENDIF
629$!
630$! Determine whether the old CDDB is located on this disk device or on a
631$! different one. If the latter, usage of BACKUP is required, otherwise
632$! a rename operation is sufficient.
633$!
634$	DEVI_OLD = F$PARSE(CDDB_LOC,,,"DEVICE")
635$	DEVI_CUR = F$PARSE(ENVI,,,"DEVICE")
636$	PATH_OLD = F$PARSE(CDDB_LOC,,,"DIRECTORY")
637$	PATH_CUR = F$PARSE(ENVI,,,"DIRECTORY")
638$	WRITE SYS$OUTPUT "''CR'''LF'  Moving local xmcd 2.x CD database to target environment."
639$	IF CDEX THEN DELETE/NOCONFIRM CDINFO.DIR;*
640$	IF DEVI_OLD .EQS. DEVI_CUR
641$	 THEN
642$	  RENAME 'PATH_OLD'CDDB.DIR []CDINFO.DIR
643$	 ELSE
644$	  WRITE SYS$OUTPUT "  This may take some time..."
645$	  PATH_OLD = PATH_OLD - "]"
646$	  PATH_CUR = PATH_CUR - "]"
647$	  BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.CDDB...]*.* 'DEVI_CUR''PATH_CUR'.CDINFO...]*
648$	ENDIF
649$	WRITE SYS$OUTPUT ""
650$	XMCD2 = 1
651$	GOTO NO_CDDB
652$ NO_CDDB_2X:
653$	WRITE SYS$OUTPUT "''CR'''LF'  If you have xmcd version 3.x previously installed on your system,"
654$	WRITE SYS$OUTPUT "  there may be a CDINFO.DIR directory under your xmcd library."
655$	WRITE SYS$OUTPUT "  Please indicate now if you have xmcd version 3.x previously installed"
656$	WRITE SYS$OUTPUT "  on your system. If so, you'll be prompted to enter the complete path"
657$	WRITE SYS$OUTPUT "  including the device name for xmcd 3.x's CDINFO.DIR''CR'''LF'"
658$ INQDB3:
659$	INQUIRE CDDB "  Do you have xmcd version 3.x previously installed ? (Y/N)"
660$	CDDB = F$EXTRACT(0,1,F$EDIT(CDDB,"UPCASE,COLLAPSE"))
661$	IF CDDB .NES. "Y" .AND. CDDB .NES. "N" THEN GOTO INQDB3
662$	IF .NOT. CDDB THEN GOTO NO_CDDB
663$	WRITE SYS$OUTPUT "''CR'''LF'  Please enter the complete path of your xmcd 3.x's CDINFO.DIR"
664$	WRITE SYS$OUTPUT "  For example MYBOX$DKA400:[XMCD-3_1]''CR'''LF'"
665$	VRB  = "Specify"
666$	EVRB = ""
667$ INQDBP3:
668$	INQUIRE CDDB_LOC "  ''VRB' complete path''EVRB'"
669$	IF F$EDIT(CDDB_LOC,"COLLAPSE,UPCASE") .EQS. "EXIT"
670$	 THEN
671$	  CDDB = "N"
672$	  GOTO NO_CDDB
673$	ENDIF
674$	IF F$SEARCH("''CDDB_LOC'CDINFO.DIR") .EQS. ""
675$	 THEN
676$	  WRITE SYS$OUTPUT "''CR'''LF'  ''CDDB_LOC' does not include CDINFO.DIR''CR'''LF'"
677$	  WRITE SYS$OUTPUT "  If you erroneously indicated to have a 3.x CDINFO structure"
678$	  WRITE SYS$OUTPUT "  please type EXIT at the path prompt.''CR'''LF'"
679$	  VRB  = "Respecify"
680$	  EVRB = " or type EXIT"
681$	  GOTO INQDBP3
682$	ENDIF
683$!
684$! Determine whether the old CDDB is located on this disk device or on a
685$! different one. If the latter, usage of BACKUP is required, otherwise
686$! a rename operation is sufficient.
687$!
688$	DEVI_OLD = F$PARSE(CDDB_LOC,,,"DEVICE")
689$	DEVI_CUR = F$PARSE(ENVI,,,"DEVICE")
690$	PATH_OLD = F$PARSE(CDDB_LOC,,,"DIRECTORY")
691$	PATH_CUR = F$PARSE(ENVI,,,"DIRECTORY")
692$	WRITE SYS$OUTPUT "''CR'''LF'  Moving local xmcd 3.x CD database to target environment."
693$	IF CDEX THEN DELETE/NOCONFIRM CDINFO.DIR;*
694$	IF DEVI_OLD .EQS. DEVI_CUR
695$	 THEN
696$	  RENAME 'PATH_OLD'CDINFO.DIR []CDINFO.DIR
697$	 ELSE
698$	  WRITE SYS$OUTPUT "  This may take some time..."
699$	  PATH_OLD = PATH_OLD - "]"
700$	  PATH_CUR = PATH_CUR - "]"
701$	  BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.CDINFO...]*.* 'DEVI_CUR''PATH_CUR'.CDINFO...]*
702$	ENDIF
703$	WRITE SYS$OUTPUT ""
704$	XMCD3 = 1
705$ NO_CDDB:
706$!
707$! Apply modifications to enable wwwwarp functions.
708$! First move files to target directory.
709$!
710$	WRITE SYS$OUTPUT "''CR'''LF'  Preparing WWWwarp setup...''CR'''LF'"
711$	IF F$SEARCH("[.MISC_D]STARTVIEWER.COM")	.NES. "" THEN RENAME [.MISC_D]STARTVIEWER.COM []
712$	IF F$SEARCH("[.MISC_D]INSTWEB.COM")	.NES. "" THEN RENAME [.MISC_D]INSTWEB.COM []
713$	IF F$SEARCH("[.CDINFO_D]WWWWARP.CFG")	.NES. "" THEN RENAME [.CDINFO_D]WWWWARP.CFG []
714$	@INSTWEB.COM
715$	SET DEFAULT 'ENVI'
716$!
717$! Setup local Discography. Create required subdir and move required files
718$! to the discog area, then create genre and subgenre directories.
719$!
720$	WRITE SYS$OUTPUT "''CR'''LF'  Setting up Local Discography...''CR'''LF'"
721$	IF F$SEARCH("DISCOG.DIR") .EQS. "" THEN CREATE/DIRECTORY [.DISCOG]
722$	IF F$SEARCH("[.MISC_D]DISCOGVMS.HTM")	.NES. "" THEN RENAME [.MISC_D]DISCOGVMS.HTM [.DISCOG]DISCOG.HTML
723$	IF F$SEARCH("[.MISC_D]BKGND.GIF")	.NES. "" THEN RENAME [.MISC_D]BKGND.GIF	    [.DISCOG]
724$	IF F$SEARCH("[.MISC_D]XMCDLOGO.GIF")	.NES. "" THEN RENAME [.MISC_D]XMCDLOGO.GIF  [.DISCOG]
725$	IF F$SEARCH("[.XMCD_D]XMCD.HTM")	.NES. "" THEN RENAME [.XMCD_D]XMCD.HTM      [.DISCOG]XMCD.HTML
726$	IF F$SEARCH("[.CDA_D]CDA.HTM")		.NES. "" THEN RENAME [.CDA_D]CDA.HTM      [.DISCOG]CDA.HTML
727$	WRITE SYS$OUTPUT "  Creating Local Discography genre directories.''CR'''LF'"
728$	IF F$SEARCH("[.DISCOG.BLUES]GENERAL_BLUES.DIR")		  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.BLUES.GENERAL_BLUES]
729$	IF F$SEARCH("[.DISCOG.CLASSICAL]GENERAL_CLASSICAL.DIR")	  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.CLASSICAL.GENERAL_CLASSICAL]
730$	IF F$SEARCH("[.DISCOG.COUNTRY]GENERAL_COUNTRY.DIR")	  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.COUNTRY.GENERAL_COUNTRY]
731$	IF F$SEARCH("[.DISCOG.DATA]GENERAL_DATA.DIR")		  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.DATA.GENERAL_DATA]
732$	IF F$SEARCH("[.DISCOG.FOLK]GENERAL_FOLK.DIR")		  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.FOLK.GENERAL_FOLK]
733$	IF F$SEARCH("[.DISCOG.JAZZ]GENERAL_JAZZ.DIR")		  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.JAZZ.GENERAL_JAZZ]
734$	IF F$SEARCH("[.DISCOG.NEW_AGE]GENERAL_NEW_AGE.DIR")	  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.NEW_AGE.GENERAL_NEW_AGE]
735$	IF F$SEARCH("[.DISCOG.ROCK]GENERAL_ROCK.DIR")		  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.ROCK.GENERAL_ROCK]
736$	IF F$SEARCH("[.DISCOG.SOUNDTRACK]GENERAL_SOUNDTRACK.DIR") .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.SOUNDTRACK.GENERAL_SOUNDTRACK]
737$	IF F$SEARCH("[.DISCOG.UNCLASSIFIABLE]GENERAL_UNCLASSIFIABLE.DIR") .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.UNCLASSIFIABLE.GENERAL_UNCLASSIFIABLE]
738$	IF F$SEARCH("[.DISCOG.WORLD]REGGAE.DIR")		  .EQS. "" THEN CREATE/DIRECTORY [.DISCOG.WORLD.REGGAE]
739$	IF .NOT. CDDB THEN GOTO EXIT
740$	VERVAR = ""
741$	IF XMCD2 THEN VERVAR = "2.x"
742$	IF XMCD3 THEN VERVAR = "3.x"
743$	IF F$SEARCH("''PATHOLD'DISCOG.DIR") .EQS. ""
744$	 THEN
745$	  WRITE SYS$OUTPUT "''CR'''LF'  No xmcd ''VERVAR' Local Discography files found."
746$	  GOTO EXIT
747$	ENDIF
748$	WRITE SYS$OUTPUT "''CR'''LF'  Moving xmcd ''VERVAR' Local Discography files to target environment."
749$	WRITE SYS$OUTPUT "  This may take a few minutes...''CR'''LF'"
750$	PATH_OLD = PATH_OLD - "]"
751$	PATH_CUR = PATH_CUR - "]"
752$	WRITE SYS$OUTPUT "  Moving Blues genre files..."
753$	SBGRSD = ""
754$	IF XMCD2 THEN SBGRSD = "GENERAL_BLUES."
755$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.BLUES...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.BLUES...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.BLUES.'SBGRSD'..]
756$	WRITE SYS$OUTPUT "  Moving Classical genre files..."
757$	SBGRSD = ""
758$	IF XMCD2 THEN SBGRSD = "GENERAL_CLASSICAL."
759$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.CLASSICAL...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.CLASSICAL...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.CLASSICAL.'SBGRSD'..]
760$	WRITE SYS$OUTPUT "  Moving Country genre files..."
761$	SBGRSD = ""
762$	IF XMCD2 THEN SBGRSD = "GENERAL_COUNTRY."
763$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.COUNTRY...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.COUNTRY...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.COUNTRY.'SBGRSD'..]
764$	WRITE SYS$OUTPUT "  Moving Data genre files..."
765$	SBGRSD = ""
766$	IF XMCD2 THEN SBGRSD = "GENERAL_DATA."
767$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.DATA...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.DATA...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.DATA.'SBGRSD'..]
768$	WRITE SYS$OUTPUT "  Moving Folk genre files..."
769$	SBGRSD = ""
770$	IF XMCD2 THEN SBGRSD = "GENERAL_FOLK."
771$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.FOLK...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.FOLK...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.FOLK.'SBGRSD'..]
772$	WRITE SYS$OUTPUT "  Moving Jazz genre files..."
773$	SBGRSD = ""
774$	IF XMCD2 THEN SBGRSD = "GENERAL_JAZZ."
775$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.JAZZ...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.JAZZ...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.JAZZ.'SBGRSD'..]
776$	WRITE SYS$OUTPUT "  Moving miscellaneous genre files..."
777$	IF XMCD2
778$	 THEN
779$	  IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.MISC...]*.*") .NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.MISC...]*.* 'DEVI_CUR''PATH_CUR'.DISCOG.UNCLASSIFIABLE.GENERAL_UNCLASSIFIABLE...]
780$	 ELSE
781$	  IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.UNCLASSIFIABLE...]*.*") .NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.UNCLASSIFIABLE...]*.* 'DEVI_CUR''PATH_CUR'.DISCOG.UNCLASSIFIABLE...]
782$	ENDIF
783$	WRITE SYS$OUTPUT "  Moving Newage genre files..."
784$	SBGRSD = ""
785$	IF XMCD2 THEN SBGRSD = "GENERAL_NEW_AGE."
786$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.NEWAGE...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.NEWAGE...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.NEW_AGE.'SBGRSD'..]
787$	WRITE SYS$OUTPUT "  Moving Reggae genre files..."
788$	SBGRSD = ""
789$	IF XMCD2 THEN SBGRSD = "WORLD."
790$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.REGGAE...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.REGGAE...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.'SBGRSD'REGGAE...]
791$	WRITE SYS$OUTPUT "  Moving Rock genre files..."
792$	SBGRSD = ""
793$	IF XMCD2 THEN SBGRSD = "GENERAL_ROCK."
794$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.ROCK...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.ROCK...]*.*	 'DEVI_CUR''PATH_CUR'.DISCOG.ROCK.'SBGRSD'..]
795$	WRITE SYS$OUTPUT "  Moving Soundtrack genre files..."
796$	SBGRSD = ""
797$	IF XMCD2 THEN SBGRSD = "GENERAL_SOUNDTRACK."
798$	IF F$SEARCH("''DEVI_OLD'''PATH_OLD'.DISCOG.SOUNDTRACK...]*.*")	.NES. "" THEN BACKUP/NOLOG 'DEVI_OLD''PATH_OLD'.DISCOG.SOUNDTRACK...]*.* 'DEVI_CUR''PATH_CUR'.DISCOG.SOUNDTRACK.'SBGRSD'..]
799$
800$	WRITE SYS$OUTPUT "''CR'''LF'  Creating main index and category HTML index files..."
801$	DEFINE/JOB/NOLOG $DISCOGDIR 'LIBDIR_D'.DISCOG.] /TRANSLATION_ATTRIBUTES=(TERMINAL,CONCEALED)
802$	@GENIDX "" RUN_SILENT
803$	IF XMCD3 THEN GOTO EXIT
804$	WRITE SYS$OUTPUT "''CR'''LF'  Starting conversion of xmcd 2.x Local Discography index files"
805$	WRITE SYS$OUTPUT "  This may take some time, depending on the number of your files.''CR'''LF'"
806$!
807$! No warning messages from the SEARCH command wanted. If running a VMS
808$! pre-7.x version, SET MESSAGE is required to have the box shutup. The
809$! user's message environment is restored after completion of this part.
810$!
811$	VSCOM = ""
812$	IF F$GETSYI("VERSION") .GES. "V6.2"
813$	 THEN
814$	  VSCOM = "/NOWARNING"
815$	 ELSE
816$	  MESENV = F$ENVIRONMENT("MESSAGE")
817$	  SET MESSAGE/NOTEXT/NOSEVERITY/NOFACILITY/NOIDENTIFICATION
818$	ENDIF
819$!
820$! Now start searching for INDEX.HTML files in the discog area.
821$! If it's not a disk's INDEX file or if it already has been converted,
822$! search for next file.
823$!
824$	FILES_CVT = 0
825$ CONVOLDIDX:
826$	WFILE    = F$SEARCH("[.DISCOG.*...]INDEX.HTML;0")
827$	IF WFILE .EQS. "" THEN GOTO CONV_DONE
828$	SEARCH/NOOUT'VSCOM' 'WFILE' "Total:","Total time:"
829$	IF $SEVERITY .NE. 1 THEN GOTO CONVOLDIDX
830$	SEARCH/NOOUT'VSCOM' 'WFILE' "xmcd 3.0"
831$	IF $SEVERITY .EQ. 1 THEN GOTO CONVOLDIDX
832$	THIS_DIR = F$PARSE(WFILE,,,"DEVICE") + F$PARSE(WFILE,,,"DIRECTORY")
833$	FILES_CVT = FILES_CVT + 1
834$!
835$! Found file to convert. First save info which can't be replaced by some
836$! default stuff.
837$!
838$	SEARCH/EXACT'VSCOM'/OUT=FND.TMP 'WFILE' "Disc ID:","Disc ID</B>:"
839$	OPEN/READ 180 FND.TMP
840$	READ      180 LINE
841$	CLOSE     180
842$	DELETE/NOCONFIRM FND.TMP;0
843$	PRE_26 = 0
844$	IF F$LOCATE("ID</B>:",LINE) .NE.F$LENGTH(LINE) THEN PRE_26 = 1
845$!
846$! Setup changes for xmcd 3.x INDEX.HTML format
847$!
848$	LP       = F$EXTRACT(0,F$LOCATE("<TD ALIGN=",LINE)+17,LINE)
849$	LINEX    = LINE - LP
850$	MP       = F$EXTRACT(0,F$LOCATE("<BR>",LINEX),LINEX)
851$	RP       = LINEX - MP
852$	DDSK     = F$PARSE(WFILE,,,"DEVICE") - ":"
853$	WDIR     = F$PARSE(WFILE,,,"DIRECTORY")
854$	DDIR     = "''WDIR'" - "[" - "]"
855$	GENRE    = DDIR - F$EXTRACT(0,F$LOCATE("DISCOG.",DDIR)+7,DDIR)
856$	SUBGENRE = F$ELEMENT(1,".",GENRE)
857$	ID	 = F$ELEMENT(2,".",GENRE)
858$	GENRE    = F$ELEMENT(0,".",GENRE)
859$	DDIR	 = DDIR - ".DISCOG.''GENRE'.''SUBGENRE'.''ID'"
860$ EDITDDIR:
861$	IF F$LOCATE(".",DDIR) .EQ. F$LENGTH(DDIR) THEN GOTO NOEDITDDIR
862$	DDIR['F$LOCATE(".",DDIR),1] := "/"
863$	IF F$LOCATE(".",DDIR) .LT. F$LENGTH(DDIR) THEN GOTO EDITDDIR
864$	DDIR = F$EDIT(DDIR,"TRIM")
865$ NOEDITDDIR:
866$	GENRESTR = "_" + F$EDIT(GENRE,"LOWERCASE")
867$ GENREEDIT:
868$	UPC = F$EDIT(F$EXTRACT(F$LOCATE("_",GENRESTR)+1,1,GENRESTR),"UPCASE")
869$	GENRESTR['F$LOCATE("_",GENRESTR)+1,1] := "''UPC'"
870$	GENRESTR['F$LOCATE("_",GENRESTR),1] := " "
871$	IF F$LOCATE("_",GENRESTR) .LT. F$LENGTH(GENRESTR) THEN GOTO GENREEDIT
872$	GENRESTR = F$EDIT(GENRESTR,"TRIM")
873$	SUBGENRESTR = "_" + F$EDIT(SUBGENRE,"LOWERCASE")
874$ SUBGENREEDIT:
875$	UPC = F$EDIT(F$EXTRACT(F$LOCATE("_",SUBGENRESTR)+1,1,SUBGENRESTR),"UPCASE")
876$	SUBGENRESTR['F$LOCATE("_",SUBGENRESTR)+1,1] := "''UPC'"
877$	SUBGENRESTR['F$LOCATE("_",SUBGENRESTR),1] := " "
878$	IF F$LOCATE("_",SUBGENRESTR) .LT. F$LENGTH(SUBGENRESTR) THEN GOTO SUBGENREEDIT
879$	SUBGENRESTR = F$EDIT(SUBGENRESTR,"TRIM")
880$	IF PRE_26
881$	 THEN
882$	  LP = "<TABLE CELLSPACING=""0"" CELLPADDING=""1"" BORDER=""0""><TR><TH ALIGN=""left"">Disc ID:</TH><TD ALIGN=""left"">"
883$	  RP = "<BR></TD></TR></TABLE>"
884$	ENDIF
885$	GENRELINE = LP + GENRESTR + " -> " + SUBGENRESTR + " ''ID'" + RP
886$	WRITE SYS$OUTPUT "  Converting ''ID' in ''SUBGENRESTR' genre."
887$!
888$! Setup command procedure with the info collected above for use by text editor
889$!
890$	OPEN/WRITE 300 CIDX.EDT
891$	WRITE 300 "FIND '     DO NOT EDIT: Generated by xmcd 2.'"
892$	WRITE 300 "DELETE"
893$	WRITE 300 "DELETE"
894$	WRITE 300 "DELETE"
895$	OPEN/WRITE 201 CIDX1.TMP
896$	WRITE 201 "DO NOT EDIT: Generated by xmcd 3.3.2"
897$	WRITE 201 "Copyright (C) 1993-2004  Ti Kan"
898$	WRITE 201 "URL: http://www.amb.org/xmcd/ E-mail: xmcd@amb.org -->"
899$	CLOSE 201
900$	WRITE 300 "INCLUDE CIDX1.TMP"
901$	WRITE 300 "FIND 'bkgnd.gif'
902$	WRITE 300 "DELETE"
903$	OPEN/WRITE 202 CIDX2.TMP
904$	WRITE 202 "<BODY BGCOLOR=""#FFFFFF"" BACKGROUND=""file://localhost/''DDSK'/''DDIR'/discog/bkgnd.gif"">"
905$	CLOSE 202
906$	WRITE 300 "INCLUDE CIDX2.TMP"
907$	WRITE 300 "FIND 'metalab.unc.edu'"
908$	WRITE 300 "DELETE"
909$	OPEN/WRITE 203 CIDX3.TMP
910$	WRITE 203 "<A HREF=""http://www.amb.org/xmcd/"">"
911$	CLOSE 203
912$	WRITE 300 "INCLUDE CIDX3.TMP"
913$	WRITE 300 "FIND 'xmcdlogo.gif'
914$	WRITE 300 "DELETE"
915$	OPEN/WRITE 204 CIDX4.TMP
916$	WRITE 204 "<IMG SRC=""file://localhost/''DDSK'/''DDIR'/discog/xmcdlogo.gif"" ALT=""xmcd"" BORDER=""0""></A><P>"
917$	CLOSE 204
918$	WRITE 300 "INCLUDE CIDX4.TMP"
919$	WRITE 300 "FIND 'Disc ID'"
920$	WRITE 300 "DELETE"
921$	OPEN/WRITE 205 CIDX5.TMP
922$	WRITE 205 GENRELINE
923$	CLOSE 205
924$	WRITE 300 "INCLUDE CIDX5.TMP"
925$	WRITE 300 "FIND '<H4>Local Discography'"
926$	WRITE 300 "FIND '<LI>'"
927$	WRITE 300 "DELETE REST"
928$	OPEN/WRITE 206 CIDX6.TMP
929$ LOCFIL:
930$	LOCFIL = F$SEARCH("''THIS_DIR'*.*",1)
931$	IF LOCFIL .EQS. "" THEN GOTO LFEND
932$	LOCFIL = F$PARSE(LOCFIL,,,"NAME") + F$PARSE(LOCFIL,,,"TYPE")
933$	WRITE 206 "<LI><A HREF=""file://localhost/''DDSK'/''DDIR'/discog/''GENRE'/''SUBGENRE'/''ID'/''LOCFIL'"">File: ''LOCFIL'</A></LI>"
934$	GOTO LOCFIL
935$ LFEND:
936$	WRITE 206 "<LI><A HREF=""file://localhost/''DDSK'/''DDIR'/discog/index.html"">Main index</A>"
937$	WRITE 206 "<LI><A HREF=""file://localhost/''DDSK'/''DDIR'/discog/''GENRE'/''SUBGENRE'/index.html"">''GENRESTR' -> ''SUBGENRESTR' index</A>"
938$	WRITE 206 "<LI><A HREF=""file://localhost/''DDSK'/''DDIR'/discog/discog.html"">How to use Local Discography</A></LI>"
939$	WRITE 206 "</UL>"
940$	WRITE 206 "<H4>Links</H4>"
941$	WRITE 206 "<P>"
942$	WRITE 206 "<UL>"
943$	WRITE 206 "<LI><A HREF=""http://www.amb.org/xmcd/"">Xmcd official web site</A></LI>"
944$	WRITE 206 "<LI><A HREF=""http://www.cddb.com/"">CDDB - The #1 music info source</A></LI>"
945$	WRITE 206 "<LI><A HREF=""http://www.yahoo.com/Entertainment/Music/Reviews/"">Yahoo! music reviews</A></LI>"
946$	WRITE 206 "</UL>"
947$	WRITE 206 "<HR>"
948$	WRITE 206 "This directory: <B>''THIS_DIR'</B>"
949$	WRITE 206 "</BODY>"
950$	WRITE 206 "</HTML>"
951$	CLOSE 206
952$	WRITE 300 "INCLUDE CIDX6.TMP"
953$	WRITE 300 "EXIT"
954$	CLOSE 300
955$!
956$! And finally apply the changes to complete conversion to 3.x format
957$!
958$	DEFINE/NOLOG SYS$INPUT SYS$COMMAND
959$	DEFINE/NOLOG SYS$OUTPUT NLA0:
960$	EDITTT/EDT/COMMAND=CIDX.EDT 'WFILE'
961$	DELETE/NOCONFIRM CIDX*.TMP;0,CIDX.EDT;0
962$	PFILE = WFILE - F$PARSE(WFILE,,,"VERSION")
963$	PURGE/NOLOG 'PFILE'
964$	DEASSIGN SYS$OUTPUT
965$	GOTO CONVOLDIDX
966$ CONV_DONE:
967$	SET MESSAGE 'MESENV'
968$	IF FILES_CVT .NE. 0
969$	 THEN
970$	  WRITE SYS$OUTPUT "''CR'''LF'  ''FILES_CVT' INDEX.HTML files been have converted to xmcd 3.x format."
971$	 ELSE
972$	  WRITE SYS$OUTPUT "''CR'''LF'  No index files found to convert to xmcd 3.x format"
973$	ENDIF
974$ EXIT:
975$	WRITE SYS$OUTPUT "''BEL'''CR'''LF'  Installation of XMCD completed at ''F$CVTIME(,"ABSOLUTE",)'''CR'''LF'''CR'''LF'"
976$	WRITE SYS$OUTPUT "  For information on advanced configuration please see the documentation files.''CR'''LF'"
977$	WRITE SYS$OUTPUT "  Restart your X-session to have all changes take effect,"
978$	WRITE SYS$OUTPUT "  then type XMCD at the command prompt to start the application.''CR'''LF'''CR'''LF'"
979$ ENDEX:
980$	SET DEF 'USEN'
981