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