Old solaris-config.sh
1 #!/bin/sh
2 #
3 # @(#)config.sh 7.60 02/04/24
4 #
5 # Script to set up the device-dependent configuration files.
6 #
7 # xmcd - Motif(tm) CD Audio Player
8 # cda - Command-line CD Audio Player
9 #
10 # Copyright (C) 1993-2002 Ti Kan
11 # E-mail: xmcd@amb.org
12 #
13 # This program is free software; you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation; either version 2 of the License, or
16 # (at your option) any later version.
17 #
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 #
27
28 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/local/bin:/usr/ucb
29 export PATH
30
31 VER=3.2.1
32
33 # Change the following directory to fit your local configuration
34 BINDIR=/opt/sfw/bin
35 XMCDLIB=/opt/sfw/lib/X11/xmcd
36 DISCOGDIR=/opt/sfw/lib/X11/xmcd/discog
37 XMCD_URL=http://www.amb.org/xmcd/
38
39 ERRFILE=/tmp/xmcd.err
40 BTMPFILE=/tmp/.xmcdcfg.b$$
41 MTMPFILE=/tmp/.xmcdcfg.m$$
42
43 CFGDIR=$XMCDLIB/config
44 SCRDIR=$XMCDLIB/scripts
45 CDDB1PATH="rock;jazz;blues;newage;classical;reggae;folk;country;soundtrack;misc;data"
46 OWNER=_default_
47 GROUP=_default_
48 CDIRPERM=777
49
50 # Utility functions
51
52 do_exit()
53 {
54 if [ $1 -eq 0 ]
55 then
56 rm -f $CFGDIR/common.cfg.old
57 $ECHO "\n\nXmcd set-up is now complete.\n"
58 $ECHO "Please read the DRIVES file supplied with the xmcd"
59 $ECHO "distribution for hardware configuration information"
60 $ECHO "about specific drives.\n"
61 else
62 $ECHO "\n\nErrors have occurred configuring xmcd."
63 if [ $ERRFILE != /dev/null ]
64 then
65 $ECHO "See $ERRFILE for an error log."
66 fi
67 fi
68 exit $1
69 }
70
71 log_err()
72 {
73 if [ "$1" = "-p" ]
74 then
75 $ECHO "Error: $2" >&2
76 fi
77 $ECHO "$2" >>$ERRFILE
78 }
79
80 get_str()
81 {
82 $ECHO "$* \c"
83 read ANS
84 if [ -n "$ANS" ]
85 then
86 return 0
87 else
88 return 1
89 fi
90 }
91
92 get_yn()
93 {
94 if [ -z "$YNDEF" ]
95 then
96 YNDEF=y
97 fi
98
99 while :
100 do
101 $ECHO "$*? [${YNDEF}] \c"
102 read ANS
103 if [ -n "$ANS" ]
104 then
105 case $ANS in
106 [yY])
107 RET=0
108 break
109 ;;
110 [nN])
111 RET=1
112 break
113 ;;
114 *)
115 $ECHO "Please answer y or n"
116 ;;
117 esac
118 else
119 if [ $YNDEF = y ]
120 then
121 RET=0
122 else
123 RET=1
124 fi
125 break
126 fi
127 done
128
129 YNDEF=
130 return $RET
131 }
132
133
134 do_link()
135 {
136 source=$1
137 target=$2
138
139 rm -f $target
140
141 # Try symlink first
142 ln -s $source $target 2>/dev/null
143 RETSTAT=$?
144
145 if [ $RETSTAT != 0 -a -f $source ]
146 then
147 # Use hard link if a regular file
148 ln $source $target 2>/dev/null
149 RETSTAT=$?
150 fi
151
152 if [ $RETSTAT != 0 ]
153 then
154 log_err -p "Cannot link $source -> $target"
155 fi
156 return $RETSTAT
157 }
158
159
160 do_chown()
161 {
162 if [ $2 != _default_ ]
163 then
164 chown $1 $2 2>/dev/null
165 fi
166 }
167
168
169 do_chgrp()
170 {
171 if [ $2 != _default_ ]
172 then
173 chgrp $1 $2 2>/dev/null
174 fi
175 }
176
177
178 do_chmod()
179 {
180 if [ $2 != _default_ ]
181 then
182 chmod $1 $2 2>/dev/null
183 fi
184 }
185
186
187 make_dir()
188 {
189 dir=$1
190 perm=$2
191 owner=$3
192 group=$4
193 $ECHO "\t$dir"
194 if [ ! -d $dir ]
195 then
196 mkdir -p $dir
197 fi
198 do_chmod $perm $dir 2>/dev/null
199 return 0
200 }
201
202
203 get_old_cparm()
204 {
205 if [ -r $CFGDIR/common.cfg.old ]
206 then
207 cparmfile=$CFGDIR/common.cfg.old
208 elif [ -z "$FROM_INSTALL_SH" ]
209 then
210 cparmfile=$CFGDIR/common.cfg
211 else
212 return 1
213 fi
214
215 PARMVAL=`grep "^${1}:" $cparmfile 2>/dev/null | $AWK '{ print $2 }'`
216 return $?
217 }
218
219
220 get_proxy()
221 {
222 YNDEF=n
223 if get_old_cparm "cddbUseProxy" || get_old_cparm "cddbUseHttpProxy"
224 then
225 if echo "$PARMVAL" | fgrep -i true >/dev/null 2>&1
226 then
227 YNDEF=y
228 fi
229 fi
230 $ECHO "\n Is this system within a firewall that requires the use of"
231 get_yn " an HTTP proxy server to access the Internet"
232 if [ $? -ne 0 ]
233 then
234 USEPROXY=False
235 PROXYSERVER="localhost:80"
236 return
237 fi
238
239 USEPROXY=True
240
241 PROXYSERVER=
242 PROXYPORT=
243 if get_old_cparm "proxyServer"
244 then
245 PROXYSERVER=`echo ${PARMVAL} | $AWK -F: '{ print $1 }'`
246 PROXYPORT=`echo ${PARMVAL} | $AWK -F: '{ print $2 }'`
247 fi
248 if [ -z "$PROXYSERVER" ]
249 then
250 PROXYSERVER=localhost
251 fi
252 if [ -z "$PROXYPORT" ]
253 then
254 PROXYPORT=80
255 fi
256
257 while :
258 do
259 if get_str \
260 " Enter the proxy server host name or IP number: [${PROXYSERVER}]"
261 then
262 if ($ECHO "$ANS" | grep "[ ]") >/dev/null 2>&1
263 then
264 $ECHO " Invalid input. Try again."
265 continue
266 else
267 PROXYSERVER="$ANS"
268 fi
269 fi
270 break
271 done
272
273 while :
274 do
275 if get_str \
276 " Enter the proxy server port number: [${PROXYPORT}]"
277 then
278 if [ `expr "$ANS" : '^[0-9]*$'` -eq 0 ]
279 then
280 $ECHO " Invalid input. Try again."
281 continue
282 else
283 PROXYPORT="$ANS"
284 fi
285 fi
286 break
287 done
288
289 PROXYSERVER="${PROXYSERVER}:${PROXYPORT}"
290
291 YNDEF=n
292 if get_old_cparm "proxyAuthorization" && \
293 echo "$PARMVAL" | fgrep -i true >/dev/null 2>&1
294 then
295 YNDEF=y
296 fi
297 get_yn " Does the proxy server require password authorization"
298 if [ $? -ne 0 ]
299 then
300 PROXYAUTH=False
301 else
302 PROXYAUTH=True
303 fi
304 }
305
306
307 cddb_config()
308 {
309 # Set up cdinfoPath
310
311 $ECHO "\nIf your system has Internet connectivity and functional"
312 $ECHO "domain name service (DNS), you should answer 'y' to the next"
313 $ECHO "question. If this system is not linked to the Internet at all,"
314 $ECHO "then answer 'n'."
315
316 YNDEF=y
317 if get_old_cparm "internetOffline" || get_old_cparm "disableCddb" || \
318 get_old_cparm "cddbRemoteDisable"
319 then
320 if echo "$PARMVAL" | fgrep -i true >/dev/null 2>&1
321 then
322 YNDEF=n
323 fi
324 fi
325
326 $ECHO "\n Would you like to access the Internet CDDB(tm) servers "
327 get_yn " for album/track information"
328 if [ $? -ne 0 ]
329 then
330 $ECHO "\nInternet CDDB server access is disabled."
331 $ECHO "To enable it later, run the $CFGDIR/config.sh"
332 $ECHO "script again."
333 INETOFFLN=True
334 CDINFOPATH="$CDDB1PATH"
335 return
336 fi
337
338 INETOFFLN=False
339 if [ -d $XMCDLIB/cdinfo ]
340 then
341 CDINFOPATH="CDDB;${CDDB1PATH}"
342 else
343 CDINFOPATH="CDDB"
344 fi
345
346 get_proxy
347
348 $ECHO "\nAnswer 'y' to the question below only if you have"
349 $ECHO "Netscape(tm) Navigator or Communicator web browser installed"
350 $ECHO "on your system."
351
352 YNDEF=y
353 if get_old_cparm "autoMusicBrowser" && \
354 echo "$PARMVAL" | fgrep -i false >/dev/null 2>&1
355 then
356 YNDEF=n
357 fi
358 get_yn "\n Would you like the automatic CDDB Music Browser feature"
359 if [ $? -ne 0 ]
360 then
361 AUTOBROWSER=False
362 else
363 AUTOBROWSER=True
364 fi
365 }
366
367
368 ask_scsi_config()
369 {
370 $ECHO "\n Since you have an unlisted drive, I will assume"
371 $ECHO " that it is SCSI-2 compliant. If this is not true then"
372 $ECHO " xmcd will probably not work."
373
374 YNDEF=n
375 if get_yn "\n Do you want to continue"
376 then
377 METHOD=0
378 VENDOR=0
379 VOLBASE=0
380 VOLTAPER=0
381 PLAYNOTUR=False
382 else
383 return 1
384 fi
385
386 $ECHO "\n You will now be asked several technical questions about"
387 $ECHO " your drive. If you don't know the answer, try accepting"
388 $ECHO " the default values, and if problems occur when using"
389 $ECHO " xmcd, reconfigure the settings by running this script"
390 $ECHO " again, or editing the $CFGDIR/$CONFIGFILE"
391 $ECHO " file."
392 $ECHO "\n Please refer to the \"xmcd Drive Configuration Guide\""
393 $ECHO " for help. It can be found at the xmcd web site:"
394 $ECHO "\n ${XMCD_URL}config.html"
395 $ECHO "\n If you get an unlisted drive working with xmcd in this"
396 $ECHO " manner, the author of xmcd would like to hear from you"
397 $ECHO " and incorporate the settings into the next xmcd release."
398 $ECHO " Please send e-mail to \"xmcd@amb.org\"."
399
400 while :
401 do
402 YNDEF=n
403 if get_yn "\n Is your drive on $XMCD_DEV a multi-disc changer"
404 then
405 $ECHO "\n Select one of the following changer methods:\n"
406 $ECHO " 1.\tSCSI LUN addressing method"
407 $ECHO " 2.\tSCSI medium changer method"
408 $ECHO " 3.\tother"
409 $ECHO " q.\tquit (abort configuration)"
410
411 while :
412 do
413 if get_str "\n Enter choice: [1]"
414 then
415 case "$ANS" in
416 [1-3])
417 break
418 ;;
419 q)
420 return 1
421 ;;
422 *)
423 $ECHO " Please answer 1 to 3."
424 ;;
425 esac
426 else
427 ANS=1
428 break
429 fi
430 done
431
432 if [ "$ANS" -eq 3 ]
433 then
434 #
435 # Unsupported changer method: just treat it
436 # as a single-disc drive
437 #
438 $ECHO "\n Your drive will be treated as a single-disc unit."
439 CHGMETHOD=0
440 NUMDISCS=1
441 MULTIPLAY=False
442 else
443 CHGMETHOD="$ANS"
444 while :
445 do
446 if get_str \
447 "\n How many discs does the drive support?:"
448 then
449 case "$ANS" in
450 [1-9]*)
451 NUMDISCS="$ANS"
452 break
453 ;;
454 *)
455 $ECHO " Invalid input. Try again."
456 ;;
457 esac
458 else
459 $ECHO " Invalid input. Try again."
460 fi
461 done
462
463 if [ "$NUMDISCS" -gt 1 ]
464 then
465 MULTIPLAY=True
466 else
467 CHGMETHOD=0
468 MULTIPLAY=False
469 fi
470 fi
471 else
472 CHGMETHOD=0
473 NUMDISCS=1
474 MULTIPLAY=False
475 fi
476
477 $ECHO "\n Does your drive on $XMCD_DEV:\n"
478
479 YNDEF=y
480 if get_yn " - Support the Play_Audio_MSF command"
481 then
482 PLAYMSF=True
483 else
484 PLAYMSF=False
485 fi
486
487 YNDEF=n
488 if get_yn " - Support the Play_Audio(12) command"
489 then
490 PLAY12=True
491 else
492 PLAY12=False
493 fi
494
495 YNDEF=y
496 if get_yn " - Support the Play_Audio(10) command"
497 then
498 PLAY10=True
499 else
500 PLAY10=False
501 fi
502
503 YNDEF=y
504 if get_yn " - Support the Play_Audio_Track/Index command"
505 then
506 PLAYTI=True
507 else
508 PLAYTI=False
509 fi
510
511 YNDEF=n
512 if get_yn \
513 " - Support caddy load via the Start_Stop_Unit command"
514 then
515 LOAD=True
516 else
517 LOAD=False
518 fi
519
520 YNDEF=y
521 if get_yn \
522 " - Support caddy eject via the Start_Stop_Unit command"
523 then
524 EJECT=True
525 else
526 EJECT=False
527 fi
528
529 YNDEF=y
530 if get_yn \
531 " - Support the DBD bit in the Mode_Sense command"
532 then
533 MODEDBD=True
534 else
535 MODEDBD=False
536 fi
537
538 YNDEF=n
539 if get_yn \
540 " - Need the 10-byte version of the Mode_Sense command"
541 then
542 MODE10BYTE=True
543 else
544 MODE10BYTE=False
545 fi
546
547 YNDEF=y
548 if get_yn \
549 " - Support audio volume control via the Mode_Select command"
550 then
551 YNDEF=y
552 if get_yn \
553 " - Support independent volume control for each channel"
554 then
555 VOLSUPP=True
556 BALSUPP=True
557 else
558 VOLSUPP=True
559 BALSUPP=False
560 fi
561
562 YNDEF=y
563 if get_yn \
564 " - Support audio channel routing via Mode_Select"
565 then
566 CHRSUPP=True
567 else
568 CHRSUPP=False
569 fi
570 else
571 VOLCTL=0
572 VOLSUPP=False
573 BALSUPP=False
574 CHRSUPP=False
575 fi
576
577 YNDEF=y
578 if get_yn " - Support the Pause/Resume command"
579 then
580 PAUSE=True
581 else
582 PAUSE=False
583 fi
584
585 YNDEF=y
586 if get_yn " - Support the Prevent/Allow_Medium_Removal command"
587 then
588 CADDYLOCK=True
589 else
590 CADDYLOCK=False
591 fi
592
593 YNDEF=n
594 if get_yn \
595 " - Support Data Format 1 of the Read_Subchannel command"
596 then
597 CURPOSFMT=True
598 else
599 CURPOSFMT=False
600 fi
601
602 YNDEF=n
603 if get_yn " - Return CDDA data in big-endian byte order"
604 then
605 CDDADATABE=True
606 else
607 CDDADATABE=False
608 fi
609
610 YNDEF=y
611 if get_yn " - Need a Mode_Select operation to enable CDDA reading"
612 then
613 CDDASCSIMODESEL=True
614 else
615 CDDASCSIMODESEL=False
616 fi
617
618 if [ $CDDASCSIMODESEL = True ]
619 then
620 while :
621 do
622 if get_str \
623 " \n What is the Mode_Select density code to enable CDDA reading?: [0]"
624 then
625 case "$ANS" in
626 [0-9]*)
627 CDDASCSIDENSITY="$ANS"
628 break
629 ;;
630 *)
631 $ECHO " Invalid input. Try again."
632 ;;
633 esac
634 else
635 CDDASCSIDENSITY=0
636 break
637 fi
638 done
639 else
640 CDDASCSIDENSITY=0
641 fi
642
643 while :
644 do
645 $ECHO " \n Which command should be used for CDDA reads?"
646 $ECHO " 0 MMC standard Read_CD"
647 $ECHO " 1 SCSI standard Read"
648 $ECHO " 2 NEC Read_CDDA"
649 $ECHO " 3 Sony Read_CDDA"
650 if get_str " Select one: [2]"
651 then
652 case "$ANS" in
653 [0-3])
654 CDDASCSIREADCMD="$ANS"
655 break
656 ;;
657 *)
658 $ECHO " Invalid input. Try again."
659 ;;
660 esac
661 else
662 CDDASCSIREADCMD=2
663 break
664 fi
665 done
666
667 while :
668 do
669 if get_str \
670 " \n What is the required wait time (seconds) for the drive to spin up?: [3]"
671 then
672 case "$ANS" in
673 [0-9]*)
674 SPINUPINTVL="$ANS"
675 break
676 ;;
677 *)
678 $ECHO " Invalid input. Try again."
679 ;;
680 esac
681 else
682 SPINUPINTVL=3
683 break
684 fi
685 done
686
687 if [ "$PAUSE" = True ]
688 then
689 YNDEF=n
690 if get_yn \
691 "\n Does the drive require strict pause/resume symmetry"
692 then
693 STRICTPR=True
694 else
695 STRICTPR=False
696 fi
697
698 YNDEF=n
699 if get_yn \
700 "\n Does the drive require a pause before reissuing play"
701 then
702 PLAYPAUSEPLAY=True
703 else
704 PLAYPAUSEPLAY=False
705 fi
706 else
707 STRICTPR=False
708 PLAYPAUSEPLAY=False
709 fi
710
711 $ECHO "\n This is the configuration for ${XMCD_DEV}:\n"
712 $ECHO " logicalDriverNumber: $DRVNO"
713 $ECHO " mediumChangeMethod: $CHGMETHOD"
714 $ECHO " numDiscs: $NUMDISCS"
715 $ECHO " playAudio12Support: $PLAY12"
716 $ECHO " playAudioMSFSupport: $PLAYMSF"
717 $ECHO " playAudio10Support: $PLAY10"
718 $ECHO " playAudioTISupport: $PLAYTI"
719 $ECHO " loadSupport: $LOAD"
720 $ECHO " ejectSupport: $EJECT"
721 $ECHO " modeSenseSetDBD: $MODEDBD"
722 $ECHO " modeSenseUse10Byte: $MODE10BYTE"
723 $ECHO " volumeControlSupport: $VOLSUPP"
724 $ECHO " balanceControlSupport: $BALSUPP"
725 $ECHO " pauseResumeSupport: $PAUSE"
726 $ECHO " strictPauseResume: $STRICTPR"
727 $ECHO " playPausePlay: $PLAYPAUSEPLAY"
728 $ECHO " caddyLockSupport: $CADDYLOCK"
729 $ECHO " curposFormat: $CURPOSFMT"
730 $ECHO " multiPlay: $MULTIPLAY"
731 $ECHO " spinUpInterval: $SPINUPINTVL"
732 $ECHO " cddaScsiModeSelect: $CDDASCSIMODESEL"
733 $ECHO " cddaScsiReadCommand: $CDDASCSIREADCMD"
734 $ECHO " cddaScsiDensity: $CDDASCSIDENSITY"
735 $ECHO " cddaDataBigEndian: $CDDADATABE"
736
737 YNDEF=y
738 if get_yn "\n Is this acceptable"
739 then
740 break
741 fi
742
743 $ECHO " Try again..."
744 done
745
746 return 0
747 }
748
749
750 ask_nonscsi_config()
751 {
752 #
753 # Select the ioctl method
754 #
755 $ECHO "\n Please select a Device Interface Method:\n"
756 $ECHO " 1.\tSunOS/Solaris/Linux/QNX ioctl method"
757 $ECHO " 2.\tFreeBSD/NetBSD/OpenBSD ioctl method"
758 $ECHO " 3.\tIBM AIX IDE ioctl method"
759 $ECHO " 4.\tBSDI BSD/OS ATAPI"
760 $ECHO " 5.\tSCO Open Server ATAPI BTLD"
761 $ECHO " 6.\tCompaq Tru64 UNIX / Digital UNIX ATAPI"
762 $ECHO " 7.\tHP-UX ATAPI"
763 $ECHO " q.\tquit (abort configuration)"
764
765 if [ -z "$IOCDEF" -o "$IOCDEF" = 0 ]
766 then
767 IOCDEF=1
768 fi
769
770 while :
771 do
772 if get_str "\n Enter choice: [$IOCDEF]"
773 then
774 case "$ANS" in
775 [1-7])
776 break
777 ;;
778 q)
779 return 1
780 ;;
781 *)
782 $ECHO " Please answer 1 to 7."
783 ;;
784 esac
785 else
786 ANS=$IOCDEF
787 break
788 fi
789 done
790
791 IOCMETHOD="$ANS"
792
793 if [ -z "$NUMDISCS" ]
794 then
795 YNDEF=n
796 if get_yn "\n Is your drive on $XMCD_DEV a multi-disc changer"
797 then
798 while :
799 do
800 if get_str \
801 "\n How many discs does the drive support?:"
802 then
803 case "$ANS" in
804 [1-9]*)
805 NUMDISCS="$ANS"
806 break
807 ;;
808 *)
809 $ECHO " Invalid input. Try again."
810 ;;
811 esac
812 else
813 $ECHO " Invalid input. Try again."
814 fi
815 done
816
817 if [ "$NUMDISCS" -gt 1 ]
818 then
819 CHGMETHOD=3
820 MULTIPLAY=True
821 else
822 CHGMETHOD=0
823 MULTIPLAY=False
824 fi
825 else
826 CHGMETHOD=0
827 NUMDISCS=1
828 MULTIPLAY=False
829 fi
830 fi
831
832 # Set the rest of the parameters
833 case "$IOCMETHOD" in
834 1) # SunOS/Solaris/Linux/QNX ioctl method
835 METHOD=1
836 VENDOR=0
837 VOLBASE=0
838 VOLTAPER=0
839 PLAYMSF=True
840 PLAY12=False
841 PLAY10=False
842 PLAYTI=True
843 LOAD=True
844 EJECT=True
845 MODEDBD=False
846 MODE10BYTE=False
847 VOLSUPP=True
848 BALSUPP=True
849 CHRSUPP=True
850 VOLCTL=3
851 PAUSE=True
852 STRICTPR=False
853 PLAYPAUSEPLAY=False
854 CADDYLOCK=False
855 CURPOSFMT=False
856 PLAYNOTUR=False
857 SPINUPINTVL=3
858 CDDASCSIMODESEL=0
859 CDDASCSIREADCMD=0
860 CDDASCSIDENSITY=0
861 CDDADATABE=0
862 ;;
863 2) # FreeBSD/NetBSD ioctl method
864 METHOD=2
865 VENDOR=0
866 VOLBASE=0
867 VOLTAPER=0
868 PLAYMSF=True
869 PLAY12=False
870 PLAY10=False
871 PLAYTI=True
872 LOAD=True
873 EJECT=True
874 MODEDBD=False
875 MODE10BYTE=False
876 VOLSUPP=True
877 BALSUPP=True
878 CHRSUPP=False
879 VOLCTL=3
880 PAUSE=True
881 STRICTPR=False
882 PLAYPAUSEPLAY=False
883 CADDYLOCK=True
884 CURPOSFMT=False
885 PLAYNOTUR=False
886 SPINUPINTVL=3
887 CDDASCSIMODESEL=0
888 CDDASCSIREADCMD=0
889 CDDASCSIDENSITY=0
890 CDDADATABE=0
891 ;;
892 3) # IBM AIX IDE ioctl method
893 METHOD=3
894 VENDOR=0
895 VOLBASE=0
896 VOLTAPER=0
897 PLAYMSF=True
898 PLAY12=False
899 PLAY10=False
900 PLAYTI=True
901 LOAD=False
902 EJECT=True
903 MODEDBD=False
904 MODE10BYTE=False
905 VOLSUPP=True
906 BALSUPP=True
907 CHRSUPP=False
908 VOLCTL=3
909 PAUSE=True
910 STRICTPR=False
911 PLAYPAUSEPLAY=False
912 CADDYLOCK=True
913 CURPOSFMT=False
914 PLAYNOTUR=False
915 SPINUPINTVL=3
916 CDDASCSIMODESEL=0
917 CDDASCSIREADCMD=0
918 CDDASCSIDENSITY=0
919 CDDADATABE=0
920 ;;
921 4) # BSDI BSD/OS ATAPI (SCSI emulation)
922 # Set up as a "generic" SCSI-2 drive
923 METHOD=0
924 VENDOR=0
925 VOLBASE=0
926 VOLTAPER=0
927 PLAYMSF=True
928 PLAY12=False
929 PLAY10=False
930 PLAYTI=True
931 LOAD=True
932 EJECT=True
933 MODEDBD=False
934 MODE10BYTE=False
935 VOLSUPP=False
936 BALSUPP=False
937 CHRSUPP=False
938 VOLCTL=0
939 PAUSE=True
940 STRICTPR=False
941 PLAYPAUSEPLAY=False
942 CADDYLOCK=False
943 CURPOSFMT=True
944 PLAYNOTUR=False
945 CHGMETHOD=0
946 NUMDISCS=1
947 MULTIPLAY=False
948 SPINUPINTVL=3
949 CDDASCSIMODESEL=0
950 CDDASCSIREADCMD=0
951 CDDASCSIDENSITY=0
952 CDDADATABE=0
953 ;;
954 5) # SCO Open Server ATAPI BTLD (SCSI emulation)
955 # Set up as a "generic" SCSI-2 drive
956 METHOD=0
957 VENDOR=0
958 VOLBASE=0
959 VOLTAPER=0
960 PLAYMSF=True
961 PLAY12=False
962 PLAY10=False
963 PLAYTI=True
964 LOAD=True
965 EJECT=True
966 MODEDBD=False
967 MODE10BYTE=False
968 VOLSUPP=True
969 BALSUPP=True
970 CHRSUPP=False
971 VOLCTL=3
972 PAUSE=True
973 STRICTPR=False
974 PLAYPAUSEPLAY=False
975 CADDYLOCK=False
976 CURPOSFMT=False
977 PLAYNOTUR=False
978 CHGMETHOD=0
979 NUMDISCS=1
980 MULTIPLAY=False
981 SPINUPINTVL=3
982 CDDASCSIMODESEL=0
983 CDDASCSIREADCMD=0
984 CDDASCSIDENSITY=0
985 CDDADATABE=0
986 ;;
987 6) # Compaq Tru64 UNIX / Digital UNIX ATAPI (SCSI emulation)
988 # Set up as a "generic" SCSI-2 drive
989 METHOD=0
990 VENDOR=0
991 VOLBASE=0
992 VOLTAPER=0
993 PLAYMSF=True
994 PLAY12=False
995 PLAY10=False
996 PLAYTI=True
997 LOAD=True
998 EJECT=True
999 MODEDBD=False
1000 MODE10BYTE=False
1001 VOLSUPP=True
1002 BALSUPP=True
1003 CHRSUPP=True
1004 VOLCTL=7
1005 PAUSE=True
1006 STRICTPR=False
1007 PLAYPAUSEPLAY=False
1008 CADDYLOCK=True
1009 CURPOSFMT=True
1010 PLAYNOTUR=False
1011 CHGMETHOD=0
1012 NUMDISCS=1
1013 MULTIPLAY=False
1014 SPINUPINTVL=3
1015 CDDASCSIMODESEL=0
1016 CDDASCSIREADCMD=0
1017 CDDASCSIDENSITY=0
1018 CDDADATABE=0
1019 ;;
1020 7) # HP-UX ATAPI (SCSI emulation)
1021 # Set up as a "generic" SCSI-2 drive
1022 METHOD=0
1023 VENDOR=0
1024 VOLBASE=0
1025 VOLTAPER=0
1026 PLAYMSF=True
1027 PLAY12=False
1028 PLAY10=False
1029 PLAYTI=True
1030 LOAD=True
1031 EJECT=True
1032 MODEDBD=True
1033 MODE10BYTE=False
1034 VOLSUPP=True
1035 BALSUPP=True
1036 CHRSUPP=True
1037 VOLCTL=7
1038 PAUSE=True
1039 STRICTPR=False
1040 PLAYPAUSEPLAY=False
1041 CADDYLOCK=True
1042 CURPOSFMT=True
1043 PLAYNOTUR=False
1044 CHGMETHOD=0
1045 NUMDISCS=1
1046 MULTIPLAY=False
1047 SPINUPINTVL=3
1048 CDDASCSIMODESEL=0
1049 CDDASCSIREADCMD=0
1050 CDDASCSIDENSITY=0
1051 CDDADATABE=0
1052 ;;
1053 *) # Should not get here
1054 $ECHO " Error: unsupported ioctl method."
1055 return 1
1056 ;;
1057 esac
1058
1059 return 0
1060 }
1061
1062
1063 drive_sel()
1064 {
1065 if [ "$OS_SYS" = QNX ]
1066 then
1067 ask_nonscsi_config
1068 return $?
1069 fi
1070
1071 eval `\
1072 (
1073 $ECHO "ENTRIES=\""
1074 cd $CFGDIR/.tbl
1075 for i in *
1076 do
1077 if [ -f $i ]
1078 then
1079 if fgrep tblver=6 $CFGDIR/.tbl/$i \
1080 >/dev/null 2>&1
1081 then
1082 $ECHO "$i \c"
1083 else
1084 log_err -p \
1085 "$CFGDIR/.tbl/$i version mismatch"
1086 fi
1087 fi
1088 done
1089 $ECHO "\""
1090 )`
1091
1092 j=1
1093 >$BTMPFILE
1094 if [ -n "$ENTRIES" ]
1095 then
1096 for i in $ENTRIES
1097 do
1098 brand=`fgrep tblalias= $CFGDIR/.tbl/$i 2>/dev/null | \
1099 sed 's/^.*tblalias=//'`
1100 if [ -z "$brand" ]
1101 then
1102 brand=$i
1103 fi
1104 $ECHO " $j\t$brand" >>$BTMPFILE
1105 j=`expr $j + 1`
1106 done
1107 fi
1108 if [ "$IS_SCSI" -eq 0 ]
1109 then
1110 $ECHO " $j\tother non-SCSI" >>$BTMPFILE
1111 elif [ "$IS_SCSI" -eq 1 ]
1112 then
1113 $ECHO " $j\tother SCSI" >>$BTMPFILE
1114 fi
1115 $ECHO " ..\tStart over with drive $DRVNO configuration" >>$BTMPFILE
1116 $ECHO " q\tquit (abort configuration)" >>$BTMPFILE
1117
1118 showmenu=1
1119 while :
1120 do
1121 if [ $showmenu = 1 ]
1122 then
1123 $ECHO "\n Device ($XMCD_DEV) configuration"
1124 $ECHO " Please select the drive brand:\n"
1125
1126 PGLEN=`wc -l $BTMPFILE | $AWK '{ print $1 + 2 }'`
1127 if [ $PGLEN -gt 18 ]
1128 then
1129 PGLEN=`expr $PGLEN / 2`
1130 pr -t -2 -w78 -l$PGLEN $BTMPFILE
1131 else
1132 cat $BTMPFILE
1133 fi
1134 showmenu=0
1135 fi
1136
1137 if get_str "\n Enter choice:"
1138 then
1139 if [ "$ANS" = q ]
1140 then
1141 rm -f $BTMPFILE
1142 return 1
1143 elif [ "$ANS" = ".." ]
1144 then
1145 rm -f $BTMPFILE
1146 return 2
1147 elif [ "$ANS" -lt 1 -o "$ANS" -gt $j ]
1148 then
1149 $ECHO " Please answer 1 to $j."
1150 elif [ "$IS_SCSI" -eq 0 ] && [ "$ANS" = "$j" ]
1151 then
1152 ask_nonscsi_config
1153 rm -f $BTMPFILE
1154 return $?
1155 elif [ "$IS_SCSI" -eq 1 ] && [ "$ANS" = "$j" ]
1156 then
1157 ask_scsi_config
1158 rm -f $BTMPFILE
1159 return $?
1160 else
1161 k=1
1162 for i in $ENTRIES
1163 do
1164 if [ $k = $ANS ]
1165 then
1166 model_sel $i $CFGDIR/.tbl/$i
1167 ret=$?
1168 if [ $ret -eq 2 ]
1169 then
1170 showmenu=1
1171 break
1172 else
1173 rm -f $BTMPFILE
1174 return $ret
1175 fi
1176 fi
1177 k=`expr $k + 1`
1178 done
1179 fi
1180 else
1181 $ECHO " Please answer 1 to $j."
1182 fi
1183 done
1184
1185 # Should not get here.
1186 rm -f $BTMPFILE
1187 return 1
1188 }
1189
1190
1191 model_sel()
1192 {
1193 BRAND=$1
1194 CFGFILE=$2
1195
1196 $ECHO "\n Device ($XMCD_DEV) configuration"
1197 $ECHO " Please select the $BRAND drive model:\n"
1198
1199 $AWK -F: '
1200 BEGIN { n = 1 }
1201 /^#/ { next }
1202 /^$/ { next }
1203 /^[ ]*$/ { next }
1204 {
1205 if ($2 == 0) {
1206 if ($3 == 1)
1207 mode = "OS driver ioctl"
1208 else
1209 mode = "other"
1210 }
1211 else if ($2 == 1)
1212 mode = "SCSI-1"
1213 else if ($2 >= 2)
1214 mode = "SCSI-2"
1215
1216 if (is_scsi == "-1") {
1217 printf(" %d\t%-12s%s\n", n, $1, mode)
1218 n++
1219 }
1220 else if (is_scsi == "0" && $2 == 0) {
1221 printf(" %d\t%-12s%s\n", n, $1, mode)
1222 n++
1223 }
1224 else if (is_scsi == "1" && $2 >= 1) {
1225 printf(" %d\t%-12s%s\n", n, $1, mode)
1226 n++
1227 }
1228 }
1229 END {
1230 if (is_scsi == "0")
1231 printf(" %d\t%-12s%s\n", n, "other", "non-SCSI")
1232 else if (is_scsi == "1")
1233 printf(" %d\t%-12s%s\n", n, "other", "SCSI")
1234 printf(" ..\tGo back to drive brand menu\n")
1235 printf(" q\tquit (abort configuration)\n")
1236 }
1237 ' is_scsi="$IS_SCSI" $CFGFILE >$MTMPFILE
1238
1239 k=`wc -l $MTMPFILE | $AWK '{ print $1 - 2 }'`
1240 PGLEN=`expr $k + 4`
1241
1242 if [ $PGLEN -gt 16 ]
1243 then
1244 $ECHO "\tModel Mode\c"
1245 $ECHO " Model Mode\n"
1246 PGLEN=`expr $PGLEN / 2`
1247 pr -t -2 -w78 -l$PGLEN $MTMPFILE
1248 else
1249 $ECHO "\tModel Mode\n"
1250 cat $MTMPFILE
1251 fi
1252
1253 rm -f $MTMPFILE
1254
1255 while :
1256 do
1257 if get_str "\n Enter choice:"
1258 then
1259 if [ "$ANS" = "q" ]
1260 then
1261 return 1
1262 elif [ "$ANS" = ".." ]
1263 then
1264 return 2
1265 elif [ "$ANS" -lt 1 -o "$ANS" -gt $k ]
1266 then
1267 $ECHO " Please answer 1 to $k."
1268 elif [ "$IS_SCSI" -eq 0 ] && [ "$ANS" = "$k" ]
1269 then
1270 ask_nonscsi_config
1271 return $?
1272 elif [ "$IS_SCSI" -eq 1 ] && [ "$ANS" = "$k" ]
1273 then
1274 ask_scsi_config
1275 return $?
1276 else
1277 read_config $CFGFILE $ANS
1278 if [ "$IS_SCSI" -eq 0 ]
1279 then
1280 ask_nonscsi_config
1281 fi
1282 return $?
1283 fi
1284 else
1285 $ECHO " Please answer 1 to $k."
1286 fi
1287 done
1288
1289 # Should not get here.
1290 return 1
1291 }
1292
1293
1294 read_config()
1295 {
1296 eval `$AWK -F: '
1297 BEGIN {
1298 n = 0
1299 }
1300 !/^#/ {
1301 if ((is_scsi && $2 > 0) || (!is_scsi && $2 == 0)) {
1302 n++
1303 if (n == sel) {
1304 if ($2 > 0) {
1305 print "METHOD=0"
1306 printf("VENDOR=%d\n", $3)
1307 }
1308 else {
1309 printf("METHOD=%d\n", $3)
1310 print "VENDOR=0"
1311 }
1312
1313 printf("PLAYMSF=%s\n", $4 == 0 ? "False" : "True")
1314 printf("PLAY12=%s\n", $5 == 0 ? "False" : "True")
1315 printf("PLAY10=%s\n", $6 == 0 ? "False" : "True")
1316 printf("PLAYTI=%s\n", $7 == 0 ? "False" : "True")
1317 printf("LOAD=%s\n", $8 == 0 ? "False" : "True")
1318 printf("EJECT=%s\n", $9 == 0 ? "False" : "True")
1319 printf("MODEDBD=%s\n", $10 == 0 ? "False" : "True")
1320 printf("MODE10BYTE=%s\n", $11 == 0 ? "False" : "True")
1321 printf("VOLCTL=%d\n", $12)
1322 printf("VOLBASE=%d\n", $13)
1323 printf("VOLTAPER=%d\n", $14)
1324 printf("PAUSE=%s\n", $15 == 0 ? "False" : "True")
1325 printf("STRICTPR=%s\n", $16 == 0 ? "False" : "True")
1326 printf("PLAYPAUSEPLAY=%s\n", $17 == 0 ? "False" : "True")
1327 printf("CADDYLOCK=%s\n", $18 == 0 ? "False" : "True")
1328 printf("CURPOSFMT=%s\n", $19 == 0 ? "False" : "True")
1329 printf("PLAYNOTUR=%s\n", $20 == 0 ? "False" : "True")
1330 printf("CHGMETHOD=%d\n", $21)
1331 printf("MULTIPLAY=%s\n", $21 == 0 ? "False" : "True")
1332 printf("NUMDISCS=%d\n", $22)
1333 printf("SPINUPINTVL=%d\n", $23)
1334 printf("CDDASCSIMODESEL=%s\n", $24 == 0 ? "False" : "True")
1335 printf("CDDASCSIDENSITY=%d\n", $25)
1336 printf("CDDASCSIREADCMD=%d\n", $26)
1337 printf("CDDADATABE=%s\n", $27 == 0 ? "False" : "True")
1338 }
1339 }
1340 }
1341 ' is_scsi="$IS_SCSI" sel=$2 $1`
1342
1343 return $?
1344 }
1345
1346
1347 set_devnode_elems()
1348 {
1349 # Set default device node name elements
1350
1351 if [ -x /bin/ipcs -o -x /usr/bin/ipcs ]
1352 then
1353 # System has SysV IPC: enable CDDA write-file only as default
1354 CDDAMETHOD=1
1355 CDDAREADMETHOD=1
1356 CDDAWRITEMETHOD=5
1357 else
1358 # No SysV IPC: disable CDDA
1359 CDDAMETHOD=0
1360 CDDAREADMETHOD=0
1361 CDDAWRITEMETHOD=0
1362 fi
1363 CDDAREADCHUNKBLOCKS=4
1364 IOCDEF=0
1365
1366 if [ "$OS_SYS" = AIX ]
1367 then
1368 # IBM AIX
1369 DEVPREF=/dev/rcd
1370 DEVSUFF=
1371 FIRST=0
1372 IOCDEF=3
1373 CDDAMETHOD=1
1374 if [ "$IS_SCSI" -eq 1 ]
1375 then
1376 CDDAREADMETHOD=1
1377 else
1378 CDDAREADMETHOD=5
1379 fi
1380 CDDAWRITEMETHOD=1
1381 elif [ "$OS_SYS" = A/UX ]
1382 then
1383 # Apple A/UX
1384 DEVPREF=/dev/scsi/
1385 DEVSUFF=
1386 FIRST=3
1387 elif [ "$OS_SYS" = BSD/OS ]
1388 then
1389 # BSDI BSD/OS
1390 DEVPREF=/dev/rsd
1391 DEVSUFF=c
1392 FIRST=2
1393 IOCDEF=4
1394 CDDAMETHOD=1
1395 CDDAREADMETHOD=1
1396 CDDAWRITEMETHOD=1
1397 elif [ "$OS_SYS" = dgux ]
1398 then
1399 # Data General DG/UX
1400 DEVPREF="/dev/scsi/scsi(ncsc@7(FFFB0000,7),"
1401 DEVSUFF=",0)"
1402 FIRST=2
1403 elif [ "$OS_SYS" = FreeBSD ]
1404 then
1405 # FreeBSD
1406 if [ "$IS_SCSI" -eq 1 ]
1407 then
1408 DEVPREF=/dev/rcd
1409 else
1410 DEVPREF=/dev/rwcd
1411 fi
1412 DEVSUFF=c
1413 FIRST=0
1414 IOCDEF=2
1415 CDDAMETHOD=1
1416 if [ "$IS_SCSI" -eq 1 ]
1417 then
1418 CDDAREADMETHOD=1
1419 else
1420 CDDAREADMETHOD=4
1421 fi
1422 CDDAWRITEMETHOD=1
1423 elif [ "$OS_SYS" = HP-UX ]
1424 then
1425 case "$OS_REL" in
1426 [AB].09*) # HP-UX 9.x
1427 DEVPREF=/dev/rdsk/c201d
1428 DEVSUFF=s0
1429 FIRST=4
1430 ;;
1431 B.10*) # HP-UX 10.x
1432 DEVPREF=/dev/rdsk/c0t
1433 DEVSUFF=s0
1434 FIRST=4
1435 ;;
1436 B.11*) # HP-UX 11.x
1437 DEVPREF=/dev/rdsk/c0t
1438 DEVSUFF=s0
1439 FIRST=4
1440 ;;
1441 *)
1442 OS_REL=unknown
1443 ;;
1444 esac
1445 IOCDEF=7
1446 CDDAMETHOD=1
1447 CDDAREADMETHOD=1
1448 CDDAWRITEMETHOD=4
1449 elif [ "$OS_SYS" = IRIX -o "$OS_SYS" = IRIX64 ]
1450 then
1451 # SGI IRIX
1452 DEVPREF=`hinv | grep CDROM | line | \
1453 sed 's/^.*controller \([0-9]*\).*$/\/dev\/scsi\/sc\1d/'`
1454 DEVSUFF=l0
1455 FIRST=`hinv | grep CDROM | line | \
1456 sed 's/^.*unit \([0-9]*\).*$/\1/'`
1457 CDDAMETHOD=1
1458 CDDAREADMETHOD=1
1459 CDDAWRITEMETHOD=3
1460 elif [ "$OS_SYS" = Linux ]
1461 then
1462 # Linux
1463 if [ "$IS_SCSI" -eq 1 ]
1464 then
1465 DEVPREF=/dev/scd
1466 FIRST=0
1467 else
1468 DEVPREF=/dev/cdrom
1469 FIRST=
1470 fi
1471 DEVSUFF=
1472 BLKDEV=1
1473 IOCDEF=1
1474 CDDAMETHOD=1
1475 if [ "$IS_SCSI" -eq 1 ]
1476 then
1477 CDDAREADMETHOD=1
1478 else
1479 CDDAREADMETHOD=3
1480 fi
1481 CDDAWRITEMETHOD=1
1482 CDDAREADCHUNKBLOCKS=8
1483 elif [ "$OS_SYS" = NetBSD ] || [ "$OS_SYS" = OpenBSD ]
1484 then
1485 # NetBSD/OpenBSD
1486 if [ "$IS_SCSI" -eq 1 ]
1487 then
1488 DEVPREF=/dev/rcd
1489 else
1490 DEVPREF=/dev/rwcd
1491 fi
1492 case "$OS_MACH" in
1493 *86)
1494 DEVSUFF=d
1495 ;;
1496 *)
1497 DEVSUFF=c
1498 ;;
1499 esac
1500 FIRST=0
1501 IOCDEF=2
1502 CDDAMETHOD=1
1503 if [ "$IS_SCSI" -eq 1 ]
1504 then
1505 CDDAREADMETHOD=1
1506 else
1507 CDDAREADMETHOD=4
1508 fi
1509 CDDAWRITEMETHOD=1
1510 elif [ "$OS_SYS" = OSF1 ]
1511 then
1512 case "$OS_MACH" in
1513 alpha) # Digital OSF/1
1514 if [ -d /devices/rdisk ]
1515 then
1516 DEVPREF=/devices/rdisk/cdrom
1517 DEVSUFF=c
1518 FIRST=2
1519 else
1520 DEVPREF=/dev/rrz
1521 DEVSUFF=c
1522 FIRST=4
1523 fi
1524 IOCDEF=6
1525 ;;
1526 *)
1527 OS_REL=unknown
1528 ;;
1529 esac
1530 elif [ "$OS_SYS" = QNX ]
1531 then
1532 # QNX
1533 DEVPREF=/dev/cd
1534 DEVSUFF=
1535 FIRST=0
1536 BLKDEV=1
1537 IOCDEF=1
1538 elif [ "$OS_SYS" = SINIX-N ]
1539 then
1540 # SNI SINIX-N
1541 DEVPREF=/dev/ios0/rsdisk
1542 DEVSUFF=s0
1543 FIRST=005
1544 elif [ "$OS_SYS" = SINIX-P ]
1545 then
1546 # SNI SINIX-P
1547 DEVPREF=/dev/ios0/rsdisk
1548 DEVSUFF=s0
1549 FIRST=006
1550 elif [ "$OS_SYS" = SunOS -o "$OS_SYS" = Solaris ]
1551 then
1552 case "$OS_REL" in
1553 4.*) # SunOS 4.x
1554 case `arch -k` in
1555 sun4[cmu])
1556 DEVPREF=/dev/rsr
1557 DEVSUFF=
1558 FIRST=0
1559 ;;
1560 *)
1561 OS_REL=unknown
1562 ;;
1563 esac
1564 CDDAMETHOD=1
1565 CDDAREADMETHOD=1
1566 CDDAWRITEMETHOD=5
1567 CDDAREADCHUNKBLOCKS=16
1568 ;;
1569 5.*) # SunOS 5.x
1570 YNDEF=y
1571 if get_yn \
1572 " Does your system use the Volume Manager (/usr/sbin/vold)"
1573 then
1574 DEVPREF=/vol/dev/aliases/cdrom
1575 DEVSUFF=
1576 FIRST=0
1577 VOLMGT=True
1578 CLOSEONEJECT=True
1579 else
1580 DEVPREF=/dev/rdsk/c0t
1581 DEVSUFF=d0s0
1582 FIRST=6
1583 fi
1584 IOCDEF=1
1585 CDDAMETHOD=1
1586 if [ "$IS_SCSI" -eq 1 ]
1587 then
1588 CDDAREADMETHOD=1
1589 else
1590 CDDAREADMETHOD=2
1591 fi
1592 CDDAWRITEMETHOD=2
1593 CDDAREADCHUNKBLOCKS=75
1594 ;;
1595 *)
1596 OS_REL=unknown
1597 ;;
1598 esac
1599 elif [ "$OS_SYS" = ULTRIX ]
1600 then
1601 case "$OS_MACH" in
1602 RISC) # Digital Ultrix
1603 DEVPREF=/dev/rrz
1604 DEVSUFF=c
1605 FIRST=4
1606 ;;
1607 *)
1608 OS_REL=unknown
1609 ;;
1610 esac
1611 elif [ -x /bin/ftx ] && ftx
1612 then
1613 case "$OS_REL" in
1614 4.*)
1615 if [ -x /bin/hppa ] && hppa
1616 then
1617 # Stratus FTX SVR4/PA-RISC
1618 DEVPREF=/dev/rcdrom/c0a2d
1619 DEVSUFF=l0
1620 FIRST=0
1621 else
1622 # On non-supported FTX variants
1623 OS_REL=unknown
1624 fi
1625 ;;
1626 *)
1627 OS_REL=unknown
1628 ;;
1629 esac
1630 elif [ -x /bin/i386 -o -x /sbin/i386 ] && i386
1631 then
1632 case "$OS_REL" in
1633 3.2) # SCO UNIX/Open Desktop/Open Server
1634 DEVPREF=/dev/rcd
1635 DEVSUFF=
1636 FIRST=0
1637 IOCDEF=5
1638 CDDAMETHOD=1
1639 CDDAREADMETHOD=1
1640 CDDAWRITEMETHOD=1
1641 CDDAREADCHUNKBLOCKS=8
1642 ;;
1643 4.0) # UNIX SVR4.0/x86
1644 DEVPREF=/dev/rcdrom/cd
1645 DEVSUFF=
1646 FIRST=0
1647 ;;
1648 4.1) # UNIX SVR4.1/x86
1649 DEVPREF=/dev/rcdrom/cdrom
1650 DEVSUFF=
1651 FIRST=1
1652 ;;
1653 4.2) # UNIX SVR4.2/x86 (UnixWare 1.x)
1654 DEVPREF=/dev/rcdrom/cdrom
1655 DEVSUFF=
1656 FIRST=1
1657 CDDAMETHOD=1
1658 CDDAREADMETHOD=1
1659 CDDAWRITEMETHOD=1
1660 ;;
1661 4*MP) # UNIX SVR4.2MP/x86 (UnixWare 2.x)
1662 DEVPREF=/dev/rcdrom/cdrom
1663 DEVSUFF=
1664 FIRST=1
1665 CDDAMETHOD=1
1666 CDDAREADMETHOD=1
1667 CDDAWRITEMETHOD=1
1668 ;;
1669 5) # UNIX SVR5/x86 (UnixWare 7, Caldera Open UNIX 8)
1670 DEVPREF=/dev/rcdrom/cdrom
1671 DEVSUFF=
1672 FIRST=1
1673 CDDAMETHOD=1
1674 CDDAREADMETHOD=1
1675 CDDAWRITEMETHOD=1
1676 ;;
1677 5.*) # UNIX SVR5.*/x86 (UnixWare 7.x, Caldera Open UNIX 8)
1678 DEVPREF=/dev/rcdrom/cdrom
1679 DEVSUFF=
1680 FIRST=1
1681 CDDAMETHOD=1
1682 CDDAREADMETHOD=1
1683 CDDAWRITEMETHOD=1
1684 ;;
1685 *)
1686 OS_REL=unknown
1687 ;;
1688 esac
1689 elif [ -x /bin/m88k ] && m88k
1690 then
1691 case "$OS_REL" in
1692 4.0) # UNIX SVR4.0/88k
1693 DEVPREF=/dev/rdsk/m187_c0d
1694 DEVSUFF=s7
1695 FIRST=3
1696 ;;
1697 *)
1698 OS_REL=unknown
1699 ;;
1700 esac
1701 elif [ -r /vmunix ] && (strings /vmunix | fgrep NEWS-OS) \
1702 >/dev/null 2>&1
1703 then
1704 # Sony NEWS-OS
1705 DEVPREF=/dev/rsd
1706 DEVSUFF=c
1707 FIRST=06
1708 else
1709 OS_REL=unknown
1710 fi
1711
1712 NOT_SUPPORTED="Error: You are not running an operating system that's currently supported by xmcd."
1713
1714 if [ "$OS_REL" = unknown ]
1715 then
1716 $ECHO "$NOT_SUPPORTED"
1717 YNDEF=n
1718 get_yn "Would you like to proceed anyway"
1719 if [ $? -ne 0 ]
1720 then
1721 $ECHO "\nConfiguration aborted." >&2
1722 log_err -n "Configuration aborted by user"
1723 do_exit 3
1724 fi
1725 fi
1726 }
1727
1728
1729 drive_config()
1730 {
1731 EXITSTAT=0
1732 DRVNO=0
1733 SEDLINE=
1734
1735 case "$OS_SYS" in
1736 Linux|FreeBSD|NetBSD|OpenBSD)
1737 SCSIDEF=n
1738 ;;
1739 *)
1740 SCSIDEF=y
1741 ;;
1742 esac
1743
1744 while :
1745 do
1746 $ECHO "\nConfiguring drive $DRVNO..."
1747 NUMDISCS=
1748
1749 #
1750 # Set default device path name
1751 #
1752
1753 YNDEF=$SCSIDEF
1754 if get_yn "\n Does this drive use a SCSI interface"
1755 then
1756 IS_SCSI=1
1757 else
1758 IS_SCSI=0
1759
1760 $ECHO "\n Non-SCSI drives are currently supported only on the"
1761 $ECHO " BSDI, Digital/Tru64 UNIX, FreeBSD, HP-UX, IBM AIX,"
1762 $ECHO " Linux, NetBSD, OpenBSD, QNX, SCO Open Server and"
1763 $ECHO " Sun Solaris platforms."
1764 $ECHO " You must have kernel driver support for your CD-ROM"
1765 $ECHO " drive type."
1766
1767 YNDEF=y
1768 get_yn "\n Do you want to continue"
1769 if [ $? -ne 0 ]
1770 then
1771 $ECHO "\nConfiguration aborted." >&2
1772 log_err -n "Configuration aborted by user."
1773 do_exit 1
1774 fi
1775 fi
1776
1777 set_devnode_elems
1778
1779 if [ $DRVNO -eq 0 ]
1780 then
1781 DEVNO=$FIRST
1782 elif [ -z "$DEVNO" ]
1783 then
1784 DEVNO=1
1785 fi
1786
1787 if [ $DRVNO -eq 0 ] && get_old_cparm "device" && [ -n "$PARMVAL" ]
1788 then
1789 # If the old device path has the expected prefix for the
1790 # type of device, then use the old device name as the
1791 # default
1792 n="`expr length "$DEVPREF" 2>/dev/null`"
1793 m="`expr $PARMVAL : "$DEVPREF" 2>/dev/null`"
1794 if [ -n "$n" -a "$n" != 0 -a "$n" = "$m" ]
1795 then
1796 DEFAULT_DEV=$PARMVAL
1797 else
1798 DEFAULT_DEV="${DEVPREF}${DEVNO}${DEVSUFF}"
1799 fi
1800 else
1801 DEFAULT_DEV="${DEVPREF}${DEVNO}${DEVSUFF}"
1802 fi
1803
1804 while :
1805 do
1806 if get_str "\n Enter device path: [$DEFAULT_DEV]"
1807 then
1808 XMCD_DEV=$ANS
1809 else
1810 XMCD_DEV=$DEFAULT_DEV
1811 fi
1812
1813 if [ $VOLMGT = True ]
1814 then
1815 break
1816 fi
1817 if [ $BLKDEV = 0 -a -c $XMCD_DEV ]
1818 then
1819 break
1820 fi
1821 if [ $BLKDEV = 1 -a -b $XMCD_DEV ]
1822 then
1823 break
1824 fi
1825
1826 $ECHO " $XMCD_DEV is an invalid device."
1827 done
1828
1829 CONFIGFILE=`basename $XMCD_DEV`
1830 if [ $DRVNO -eq 0 ]
1831 then
1832 XMCD_DEV0="$XMCD_DEV"
1833 fi
1834
1835 drive_sel
1836 CFGSTAT=$?
1837 if [ $CFGSTAT -eq 2 ]
1838 then
1839 continue
1840 elif [ $CFGSTAT -ne 0 ]
1841 then
1842 $ECHO "\nConfiguration aborted." >&2
1843 log_err -n "Configuration aborted by user."
1844 do_exit $CFGSTAT
1845 fi
1846
1847 if [ $NUMDISCS -gt 1 ]
1848 then
1849 $ECHO "\n This drive is a ${NUMDISCS}-disc changer."
1850
1851 case $CHGMETHOD in
1852 1)
1853 # SCSI LUN addressing method
1854 $ECHO "\n In order to change discs, your system must support separate device"
1855 $ECHO " nodes for each LUN of the multi-disc changer."
1856
1857 YNDEF=y
1858 if get_yn " Does your OS platforms support this?"
1859 then
1860 $ECHO "\n Please enter the device nodes now."
1861
1862 n=1
1863 DEVLIST=
1864 LUNDEV=$XMCD_DEV
1865 while [ $n -le $NUMDISCS ]
1866 do
1867 #
1868 # Construct a default device
1869 #
1870 if [ "$OS_SYS" != HP-UX ] && \
1871 (echo $LUNDEV | grep "s[0-9]*$") >/dev/null 2>&1
1872 then
1873 LUNPREF=`echo $LUNDEV | \
1874 sed 's/\(.*\)[0-9]s[0-9]*/\1/'`
1875 LUNNUM=`echo $LUNDEV | \
1876 sed 's/.*\([0-9]\)s[0-9]*/\1/'`
1877 LUNSUFF=`echo $LUNDEV | \
1878 sed 's/.*[0-9]\(s[0-9]*\)/\1/'`
1879 else
1880 LUNPREF=`echo $LUNDEV | \
1881 sed 's/\(.*\)[0-9][^0-9]*/\1/'`
1882 LUNNUM=`echo $LUNDEV | \
1883 sed 's/.*\([0-9]\)[^0-9]*/\1/'`
1884 LUNSUFF=`echo $LUNDEV | \
1885 sed 's/.*[0-9]\([^0-9]*\)/\1/'`
1886 fi
1887
1888 if [ -n "$LUNNUM" ]
1889 then
1890 if [ $n -gt 1 ]
1891 then
1892 LUNNUM=`expr $LUNNUM + 1`
1893 fi
1894 else
1895 LUNNUM=`expr $n - 1`
1896 fi
1897
1898 SAVDEV=$LUNDEV
1899 LUNDEV="${LUNPREF}${LUNNUM}${LUNSUFF}"
1900
1901 if get_str " Disc $n: [$LUNDEV]"
1902 then
1903 LUNDEV=$ANS
1904 fi
1905
1906 if [ $VOLMGT = False ]
1907 then
1908 if [ $BLKDEV = 0 -a ! -c $LUNDEV ]
1909 then
1910 $ECHO " $LUNDEV is invalid. Try again."
1911 LUNDEV=$SAVDEV
1912 continue
1913 fi
1914 if [ $BLKDEV = 1 -a ! -b $LUNDEV ]
1915 then
1916 $ECHO " $LUNDEV is invalid. Try again."
1917 LUNDEV=$SAVDEV
1918 continue
1919 fi
1920 fi
1921
1922 if [ -z "$DEVLIST" ]
1923 then
1924 DEVLIST=$LUNDEV
1925 else
1926 DEVLIST="${DEVLIST};${LUNDEV}"
1927 fi
1928
1929 n=`expr $n + 1`
1930 done
1931 else
1932 $ECHO " It will be treated as a single disc player."
1933 CHGMETHOD=0
1934 NUMDISCS=1
1935 MULTIPLAY=False
1936 DEVLIST=$XMCD_DEV
1937 fi
1938 ;;
1939 2)
1940 # SCSI medium changer method
1941 $ECHO "\n In order to change discs, your system must support a separate device"
1942 $ECHO " node for the medium changer mechanism."
1943
1944 DEVLIST=$XMCD_DEV
1945
1946 YNDEF=y
1947 if get_yn " Does your OS platforms support this?"
1948 then
1949 while :
1950 do
1951 LUNDEV=/dev/changer
1952 if get_str \
1953 "\n Enter the medium changer device: [$LUNDEV]"
1954 then
1955 LUNDEV=$ANS
1956 fi
1957
1958 if [ ! -c $LUNDEV ]
1959 then
1960 $ECHO " $LUNDEV is invalid. Try again."
1961 continue
1962 fi
1963
1964 DEVLIST="${DEVLIST};${LUNDEV}"
1965 break
1966 done
1967 else
1968 $ECHO \
1969 "\n The drive will be treated as a single disc player."
1970 CHGMETHOD=0
1971 NUMDISCS=1
1972 MULTIPLAY=False
1973 DEVLIST=$XMCD_DEV
1974 fi
1975 ;;
1976 3)
1977 # OS ioctl method
1978 DEVLIST=$XMCD_DEV
1979 ;;
1980 *)
1981 # Unsupported changer method
1982 DEVLIST=$XMCD_DEV
1983 ;;
1984 esac
1985 else
1986 DEVLIST=$XMCD_DEV
1987 fi
1988
1989 DRVNOTICE="\n NOTE: This configuration disables these features:"
1990
1991 if [ $PLAYTI = False ]
1992 then
1993 $ECHO "$DRVNOTICE"
1994 DRVNOTICE="\c"
1995 $ECHO " - The Previous Index and Next Index buttons."
1996 fi
1997
1998 if [ $CADDYLOCK = False ]
1999 then
2000 $ECHO "$DRVNOTICE"
2001 DRVNOTICE="\c"
2002 $ECHO " - The caddy lock."
2003 fi
2004
2005 if [ $LOAD = False ]
2006 then
2007 $ECHO "$DRVNOTICE"
2008 DRVNOTICE="\c"
2009 $ECHO " - Software-controlled caddy load."
2010 fi
2011
2012 if [ $PAUSE = False -a $VENDOR = 0 ]
2013 then
2014 $ECHO "$DRVNOTICE"
2015 DRVNOTICE="\c"
2016 $ECHO " - Audio pause/resume function."
2017 fi
2018
2019 case "$VOLCTL" in
2020 0)
2021 $ECHO "$DRVNOTICE"
2022 DRVNOTICE="\c"
2023 $ECHO " - The volume, balance and channel routing controls."
2024 VOLSUPP=False
2025 BALSUPP=False
2026 CHRSUPP=False
2027 ;;
2028 1)
2029 $ECHO "$DRVNOTICE"
2030 DRVNOTICE="\c"
2031 $ECHO " - The balance and channel routing controls."
2032 VOLSUPP=True
2033 BALSUPP=False
2034 CHRSUPP=False
2035 ;;
2036 2)
2037 $ECHO "$DRVNOTICE"
2038 DRVNOTICE="\c"
2039 $ECHO " - The volume and channel routing controls."
2040 VOLSUPP=False
2041 BALSUPP=True
2042 CHRSUPP=False
2043 ;;
2044 3)
2045 $ECHO "$DRVNOTICE"
2046 DRVNOTICE="\c"
2047 $ECHO " - The channel routing control."
2048 VOLSUPP=True
2049 BALSUPP=True
2050 CHRSUPP=False
2051 ;;
2052 4)
2053 $ECHO "$DRVNOTICE"
2054 DRVNOTICE="\c"
2055 $ECHO " - The volume and balance controls."
2056 VOLSUPP=False
2057 BALSUPP=False
2058 CHRSUPP=True
2059 ;;
2060 5)
2061 $ECHO "$DRVNOTICE"
2062 DRVNOTICE="\c"
2063 $ECHO " - The balance control."
2064 VOLSUPP=True
2065 BALSUPP=False
2066 CHRSUPP=True
2067 ;;
2068 6)
2069 $ECHO "$DRVNOTICE"
2070 DRVNOTICE="\c"
2071 $ECHO " - The volume control."
2072 VOLSUPP=False
2073 BALSUPP=True
2074 CHRSUPP=True
2075 ;;
2076 7)
2077 VOLSUPP=True
2078 BALSUPP=True
2079 CHRSUPP=True
2080 ;;
2081 *)
2082 ;;
2083 esac
2084
2085 $ECHO "\n Creating the $CFGDIR/$CONFIGFILE file..."
2086 GDEVLIST=`echo $DEVLIST | sed 's/\//\\\\\//g'`
2087
2088 sed \
2089 -e "s/^!.*DO NOT MODIFY.*$/! DEVICE CONFIGURATION FILE/" \
2090 -e "s/^logicalDriveNumber:.*/logicalDriveNumber: $DRVNO/" \
2091 -e "s/^cddaMethod:.*/cddaMethod: $CDDAMETHOD/" \
2092 -e "s/^cddaReadMethod:.*/cddaReadMethod: $CDDAREADMETHOD/" \
2093 -e "s/^cddaWriteMethod:.*/cddaWriteMethod: $CDDAWRITEMETHOD/" \
2094 -e "s/^cddaReadChunkBlocks:.*/cddaReadChunkBlocks: $CDDAREADCHUNKBLOCKS/" \
2095 -e "s/^cddaScsiModeSelect:.*/cddaScsiModeSelect: $CDDASCSIMODESEL/" \
2096 -e "s/^cddaScsiReadCommand:.*/cddaScsiReadCommand: $CDDASCSIREADCMD/" \
2097 -e "s/^cddaScsiDensity:.*/cddaScsiDensity: $CDDASCSIDENSITY/" \
2098 -e "s/^cddaDataBigEndian:.*/cddaDataBigEndian: $CDDADATABE/" \
2099 -e "s/^deviceInterfaceMethod:.*/deviceInterfaceMethod: $METHOD/" \
2100 -e "s/^mediumChangeMethod:.*/mediumChangeMethod: $CHGMETHOD/" \
2101 -e "s/^numDiscs:.*/numDiscs: $NUMDISCS/" \
2102 -e "s/^deviceList:.*/deviceList: $GDEVLIST/" \
2103 -e "s/^driveVendorCode:.*/driveVendorCode: $VENDOR/" \
2104 -e "s/^playAudio12Support:.*/playAudio12Support: $PLAY12/" \
2105 -e "s/^playAudioMSFSupport:.*/playAudioMSFSupport: $PLAYMSF/" \
2106 -e "s/^playAudio10Support:.*/playAudio10Support: $PLAY10/" \
2107 -e "s/^playAudioTISupport:.*/playAudioTISupport: $PLAYTI/" \
2108 -e "s/^loadSupport:.*/loadSupport: $LOAD/" \
2109 -e "s/^ejectSupport:.*/ejectSupport: $EJECT/" \
2110 -e "s/^modeSenseSetDBD:.*/modeSenseSetDBD: $MODEDBD/" \
2111 -e "s/^modeSenseUse10Byte:.*/modeSenseUse10Byte: $MODE10BYTE/" \
2112 -e "s/^volumeControlSupport:.*/volumeControlSupport: $VOLSUPP/" \
2113 -e "s/^balanceControlSupport:.*/balanceControlSupport: $BALSUPP/" \
2114 -e "s/^channelRouteSupport:.*/channelRouteSupport: $CHRSUPP/" \
2115 -e "s/^volumeControlTaper:.*/volumeControlTaper: $VOLTAPER/" \
2116 -e "s/^scsiAudioVolumeBase:.*/scsiAudioVolumeBase: $VOLBASE/" \
2117 -e "s/^pauseResumeSupport:.*/pauseResumeSupport: $PAUSE/" \
2118 -e "s/^strictPauseResume:.*/strictPauseResume: $STRICTPR/" \
2119 -e "s/^playPausePlay:.*/playPausePlay: $PLAYPAUSEPLAY/" \
2120 -e "s/^caddyLockSupport:.*/caddyLockSupport: $CADDYLOCK/" \
2121 -e "s/^curposFormat:.*/curposFormat: $CURPOSFMT/" \
2122 -e "s/^noTURWhenPlaying:.*/noTURWhenPlaying: $PLAYNOTUR/" \
2123 -e "s/^spinUpInterval:.*/spinUpInterval: $SPINUPINTVL/" \
2124 -e "s/^spinDownOnLoad:.*/spinDownOnLoad: $STOPONLOAD/" \
2125 -e "s/^ejectOnExit:.*/ejectOnExit: $EJECTONEXIT/" \
2126 -e "s/^stopOnExit:.*/stopOnExit: $STOPONEXIT/" \
2127 -e "s/^exitOnEject:.*/exitOnEject: $EXITONEJECT/" \
2128 -e "s/^closeOnEject:.*/closeOnEject: $CLOSEONEJECT/" \
2129 -e "s/^multiPlay:.*/multiPlay: $MULTIPLAY/" \
2130 < $CFGDIR/device.cfg > $CFGDIR/$CONFIGFILE
2131 do_chmod 644 $CFGDIR/$CONFIGFILE 2>/dev/null
2132 (cd $CFGDIR; rm -f ${CONFIGFILE}-${OS_NODE} ;\
2133 do_link $CONFIGFILE ${CONFIGFILE}-${OS_NODE})
2134
2135 YNDEF=n
2136 if get_yn \
2137 "\n Do you have more CD-ROM or CD-R drives on your system"
2138 then
2139 DRVNO=`expr $DRVNO + 1`
2140
2141 case `expr $DEVNO : '.*'` in
2142 0)
2143 ;;
2144 1)
2145 DEVNO=`expr $DEVNO + 1`
2146 ;;
2147 2)
2148 DEVNO=`echo $DEVNO | \
2149 $AWK '{ printf("%02d\n", $1 + 1) }'`
2150 ;;
2151 3)
2152 DEVNO=`echo $DEVNO | \
2153 $AWK '{ printf("%03d\n", $1 + 1) }'`
2154 ;;
2155 4)
2156 DEVNO=`echo $DEVNO | \
2157 $AWK '{ printf("%04d\n", $1 + 1) }'`
2158 ;;
2159 *)
2160 DEVNO=`expr $DEVNO + 1`
2161 ;;
2162 esac
2163 else
2164 break
2165 fi
2166 done
2167 }
2168
2169
2170 common_config()
2171 {
2172 #
2173 # Configure common.cfg file
2174 #
2175 chmod 644 $CFGDIR/common.cfg 2>/dev/null
2176 if [ -w $CFGDIR/common.cfg ]
2177 then
2178 $AWK '
2179 /^device:/ {
2180 printf("device:\t\t\t%s\n", device)
2181 next
2182 }
2183 /^cdinfoPath:/ {
2184 printf("cdinfoPath:\t\t%s\n", cdinfopath)
2185 next
2186 }
2187 /^internetOffline:/ {
2188 printf("internetOffline:\t\t%s\n", inetoffln)
2189 next
2190 }
2191 /^cddbUseProxy:/ {
2192 printf("cddbUseProxy:\t\t%s\n", useproxy)
2193 next
2194 }
2195 /^proxyServer:/ {
2196 printf("proxyServer:\t\t%s\n", proxyserver)
2197 next
2198 }
2199 /^proxyAuthorization:/ {
2200 printf("proxyAuthorization:\t%s\n", proxyauth)
2201 next
2202 }
2203 /^autoMusicBrowser:/ {
2204 printf("autoMusicBrowser:\t%s\n", autobrowser)
2205 next
2206 }
2207 /^solaris2VolumeManager:/ {
2208 printf("solaris2VolumeManager:\t%s\n", volmgt)
2209 next
2210 }
2211 {
2212 print $0
2213 }' \
2214 device="$XMCD_DEV0" \
2215 cdinfopath="$CDINFOPATH" \
2216 inetoffln="$INETOFFLN" \
2217 useproxy="$USEPROXY" \
2218 proxyserver="$PROXYSERVER" \
2219 proxyauth="$PROXYAUTH" \
2220 autobrowser="$AUTOBROWSER" \
2221 volmgt="$VOLMGT" \
2222 $CFGDIR/common.cfg > /tmp/xmcd.$$
2223
2224 cp /tmp/xmcd.$$ $CFGDIR/common.cfg
2225 rm -f /tmp/xmcd.$$
2226 (cd $CFGDIR; rm -f common.cfg-${OS_NODE} ;\
2227 do_link common.cfg common.cfg-${OS_NODE})
2228 else
2229 log_err -p "Cannot configure $CFGDIR/common.cfg"
2230 EXITSTAT=1
2231 fi
2232 }
2233
2234
2235 #
2236 # Main starts here
2237 #
2238
2239 # Catch some signals
2240 trap "rm -f $BTMPFILE $MTMPFILE; exit 1" 1 2 3 5 15
2241
2242 # Get platform information
2243 OS_SYS=`(uname -s) 2>/dev/null`
2244 OS_REL=`(uname -r) 2>/dev/null`
2245 OS_MACH=`(uname -m) 2>/dev/null`
2246 OS_NODE=`(uname -n) 2>/dev/null`
2247
2248 if [ -z "$OS_SYS" ]
2249 then
2250 OS_SYS=unkn
2251 fi
2252 if [ -z "$OS_REL" ]
2253 then
2254 OS_REL=unkn
2255 fi
2256 if [ -z "$OS_MACH" ]
2257 then
2258 OS_MACH=unkn
2259 fi
2260 if [ -z "$OS_NODE" ]
2261 then
2262 OS_NODE=unkn
2263 fi
2264
2265 # Use Sysv echo if possible
2266 if [ -x /usr/5bin/echo ] # SunOS SysV echo
2267 then
2268 ECHO=/usr/5bin/echo
2269 elif [ -z "`(echo -e a) 2>/dev/null | fgrep e`" ] # GNU bash, etc.
2270 then
2271 ECHO="echo -e"
2272 else # generic SysV
2273 ECHO=echo
2274 fi
2275 if [ "$OS_SYS" = QNX ]
2276 then
2277 ECHO=echo
2278 fi
2279
2280 # Use nawk if available
2281 if [ -x /bin/nawk -o -x /usr/bin/nawk ]
2282 then
2283 AWK=nawk
2284 else
2285 # If awk doesn't work well on your system and you have gawk,
2286 # try changing the following to gawk.
2287 AWK=awk
2288 fi
2289
2290 # Error log file handling
2291 if [ -f $ERRFILE -a ! -w $ERRFILE ]
2292 then
2293 ERRFILE=/dev/null
2294 fi
2295
2296 #
2297 # Read the README first
2298 #
2299 $ECHO "\n*** See /opt/sfw/READMEs/README.SFWxmcd before configuring xmcd ***"
2300
2301 $ECHO "\nXmcd version $VER Configuration Program"
2302 $ECHO "Setting up for host: ${OS_NODE}"
2303 $ECHO "--------------------------------------"
2304
2305 # Sanity check
2306
2307 if [ ! -w $CFGDIR ]
2308 then
2309 log_err -p "No write permission in $CFGDIR"
2310 do_exit 1
2311 fi
2312
2313 if [ ! -r $CFGDIR/device.cfg ]
2314 then
2315 log_err -p "Cannot find $CFGDIR/device.cfg"
2316 do_exit 2
2317 fi
2318
2319 fgrep cfgver=1 $CFGDIR/device.cfg >/dev/null 2>&1
2320 if [ $? -ne 0 ]
2321 then
2322 log_err -p "$CFGDIR/device.cfg version mismatch"
2323 do_exit 2
2324 fi
2325
2326 if [ ! -d $CFGDIR/.tbl ]
2327 then
2328 log_err -p "The directory $CFGDIR/.tbl is missing"
2329 do_exit 2
2330 fi
2331
2332 #
2333 # Set some defaults
2334 #
2335 DEVPREF=/dev/rcdrom
2336 DEVSUFF=
2337 FIRST=0
2338 BLKDEV=0
2339 VOLMGT=False
2340 STOPONLOAD=True
2341 EJECTONEXIT=False
2342 STOPONEXIT=True
2343 EXITONEJECT=False
2344 CLOSEONEJECT=False
2345 INETOFFLN=False
2346 USEPROXY=False
2347 PROXYSERVER="localhost:80"
2348 PROXYAUTH=False
2349 AUTOBROWSER=True
2350 CDINFOPATH=
2351
2352 #
2353 # Configure CDDB server access
2354 #
2355 $ECHO "\n*** CDDB(tm) ACCESS CONFIGURATION ***"
2356 cddb_config
2357
2358 #
2359 # Device and common configuration
2360 #
2361 $ECHO "\n\n*** DRIVE CONFIGURATION ***"
2362 drive_config
2363 common_config
2364
2365 do_exit $EXITSTAT
2366