home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-12-29 | 48.1 KB | 1,697 lines |
- Newsgroups: alt.sources
- Path: sparky!uunet!elroy.jpl.nasa.gov!swrinde!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!eagle!sandman.lerc.nasa.gov!drich
- From: drich@sandman.lerc.nasa.gov (Daniel Rich)
- Subject: xcdplayer-2.2, Part (5/5) - X11 CD player for Sun and SGI
- Message-ID: <1992Dec28.225808.24021@eagle.lerc.nasa.gov>
- Sender: news@eagle.lerc.nasa.gov
- Nntp-Posting-Host: sandman.lerc.nasa.gov
- Organization: NASA Lewis Research Center
- Date: Mon, 28 Dec 1992 22:58:08 GMT
- Lines: 1685
-
- Submitted-by: drich@lerc.nasa.gov
- Archive-name: xcdplayer-2.2/part05
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 5 (of 5)."
- # Contents: xcdplayer-2.2/Makefile xcdplayer-2.2/cdrom_sgi.c
- # Wrapped by drich@sandman on Mon Dec 28 17:30:38 1992
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -d 'xcdplayer-2.2' ; then
- :
- else
- mkdir xcdplayer-2.2
- fi
- if test -f 'xcdplayer-2.2/Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xcdplayer-2.2/Makefile'\"
- else
- echo shar: Extracting \"'xcdplayer-2.2/Makefile'\" \(20008 characters\)
- sed "s/^X//" >'xcdplayer-2.2/Makefile' <<'END_OF_FILE'
- X# Makefile generated by imake - do not edit!
- X# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $
- X
- X###########################################################################
- X# Makefile generated from "Imake.tmpl" and <Imakefile>
- X# $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $
- X#
- X# Platform-specific parameters may be set in the appropriate .cf
- X# configuration files. Site-wide parameters may be set in the file
- X# site.def. Full rebuilds are recommended if any parameters are changed.
- X#
- X# If your C preprocessor doesn't define any unique symbols, you'll need
- X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
- X# "make Makefile", "make Makefiles", or "make World").
- X#
- X# If you absolutely can't get imake to work, you'll need to set the
- X# variables at the top of each Makefile as well as the dependencies at the
- X# bottom (makedepend will do this automatically).
- X#
- X
- X###########################################################################
- X# platform-specific configuration parameters - edit sgi.cf to change
- X
- XCRT1 = /usr/lib/crt1.o
- XCRTN = /usr/lib/crtn.o
- X
- X###########################################################################
- X# site-specific configuration parameters - edit site.def to change
- X
- X# site: $XConsortium: site.def,v 1.21 89/12/06 11:46:50 jim Exp $
- X
- X OPTIMIZER = -g#-O2
- X
- X SHELL = /bin/sh
- X
- X TOP = .
- X CURRENT_DIR = .
- X
- X AR = ar scq
- X BOOTSTRAPCFLAGS = "$(OPTIMIZER)"
- X CC = cc
- X
- X COMPRESS = compress
- X CPP = /lib/cpp $(STD_CPP_DEFINES)
- X PREPROCESSCMD = cc -E $(STD_CPP_DEFINES)
- X INSTALL = bsdinst.sh
- X LD = ld
- X LINT = lint
- X LINTLIBFLAG = -o
- X LINTOPTS = -ax
- X LN = ln -s
- X
- X MV = mv
- X CP = cp
- X RANLIB = /bin/true
- X RANLIBINSTFLAGS =
- X RM = rm -f
- X VENDOR_INCLUDES =
- X STD_INCLUDES =
- X STD_CPP_DEFINES = -DSYSV
- X STD_DEFINES = -DSYSV -DMALLOC_0_RETURNS_NULL
- X EXTRA_LOAD_FLAGS =
- X EXTRA_LIBRARIES = -lsun -lmalloc -lc_s
- X TAGS = ctags
- X
- X SHAREDCODEDEF = -DSHAREDCODE
- X SHLIBDEF = -DATTSHAREDLIB
- X
- X PROTO_DEFINES = -DFUNCPROTO -DNARROWPROTO
- X
- X INSTPGMFLAGS = -s
- X
- X INSTBINFLAGS = -m 0755
- X INSTUIDFLAGS = -m 4755
- X INSTLIBFLAGS = -m 0664
- X INSTINCFLAGS = -m 0444
- X INSTMANFLAGS = -m 0444
- X INSTDATFLAGS = -m 0444
- X INSTKMEMFLAGS = -m 2755 -g sys
- X
- X DESTDIR =
- X
- X TOP_INCLUDES = -I$(INCROOT)
- X
- X CDEBUGFLAGS = $(OPTIMIZER)
- X CCOPTIONS = -cckr -float
- X COMPATFLAGS =
- X
- X ALLINCLUDES = $(STD_INCLUDES) $(TOP_INCLUDES) $(INCLUDES) $(EXTRA_INCLUDES) $(VENDOR_INCLUDES)
- X ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS)
- X CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
- X LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES)
- X LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
- X LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS)
- X LDCOMBINEFLAGS = -r
- X
- X MACROFILE = sgi.cf
- X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut
- X
- X IMAKE_DEFINES =
- X
- X IRULESRC = $(CONFIGDIR)
- X IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES)
- X
- X ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
- X $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \
- X $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
- X
- X###########################################################################
- X# X Window System Build Parameters
- X# $XConsortium: Project.tmpl,v 1.68 90/07/03 12:14:47 rws Exp $
- X
- X###########################################################################
- X# X Window System make variables; this need to be coordinated with rules
- X# $XConsortium: Project.tmpl,v 1.68 90/07/03 12:14:47 rws Exp $
- X
- X PATHSEP = /
- X USRLIBDIR = $(DESTDIR)/usr/lib
- X BINDIR = $(DESTDIR)/usr/bin/X11
- X INCROOT = $(DESTDIR)/usr/include
- X BUILDINCROOT = $(TOP)
- X BUILDINCDIR = $(BUILDINCROOT)/X11
- X BUILDINCTOP = ..
- X INCDIR = $(INCROOT)/X11
- X ADMDIR = $(DESTDIR)/usr/adm
- X LIBDIR = $(USRLIBDIR)/X11
- X CONFIGDIR = $(LIBDIR)/config
- X LINTLIBDIR = $(USRLIBDIR)/lint
- X
- X FONTDIR = $(LIBDIR)/fonts
- X XINITDIR = $(LIBDIR)/xinit
- X XDMDIR = $(LIBDIR)/xdm
- X AWMDIR = $(LIBDIR)/awm
- X TWMDIR = $(LIBDIR)/twm
- X GWMDIR = $(LIBDIR)/gwm
- X MANPATH = $(DESTDIR)/usr/man
- X MANSOURCEPATH = $(MANPATH)/man
- X MANDIR = $(MANSOURCEPATH)n
- X LIBMANDIR = $(MANSOURCEPATH)3
- X XAPPLOADDIR = $(LIBDIR)/app-defaults
- X
- X FONTCFLAGS = -t
- X
- X INSTAPPFLAGS = $(INSTDATFLAGS)
- X
- X IMAKE = imake
- X DEPEND = makedepend
- X RGB = rgb
- X
- X FONTC = bdftopcf
- X
- X MKFONTDIR = mkfontdir
- X
- X MKDIRHIER = mkdir -p
- X
- X CONFIGSRC = $(TOP)/config
- X CLIENTSRC = $(TOP)/clients
- X DEMOSRC = $(TOP)/demos
- X LIBSRC = $(TOP)/lib
- X
- X FONTSRC = $(TOP)/fonts.pcf
- X
- X INCLUDESRC = $(TOP)/X11
- X SERVERSRC = $(TOP)/server
- X UTILSRC = $(TOP)/util
- X SCRIPTSRC = $(UTILSRC)/scripts
- X EXAMPLESRC = $(TOP)/examples
- X CONTRIBSRC = $(TOP)/../contrib
- X DOCSRC = $(TOP)/doc
- X RGBSRC = $(TOP)/rgb
- X DEPENDSRC = $(UTILSRC)/makedepend
- X IMAKESRC = $(CONFIGSRC)
- X XAUTHSRC = $(LIBSRC)/Xau
- X XLIBSRC = $(LIBSRC)/X
- X XMUSRC = $(LIBSRC)/Xmu
- X TOOLKITSRC = $(LIBSRC)/Xt
- X AWIDGETSRC = $(LIBSRC)/Xaw
- X OLDXLIBSRC = $(LIBSRC)/oldX
- X XDMCPLIBSRC = $(LIBSRC)/Xdmcp
- X XILIBSRC = $(EXTENSIONSRC)/lib/xinput
- X BDFTOSNFSRC = $(FONTSRC)/tools/bdftosnf
- X BDFTOPCFSRC = $(FONTSRC)/tools/bdftopcf
- X MKFONTDIRSRC = $(FONTSRC)/tools/mkfontdir
- X EXTENSIONSRC = $(TOP)/extensions
- X
- X DEPEXTENSIONLIB = $(USRLIBDIR)/libXext.a
- X EXTENSIONLIB = -lXext
- X
- X DEPXLIB = $(DEPEXTENSIONLIB) $(USRLIBDIR)/libX11_s.a
- X XLIB = $(EXTENSIONLIB) -lX11_s
- X
- X DEPXAUTHLIB = $(USRLIBDIR)/libXau.a
- X XAUTHLIB = -lXau
- X
- X DEPXMULIB = $(USRLIBDIR)/libXmu.a
- X XMULIB = -lXmu
- X
- X DEPOLDXLIB = $(USRLIBDIR)/liboldX.a
- X OLDXLIB = -loldX
- X
- X DEPXTOOLLIB = $(USRLIBDIR)/libXt_s.a
- X XTOOLLIB = -lXt_s
- X
- X DEPXAWLIB = $(USRLIBDIR)/libXaw.a
- X XAWLIB = -lXaw
- X
- X DEPXILIB = $(USRLIBDIR)/libXi.a
- X XILIB = -lXi
- X
- X LINTEXTENSIONLIB = $(LINTLIBDIR)/llib-lXext.ln
- X LINTXLIB = $(LINTLIBDIR)/llib-lX11.ln
- X LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln
- X LINTXTOOL = $(LINTLIBDIR)/llib-lXt.ln
- X LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln
- X
- X DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
- X
- X DEPLIBS1 = $(DEPLIBS)
- X DEPLIBS2 = $(DEPLIBS)
- X DEPLIBS3 = $(DEPLIBS)
- X
- X###########################################################################
- X# Imake rules for building libraries, programs, scripts, and data files
- X# rules: $XConsortium: Imake.rules,v 1.70 90/05/04 16:57:30 keith Exp $
- X
- X###########################################################################
- X# start of Imakefile
- X
- XLOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
- XLINTLIBS = -lXaw -lXt -lX11
- X
- XLOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) -lcdaudio -lds -laudio -lm
- X SRCS = main.c top_setup.c logo_setup.c button_setup.c cdrom_callb.c\
- X cdrom_sgi.c internals.c shuffle.c program.c leds.c debug.c
- X
- X OBJS = main.o top_setup.o logo_setup.o button_setup.o cdrom_callb.o\
- X cdrom_sgi.o internals.o shuffle.o program.o leds.o debug.o
- X
- X PROGRAMS = xcdplayer
- X
- Xall:: ${PROGRAMS}
- X
- X PROGRAM = xcdplayer
- X
- Xall:: xcdplayer
- X
- Xxcdplayer: $(OBJS) $(DEPLIBS)
- X $(RM) $@ ; \
- X $(CC) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
- X
- Xinstall:: xcdplayer
- X $(INSTALL) -c $(INSTPGMFLAGS) $(INSTALLFLAGS) xcdplayer $(BINDIR)
- X
- Xinstall.man:: xcdplayer.man
- X $(INSTALL) -c $(INSTMANFLAGS) xcdplayer.man $(MANDIR)/xcdplayer.n
- X
- Xdepend::
- X $(DEPEND) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
- X
- Xlint:
- X $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
- Xlint1:
- X $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
- X
- Xclean::
- X $(RM) $(PROGRAM)
- X
- Xcdinfo: cdinfo.o
- X $(RM) $@ ; \
- X $(CC) -o $@ cdinfo.o $(LDOPTIONS) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
- X
- Xclean::
- X $(RM) cdinfo
- X
- Xcdgrab: cdgrab.o
- X $(RM) $@ ; \
- X $(CC) -o $@ cdgrab.o $(LDOPTIONS) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
- X
- Xclean::
- X $(RM) cdgrab
- X
- Xlint:
- X $(LINT) $(LINTFLAGS) ${SRCS} $(LINTLIBS)
- Xlint1:
- X $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
- X
- Xinstall:: XCdplayer.ad
- X $(INSTALL) -c $(INSTAPPFLAGS) XCdplayer.ad $(XAPPLOADDIR)/XCdplayer
- X
- X###########################################################################
- X# common rules for all Makefiles - do not edit
- X
- Xemptyrule::
- X
- Xclean::
- X $(RM_CMD) \#*
- X
- XMakefile::
- X -@if [ -f Makefile ]; then \
- X echo " $(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \
- X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
- X else : ; fi ; \
- X $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
- X
- Xtags::
- X $(TAGS) -w *.[ch]
- X $(TAGS) -xw *.[ch] > TAGS
- X
- X###########################################################################
- X# empty rules for directories that do not have SUBDIRS - do not edit
- X
- Xinstall::
- X @echo "install in $(CURRENT_DIR) done"
- X
- Xinstall.man::
- X @echo "install.man in $(CURRENT_DIR) done"
- X
- XMakefiles::
- X
- Xincludes::
- X
- X###########################################################################
- X# dependencies generated by makedepend
- X
- X# DO NOT DELETE
- X
- Xmain.o: /usr/include/stdio.h /usr/include/X11/Intrinsic.h
- Xmain.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h /usr/include/X11/X.h
- Xmain.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xmain.o: /usr/include/X11/Xos.h /usr/include/strings.h /usr/include/string.h
- Xmain.o: /usr/include/fcntl.h /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xmain.o: /usr/include/sys/time.h /usr/include/time.h /usr/include/X11/Core.h
- Xmain.o: /usr/include/X11/Composite.h /usr/include/X11/Constraint.h
- Xmain.o: /usr/include/X11/Object.h /usr/include/X11/RectObj.h
- Xmain.o: /usr/include/X11/StringDefs.h debug.h cdrom_globs.h version.h
- Xmain.o: patchlevel.h
- Xtop_setup.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xtop_setup.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xtop_setup.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xtop_setup.o: /usr/include/X11/Xos.h /usr/include/strings.h
- Xtop_setup.o: /usr/include/string.h /usr/include/fcntl.h
- Xtop_setup.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xtop_setup.o: /usr/include/sys/time.h /usr/include/time.h
- Xtop_setup.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xtop_setup.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xtop_setup.o: /usr/include/X11/RectObj.h /usr/include/X11/StringDefs.h
- Xtop_setup.o: /usr/include/X11/Shell.h /usr/include/X11/Xaw/Form.h
- Xtop_setup.o: /usr/include/stdio.h cdrom_globs.h version.h patchlevel.h
- Xtop_setup.o: debug.h logo.xbm
- Xlogo_setup.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xlogo_setup.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xlogo_setup.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xlogo_setup.o: /usr/include/X11/Xos.h /usr/include/strings.h
- Xlogo_setup.o: /usr/include/string.h /usr/include/fcntl.h
- Xlogo_setup.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xlogo_setup.o: /usr/include/sys/time.h /usr/include/time.h
- Xlogo_setup.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xlogo_setup.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xlogo_setup.o: /usr/include/X11/RectObj.h /usr/include/X11/StringDefs.h
- Xlogo_setup.o: /usr/include/X11/Shell.h /usr/include/X11/Xaw/Form.h
- Xlogo_setup.o: /usr/include/X11/Xaw/Label.h /usr/include/X11/Xaw/Simple.h
- Xlogo_setup.o: /usr/include/X11/Xmu/Converters.h
- Xlogo_setup.o: /usr/include/X11/Xaw/Command.h /usr/include/X11/Xaw/Toggle.h
- Xlogo_setup.o: /usr/include/X11/Xaw/Scrollbar.h /usr/include/X11/Xaw/Dialog.h
- Xlogo_setup.o: /usr/include/X11/Xaw/Viewport.h /usr/include/X11/Xaw/Reports.h
- Xlogo_setup.o: /usr/include/math.h /usr/include/svr4_math.h
- Xlogo_setup.o: /usr/include/stdio.h cdrom_globs.h version.h patchlevel.h
- Xlogo_setup.o: cdrom_sgi.h /usr/include/cdaudio.h /usr/include/audio.h
- Xlogo_setup.o: logo.xbm thumb.xbm /usr/include/X11/bitmaps/gray
- Xbutton_setup.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xbutton_setup.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xbutton_setup.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xbutton_setup.o: /usr/include/X11/Xos.h /usr/include/strings.h
- Xbutton_setup.o: /usr/include/string.h /usr/include/fcntl.h
- Xbutton_setup.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xbutton_setup.o: /usr/include/sys/time.h /usr/include/time.h
- Xbutton_setup.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xbutton_setup.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xbutton_setup.o: /usr/include/X11/RectObj.h /usr/include/X11/StringDefs.h
- Xbutton_setup.o: /usr/include/X11/Xaw/Form.h /usr/include/X11/Xaw/Toggle.h
- Xbutton_setup.o: /usr/include/X11/Xaw/Command.h /usr/include/X11/Xaw/Label.h
- Xbutton_setup.o: /usr/include/X11/Xaw/Simple.h
- Xbutton_setup.o: /usr/include/X11/Xmu/Converters.h cdrom_globs.h version.h
- Xbutton_setup.o: patchlevel.h cdrom_sgi.h /usr/include/cdaudio.h
- Xbutton_setup.o: /usr/include/audio.h play.xbm pause.xbm stop.xbm prev.xbm
- Xbutton_setup.o: next.xbm eject.xbm audio.xbm quit.xbm cycle.xbm shuffle.xbm
- Xbutton_setup.o: rewind.xbm ff.xbm pgm.xbm
- Xcdrom_callb.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xcdrom_callb.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xcdrom_callb.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xcdrom_callb.o: /usr/include/X11/Xos.h /usr/include/strings.h
- Xcdrom_callb.o: /usr/include/string.h /usr/include/fcntl.h
- Xcdrom_callb.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xcdrom_callb.o: /usr/include/sys/time.h /usr/include/time.h
- Xcdrom_callb.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xcdrom_callb.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xcdrom_callb.o: /usr/include/X11/RectObj.h /usr/include/X11/StringDefs.h
- Xcdrom_callb.o: /usr/include/X11/Xaw/Form.h /usr/include/X11/Xaw/Toggle.h
- Xcdrom_callb.o: /usr/include/X11/Xaw/Command.h /usr/include/X11/Xaw/Label.h
- Xcdrom_callb.o: /usr/include/X11/Xaw/Simple.h
- Xcdrom_callb.o: /usr/include/X11/Xmu/Converters.h /usr/include/stdio.h debug.h
- Xcdrom_callb.o: cdrom_globs.h version.h patchlevel.h cdrom_sgi.h
- Xcdrom_callb.o: /usr/include/cdaudio.h /usr/include/audio.h
- Xcdrom_sgi.o: /usr/include/stdio.h /usr/include/sys/file.h
- Xcdrom_sgi.o: /usr/include/sys/fcntl.h /usr/include/sys/types.h
- Xcdrom_sgi.o: /usr/include/sys/param.h /usr/include/sys/signal.h
- Xcdrom_sgi.o: /usr/include/sys/stat.h /usr/include/mntent.h
- Xcdrom_sgi.o: /usr/include/sys/fsid.h /usr/include/string.h
- Xcdrom_sgi.o: /usr/include/signal.h /usr/include/sys/buf.h
- Xcdrom_sgi.o: /usr/include/sys/sema.h /usr/include/sys/time.h
- Xcdrom_sgi.o: /usr/include/time.h /usr/include/sys/ipc.h
- Xcdrom_sgi.o: /usr/include/sys/shm.h debug.h cdrom_sgi.h
- Xcdrom_sgi.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xcdrom_sgi.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h
- Xcdrom_sgi.o: /usr/include/X11/Xresource.h /usr/include/X11/Xos.h
- Xcdrom_sgi.o: /usr/include/strings.h /usr/include/fcntl.h
- Xcdrom_sgi.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xcdrom_sgi.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xcdrom_sgi.o: /usr/include/X11/RectObj.h /usr/include/cdaudio.h
- Xcdrom_sgi.o: /usr/include/audio.h
- Xinternals.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xinternals.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xinternals.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xinternals.o: /usr/include/X11/Xos.h /usr/include/strings.h
- Xinternals.o: /usr/include/string.h /usr/include/fcntl.h
- Xinternals.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xinternals.o: /usr/include/sys/time.h /usr/include/time.h
- Xinternals.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xinternals.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xinternals.o: /usr/include/X11/RectObj.h /usr/include/X11/StringDefs.h
- Xinternals.o: /usr/include/X11/Xaw/Form.h /usr/include/X11/Xaw/Toggle.h
- Xinternals.o: /usr/include/X11/Xaw/Command.h /usr/include/X11/Xaw/Label.h
- Xinternals.o: /usr/include/X11/Xaw/Simple.h /usr/include/X11/Xmu/Converters.h
- Xinternals.o: /usr/include/stdio.h debug.h cdrom_globs.h version.h
- Xinternals.o: patchlevel.h cdrom_sgi.h /usr/include/cdaudio.h
- Xinternals.o: /usr/include/audio.h
- Xshuffle.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xshuffle.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xshuffle.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xshuffle.o: /usr/include/X11/Xos.h /usr/include/strings.h
- Xshuffle.o: /usr/include/string.h /usr/include/fcntl.h
- Xshuffle.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xshuffle.o: /usr/include/sys/time.h /usr/include/time.h
- Xshuffle.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xshuffle.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xshuffle.o: /usr/include/X11/RectObj.h /usr/include/stdio.h debug.h
- Xshuffle.o: cdrom_globs.h version.h patchlevel.h cdrom_sgi.h
- Xshuffle.o: /usr/include/cdaudio.h /usr/include/audio.h
- Xprogram.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xprogram.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xprogram.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xprogram.o: /usr/include/X11/Xos.h /usr/include/strings.h
- Xprogram.o: /usr/include/string.h /usr/include/fcntl.h
- Xprogram.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xprogram.o: /usr/include/sys/time.h /usr/include/time.h
- Xprogram.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xprogram.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xprogram.o: /usr/include/X11/RectObj.h /usr/include/X11/StringDefs.h
- Xprogram.o: /usr/include/X11/Shell.h /usr/include/X11/Xaw/Form.h
- Xprogram.o: /usr/include/X11/Xaw/Label.h /usr/include/X11/Xaw/Simple.h
- Xprogram.o: /usr/include/X11/Xmu/Converters.h /usr/include/X11/Xaw/List.h
- Xprogram.o: /usr/include/X11/Xaw/Command.h /usr/include/X11/Xaw/Toggle.h
- Xprogram.o: /usr/include/X11/Xaw/Viewport.h /usr/include/X11/Xaw/Reports.h
- Xprogram.o: /usr/include/X11/Xaw/Dialog.h /usr/include/stdio.h
- Xprogram.o: /usr/include/malloc.h debug.h cdrom_globs.h version.h patchlevel.h
- Xprogram.o: cdrom_sgi.h /usr/include/cdaudio.h /usr/include/audio.h
- Xleds.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xleds.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xleds.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xleds.o: /usr/include/X11/Xos.h /usr/include/strings.h /usr/include/string.h
- Xleds.o: /usr/include/fcntl.h /usr/include/sys/fcntl.h /usr/include/sys/file.h
- Xleds.o: /usr/include/sys/time.h /usr/include/time.h /usr/include/X11/Core.h
- Xleds.o: /usr/include/X11/Composite.h /usr/include/X11/Constraint.h
- Xleds.o: /usr/include/X11/Object.h /usr/include/X11/RectObj.h
- Xleds.o: /usr/include/X11/StringDefs.h /usr/include/X11/Xaw/Label.h
- Xleds.o: /usr/include/X11/Xaw/Simple.h /usr/include/X11/Xmu/Converters.h
- Xleds.o: cdrom_globs.h version.h patchlevel.h circle0a.xbm circle0b.xbm
- Xleds.o: circle0c.xbm circle0d.xbm circle0e.xbm circle0f.xbm circle0g.xbm
- Xleds.o: circle0h.xbm circle00.xbm
- Xdebug.o: /usr/include/X11/Intrinsic.h /usr/include/X11/Xlib.h
- Xdebug.o: /usr/include/sys/types.h /usr/include/X11/X.h
- Xdebug.o: /usr/include/X11/Xutil.h /usr/include/X11/Xresource.h
- Xdebug.o: /usr/include/X11/Xos.h /usr/include/strings.h /usr/include/string.h
- Xdebug.o: /usr/include/fcntl.h /usr/include/sys/fcntl.h
- Xdebug.o: /usr/include/sys/file.h /usr/include/sys/time.h /usr/include/time.h
- Xdebug.o: /usr/include/X11/Core.h /usr/include/X11/Composite.h
- Xdebug.o: /usr/include/X11/Constraint.h /usr/include/X11/Object.h
- Xdebug.o: /usr/include/X11/RectObj.h /usr/include/varargs.h
- Xdebug.o: /usr/include/stdio.h debug.h
- END_OF_FILE
- if test 20008 -ne `wc -c <'xcdplayer-2.2/Makefile'`; then
- echo shar: \"'xcdplayer-2.2/Makefile'\" unpacked with wrong size!
- fi
- # end of 'xcdplayer-2.2/Makefile'
- fi
- if test -f 'xcdplayer-2.2/cdrom_sgi.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'xcdplayer-2.2/cdrom_sgi.c'\"
- else
- echo shar: Extracting \"'xcdplayer-2.2/cdrom_sgi.c'\" \(24783 characters\)
- sed "s/^X//" >'xcdplayer-2.2/cdrom_sgi.c' <<'END_OF_FILE'
- X/*
- X * Copyright (C) 1990 Regents of the University of California.
- X *
- X * Permission to use, copy, modify, distribute, and sell this software and
- X * its documentation for any purpose is hereby granted without fee,
- X * provided that the above copyright notice appear in all copies and that
- X * both that copyright notice and this permission notice appear in
- X * supporting documentation, and that the name of the University of
- X * California not be used in advertising or publicity pertaining to
- X * distribution of the software without specific, written prior
- X * permission. the University of California makes no representations
- X * about the suitability of this software for any purpose. It is provided
- X * "as is" without express or implied warranty.
- X */
- X
- Xstatic int c;
- X
- X# if defined(sgi)
- X# include <stdio.h>
- X
- X# include <sys/file.h>
- X# include <sys/types.h>
- X# include <sys/param.h>
- X# include <sys/stat.h>
- X
- X# include <mntent.h>
- X# include <string.h>
- X# include <signal.h>
- X
- X# include <sys/buf.h>
- X
- X# include <sys/time.h>
- X
- X/* We need shared memory for the counter display if using scsi_audio */
- X#include <sys/ipc.h>
- X#include <sys/shm.h>
- Xint shmid;
- Xkey_t shmkey;
- X
- X
- X# include "debug.h"
- X# include "cdrom_sgi.h"
- X
- Xextern char *device;
- X# if defined(notdef)
- Xextern void cdrom_print_toc();
- X# endif /* defined(notdef) */
- X
- Xvoid cdrom_audio_close();
- Xvoid cdrom_callback();
- Xvoid cdrom_kill_child();
- Xint cdrom_child_setup();
- Xvoid cdrom_child_pause();
- Xvoid cdrom_child_died();
- Xvoid cdrom_child_quit();
- X
- X#define INIT_READ 200 /* Maximum number we can play */
- X#define ONE_SECOND 75 /* One second of data */
- X
- Xcdrom_info cdi;
- Xstruct _cdrom_shmem *cdrom_shmem;
- Xchar info_filename[256];
- XFILE *disc_info = NULL;
- X
- XCDPLAYER *cdrom_fd = NULL;
- XALport audio_fd = NULL;
- Xlong audio_param[6];
- XCDFRAME *cd_audio_buff = NULL;
- XCDPARSER *cd_parser = NULL;
- Xint cdrom_audio_opened = 0;
- X
- Xget_stored_info()
- X{
- X int i,n;
- X char line[100];
- X char *title;
- X
- X if ( cdi.maxtrack == 0) {
- X return(0);
- X }
- X for (i = 0, n = 0; i < cdi.maxtrack; i++)
- X n = n + ((i+1) * cdi.times[i]);
- X n = n / cdi.maxtrack;
- X
- X disc_title = NULL;
- X if (cdInfoDir != NULL)
- X sprintf(info_filename, "%s/cd.%d", cdInfoDir, n);
- X else
- X sprintf(info_filename, "cd.%d", n);
- X
- X if ((disc_info = fopen(info_filename, "r")) != NULL)
- X {
- X fgets(line, 100, disc_info);
- X title = strchr(line, ':');
- X if (title != NULL)
- X {
- X *(strchr(title, '\n')) = '\0';
- X disc_title = strdup(title + 1);
- X }
- X fgets(line, 100, disc_info);
- X sscanf(line, "Program: %s", program_str);
- X }
- X if (disc_title == NULL) {
- X disc_title = NOTITLESTR;
- X }
- X}
- X
- Xint
- Xcdrom_open() {
- X int n;
- X CDSTATUS cdrom_stat;
- X extern void update_title();
- X
- X if (cdrom_fd != NULL) {
- X return(cdi.curtrack);
- X }
- X
- X if (device != NULL) {
- X fprintf(stderr,"Device: %s\n",device);
- X if ((cdrom_fd = CDopen(device, "r")) == NULL) {
- X fprintf(stderr, "open cdrom: %s",device);
- X perror("CDopen");
- X return(-1);
- X }
- X } else {
- X if ((cdrom_fd = CDopen(0, "r")) == NULL) {
- X fprintf(stderr, "open cdrom: ");
- X perror("CDopen");
- X return(-1);
- X }
- X }
- X
- X if (cdrom_get_times() == -1) {
- X cdrom_close();
- X return(-1);
- X }
- X
- X if ((n = cdrom_get_curtrack()) == -1)
- X return(-1);
- X
- X get_stored_info();
- X
- X update_title();
- X
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_stat): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X if ((cdrom_stat.state == CD_PLAYING) ||
- X (cdrom_stat.state == CD_PAUSED)) {
- X cdi.scsi_audio = 0;
- X } else {
- X cdi.scsi_audio = cdrom_audio_avail();
- X }
- X
- X if (cdi.scsi_audio) {
- X if (cd_audio_buff == (CDFRAME *) NULL) {
- X if ((cd_audio_buff =
- X (CDFRAME *) malloc(INIT_READ * CDDA_BLOCKSIZE)) == NULL) {
- X fprintf(stderr,"cdrom_open: cannot allocate cd digital data buffer!\n");
- X perror("cdrom_open");
- X cdi.scsi_audio = 0;
- X }
- X }
- X if (cd_parser == NULL) {
- X if ((cd_parser = CDcreateparser()) == NULL) {
- X fprintf(stderr,"cdrom_open: CDcreateparser failed!\n");
- X perror("cdrom_open");
- X cdi.scsi_audio = 0;
- X }
- X CDresetparser(cd_parser);
- X CDsetcallback(cd_parser, cd_audio, cdrom_callback, 0);
- X CDsetcallback(cd_parser, cd_pnum, cdrom_callback, 0);
- X CDsetcallback(cd_parser, cd_atime, cdrom_callback, 0);
- X CDsetcallback(cd_parser, cd_catalog, cdrom_callback, 0);
- X }
- X#if 0
- X /* Get the catalog number, if one exists */
- X CDseektrack(cdrom_fd,1);
- X cdrom_shmem->cdrom_audio_cdi.state = CD_PLAYING;
- X cdrom_play_frames(1);
- X#endif
- X }
- X
- X if (cdi.state & CDROM_STATE_PLAY)
- X cdi.curtrack = n;
- X
- X if (cdi.state & CDROM_STATE_SHUFFLE)
- X shuffle_setup();
- X
- X return(cdi.curtrack);
- X}
- X
- Xvoid
- Xcdrom_close() {
- X if (cdrom_fd == NULL)
- X return;
- X
- X if (cdi.scsi_audio) {
- X cdrom_kill_child();
- X cdrom_audio_close();
- X }
- X if (cdi.times != NULL) {
- X free((char *) cdi.times);
- X free((char *) cdi.addrs);
- X cdi.times = NULL;
- X cdi.addrs = NULL;
- X }
- X
- X (void) CDclose(cdrom_fd);
- X cdrom_fd = NULL;
- X}
- X
- Xint
- Xcdrom_audio_open() {
- X ALconfig aconfig;
- X
- X aconfig = ALnewconfig();
- X
- X /* Attempt to create the largest buffer we can */
- X ALsetqueuesize (aconfig, SAMPLES_PER_FRAME * INIT_READ);
- X
- X /* Make sure we are 16bit stereo */
- X ALsetwidth(aconfig, AL_SAMPLE_16);
- X ALsetchannels(aconfig, AL_STEREO);
- X
- X if ((audio_fd = ALopenport("XCplayer", "w", aconfig)) == NULL) {
- X ALfreeconfig(aconfig);
- X return(-1); /* No error, just return -1 */
- X }
- X
- X ALfreeconfig(aconfig);
- X
- X audio_param[0] = AL_OUTPUT_RATE;
- X audio_param[1] = AL_RATE_44100;
- X ALsetparams(AL_DEFAULT_DEVICE, audio_param, 2);
- X
- X shmkey = IPC_PRIVATE;
- X if ((shmid = shmget(shmkey, sizeof(struct _cdrom_shmem),
- X (SHM_R | SHM_W | IPC_CREAT | IPC_EXCL) )) < 0) {
- X perror("shmget");
- X return(-1);
- X }
- X cdrom_shmem = shmat(shmid, NULL, SHM_RND);
- X}
- X
- Xvoid
- Xcdrom_audio_close() {
- X if (audio_fd == NULL)
- X return;
- X
- X (void) ALcloseport(audio_fd);
- X shmdt(cdrom_shmem);
- X shmctl(shmid,IPC_RMID);
- X audio_fd = NULL;
- X cdrom_audio_opened = 0;
- X}
- X
- Xvoid
- Xcdrom_callback(arg, type, data)
- X int arg;
- X CDDATATYPES type;
- X void *data;
- X{
- X struct cdtimecode *timecode_info;
- X CDPROGNUM *pnum_info;
- X char * catalog_num;
- X int otime, time;
- X int i;
- X
- X switch (type) {
- X case cd_audio:
- X ALwritesamps(audio_fd, data, SAMPLES_PER_FRAME);
- X break;
- X case cd_pnum:
- X pnum_info = data;
- X
- X if (pnum_info->value <=
- X cdrom_shmem->cdrom_audio_cdi.end_track) {
- X cdrom_shmem->cdrom_audio_cdi.curtrack = pnum_info->value;
- X } else {
- X cdrom_shmem->cdrom_audio_cdi.curtrack = 0;
- X cdrom_shmem->cdrom_audio_cdi.state = CD_READY;
- X }
- X break;
- X case cd_atime:
- X timecode_info = data;
- X
- X otime = (cdrom_shmem->cdrom_audio_msf.minute * 60) +
- X cdrom_shmem->cdrom_audio_msf.second;
- X time = (((timecode_info->mhi * 10) +
- X timecode_info->mlo) * 60) +
- X (timecode_info->shi * 10) +
- X timecode_info->slo;
- X
- X if ((otime > (time + 2)) || (otime < time - 2)) {
- X if (CDseek(cdrom_fd,
- X cdrom_shmem->cdrom_audio_msf.minute,
- X cdrom_shmem->cdrom_audio_msf.second,
- X cdrom_shmem->cdrom_audio_msf.frame) < 0) {
- X perror("CDseek");
- X }
- X cdrom_shmem->cdrom_audio_cdi.state = CD_ABORT;
- X return;
- X }
- X
- X cdrom_shmem->cdrom_audio_msf.minute =
- X (timecode_info->mhi * 10) + timecode_info->mlo;
- X cdrom_shmem->cdrom_audio_msf.second =
- X (timecode_info->shi * 10) + timecode_info->slo;
- X cdrom_shmem->cdrom_audio_msf.frame =
- X (timecode_info->fhi * 10) + timecode_info->flo;
- X
- X break;
- X case cd_catalog:
- X catalog_num = data;
- X#if 0
- X fprintf(stderr,"Catalog #: ");
- X for (i=0; i<13; i++) {
- X fprintf(stderr,"%d",*(catalog_num+i));
- X }
- X fprintf(stderr,"\n");
- X#endif
- X default:
- X return;
- X }
- X}
- X
- Xint
- Xcdrom_start() {
- X return(0);
- X}
- X
- Xint
- Xcdrom_stop() {
- X if (cdi.scsi_audio && cdrom_audio_opened) {
- X cdrom_kill_child();
- X cdrom_shmem->cdrom_audio_cdi.curtrack = cdi.curtrack;
- X cdrom_shmem->cdrom_audio_cdi.state = CD_READY;
- X }
- X if (! CDstop(cdrom_fd)) {
- X perror("CDstop");
- X return(-1);
- X }
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_eject() {
- X if (cdi.scsi_audio && cdrom_audio_opened) {
- X cdrom_kill_child();
- X cdrom_shmem->cdrom_audio_cdi.state = CD_NODISC;
- X }
- X if (! CDeject(cdrom_fd)) {
- X perror("ioctl(cdromeject)");
- X return(-1);
- X }
- X cdrom_close();
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_pause() {
- X int track;
- X
- X if (cdi.scsi_audio && cdrom_audio_opened) {
- X cdrom_shmem->cdrom_audio_cdi.state = CD_PAUSED;
- X return(0);
- X }
- X if (! cdrom_paused(&track)) {
- X if (! CDtogglepause(cdrom_fd)) {
- X perror("CDtogglepause");
- X return(-1);
- X }
- X }
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_resume() {
- X int track;
- X
- X if (cdi.scsi_audio && cdrom_audio_opened) {
- X cdrom_shmem->cdrom_audio_cdi.state = CD_PLAYING;
- X return(0);
- X }
- X if (! cdrom_playing(&track)) {
- X if (! CDtogglepause(cdrom_fd)) {
- X perror("CDtogglepause");
- X return(-1);
- X }
- X }
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_toggle_audio()
- X{
- X if (cdi.scsi_audio) {
- X cdrom_kill_child();
- X cdi.scsi_audio = 0;
- X return;
- X }
- X cdi.scsi_audio = 1;
- X}
- X
- Xint
- Xcdrom_volume(left_vol, right_vol)
- X int left_vol;
- X int right_vol;
- X{
- X CDVOLUME cd_vol;
- X
- X if (cdi.scsi_audio) {
- X audio_param[0] = AL_LEFT_SPEAKER_GAIN;
- X audio_param[1] = left_vol;
- X audio_param[2] = AL_RIGHT_SPEAKER_GAIN;
- X audio_param[3] = right_vol;
- X
- X ALsetparams (AL_DEFAULT_DEVICE, audio_param, 4);
- X } else {
- X#if 0
- X /* I would love to use this, but it isn't documented */
- X cd_vol.chan0 = (unsigned char)left_vol;
- X cd_vol.chan1 = (unsigned char)right_vol;
- X CDsetvolume(cdrom_fd, &cd_vol);
- X#endif
- X return(-1);
- X }
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_get_volume()
- X{
- X int vol;
- X CDVOLUME cd_vol;
- X
- X audio_param[0] = AL_LEFT_SPEAKER_GAIN;
- X audio_param[2] = AL_RIGHT_SPEAKER_GAIN;
- X if (cdi.scsi_audio) {
- X ALgetparams (AL_DEFAULT_DEVICE, audio_param, 4);
- X
- X /* Return the average of left and right channels */
- X vol=(audio_param[1] + audio_param[3]) / 2;
- X } else {
- X#if 0
- X /* I would love to use this, but it isn't documented */
- X CDgetvolume(cdrom_fd, &cd_vol);
- X fprintf(stderr,"%d %d %d %d\n",cd_vol.chan0,cd_vol.chan1,
- X cd_vol.chan2,cd_vol.chan3);
- X vol=(cd_vol.chan0 + cd_vol.chan1) / 2;
- X#endif
- X vol = -1;
- X }
- X
- X return(vol);
- X}
- X
- Xint
- Xcdrom_get_times() {
- X CDSTATUS tochdr;
- X extern unsigned short *ushort_malloc();
- X extern struct msf *msf_malloc();
- X unsigned long trk, trk_total, otime;
- X struct msf msf;
- X
- X if (cdrom_read_tochdr(&tochdr) == -1) {
- X cdi.mintrack = 0;
- X cdi.maxtrack = 0;
- X return(-1);
- X#if 0
- X return(0);
- X#endif
- X }
- X
- X cdi.mintrack = tochdr.first;
- X cdi.maxtrack = tochdr.last;
- X
- X if (cdi.times != NULL)
- X {
- X free((char *) cdi.times);
- X free((char *) cdi.addrs);
- X cdi.times = NULL;
- X cdi.addrs = NULL;
- X }
- X
- X cdi.times = ushort_malloc(cdi.maxtrack - cdi.mintrack + 1);
- X cdi.addrs = msf_malloc(cdi.maxtrack - cdi.mintrack + 2);
- X
- X otime = 0;
- X
- X for (trk = cdi.mintrack; trk <= cdi.maxtrack; trk++) {
- X if (cdrom_get_msf(trk, &msf, &trk_total) == -1)
- X return(-1);
- X
- X /* record start address for each track (track 1 starts at 0)*/
- X cdi.addrs[trk - cdi.mintrack] = msf;
- X
- X trk_total -= otime;
- X
- X /* use start time of next track as length of previous */
- X if (otime != 0)
- X {
- X cdi.times[trk - cdi.mintrack - 1] = trk_total;
- X }
- X
- X otime += trk_total;
- X
- X }
- X
- X /* find start of leadout to get length of last track */
- X if (cdrom_get_msf(CDROM_LEADOUT, &msf, &trk_total) == -1)
- X return(-1);
- X
- X /* recode leadout start address */
- X cdi.addrs[trk - cdi.mintrack] = msf;
- X trk_total -= otime;
- X otime += trk_total;
- X
- X cdi.times[trk - cdi.mintrack - 1] = trk_total;
- X
- X return(0);
- X}
- X
- X# if defined(notdef)
- Xstatic void
- Xcdrom_print_toc() {
- X unsigned long trk, trk_total;
- X
- X for (trk = cdi.mintrack; trk <= cdi.maxtrack; trk++) {
- X trk_total = cdi.times[trk - cdi.mintrack];
- X debug_printf(1, "%02u:%02u\n", trk_total/60, trk_total%60);
- X }
- X}
- X# endif /* defined(notdef) */
- X
- Xint
- Xcdrom_get_curtrack() {
- X CDSTATUS cdrom_stat;
- X
- X if (cdi.scsi_audio && cdrom_audio_opened &&
- X ((cdrom_shmem->cdrom_audio_cdi.state == CD_PLAYING) ||
- X (cdrom_shmem->cdrom_audio_cdi.state == CD_PAUSED))) {
- X if (((cdrom_shmem->cdrom_audio_msf.minute * 60) +
- X cdrom_shmem->cdrom_audio_msf.second) >
- X ((cdi.addrs[cdrom_shmem->cdrom_audio_cdi.curtrack].minute * 60) +
- X cdi.addrs[cdrom_shmem->cdrom_audio_cdi.curtrack].second)) {
- X cdrom_shmem->cdrom_audio_cdi.curtrack++;
- X }
- X if (((cdrom_shmem->cdrom_audio_msf.minute * 60) +
- X cdrom_shmem->cdrom_audio_msf.second) <
- X ((cdi.addrs[cdrom_shmem->cdrom_audio_cdi.curtrack-1].minute * 60) +
- X cdi.addrs[cdrom_shmem->cdrom_audio_cdi.curtrack-1].second)) {
- X cdrom_shmem->cdrom_audio_cdi.curtrack--;
- X }
- X return(cdrom_shmem->cdrom_audio_cdi.curtrack);
- X }
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_stat): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X
- X switch (cdrom_stat.state) {
- X case CD_ERROR:
- X return(-1);
- X
- X case CD_NODISC:
- X debug_printf(1, "cdrom_get_curtrack: no disc\n");
- X return(0);
- X
- X /* playing track cdrom_stat.track */
- X case CD_PLAYING:
- X return((int) cdrom_stat.track);
- X
- X /* paused on track cdrom_stat.track */
- X case CD_PAUSED:
- X return((int) cdrom_stat.track);
- X
- X /* punt */
- X case CD_READY:
- X return(0);
- X
- X /* punt */
- X case CD_STILL:
- X return(0);
- X
- X#if 0
- X case CD_NOSTATUS:
- X debug_printf(1, "cdrom_get_curtrack: no status\n");
- X return(0);
- X#endif
- X }
- X
- X /* bad value in cdrom_stat */
- X return(-1);
- X}
- X
- Xint
- Xcdrom_get_msf(track, msf, length)
- X unsigned long track;
- X struct msf *msf;
- X unsigned long *length;
- X{
- X struct cdrom_tocentry tocentry;
- X
- X if (cdrom_read_tocentry(track, &tocentry) == -1)
- X return(-1);
- X
- X msf->minute = tocentry.cdte_addr.msf.minute;
- X msf->second = tocentry.cdte_addr.msf.second;
- X msf->frame = tocentry.cdte_addr.msf.frame;
- X
- X *length = ((int) tocentry.cdte_addr.msf.minute * 60) +
- X (int) tocentry.cdte_addr.msf.second;
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_get_curmsf(msf)
- X struct msf *msf;
- X{
- X int num_frames;
- X CDSTATUS cdrom_stat;
- X
- X if (cdi.scsi_audio && cdrom_audio_opened) {
- X msf->minute = cdrom_shmem->cdrom_audio_msf.minute;
- X msf->second = cdrom_shmem->cdrom_audio_msf.second;
- X msf->frame = cdrom_shmem->cdrom_audio_msf.frame;
- X if (msf->minute < 0) {
- X msf->minute = 0;
- X msf->second = 0;
- X msf->frame = 0;
- X }
- X return(0);
- X }
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_stat): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X msf->minute = cdrom_stat.abs_min;
- X msf->second = cdrom_stat.abs_sec;
- X msf->frame = cdrom_stat.abs_frame;
- X
- X return (0);
- X}
- X
- Xint
- Xcdrom_play_track(start_track, end_track)
- X unsigned char start_track;
- X unsigned char end_track;
- X{
- X int track;
- X struct msf msf;
- X
- X track = start_track;
- X
- X if ( cdi.scsi_audio && cdrom_audio_opened ) {
- X cdrom_shmem->cdrom_audio_cdi.start_track = start_track;
- X cdrom_shmem->cdrom_audio_cdi.end_track = end_track;
- X
- X cdrom_shmem->cdrom_audio_cdi.state = CD_ABORT;
- X if (CDseektrack(cdrom_fd, track) < 0) {
- X perror("CDseektrack");
- X return(-1);
- X }
- X msf = cdi.addrs[track - cdi.mintrack];
- X cdrom_shmem->cdrom_audio_msf.minute = msf.minute;
- X cdrom_shmem->cdrom_audio_msf.second = msf.second;
- X cdrom_shmem->cdrom_audio_msf.frame = msf.frame;
- X cdi.curtrack = track;
- X cdrom_shmem->cdrom_audio_cdi.curtrack = track;
- X cdrom_shmem->cdrom_audio_cdi.state = CD_PLAYING;
- X if (cdrom_shmem->cdrom_audio_cdi.child_pid != 0) {
- X return(0);
- X }
- X signal(SIGCLD, cdrom_child_died);
- X if ((cdrom_shmem->cdrom_audio_cdi.child_pid = fork()) == 0) {
- X cdrom_child_setup();
- X while (1) {
- X cdrom_play_frames(ONE_SECOND);
- X }
- X }
- X } else {
- X if (! CDplaytrack(cdrom_fd, track, 1)) {
- X perror("CDplaytrack");
- X return(-1);
- X }
- X }
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_play_msf(start_msf, end_msf)
- X struct msf *start_msf;
- X struct msf *end_msf;
- X{
- X int num_frames;
- X int i;
- X
- X /* Fix negative seconds */
- X if (start_msf->second < 0) {
- X start_msf->second += 60;
- X start_msf->minute--;
- X }
- X
- X if ( cdi.scsi_audio && cdrom_audio_opened ) {
- X cdrom_shmem->cdrom_audio_msf.minute = start_msf->minute;
- X cdrom_shmem->cdrom_audio_msf.second = start_msf->second;
- X cdrom_shmem->cdrom_audio_msf.frame = start_msf->frame;
- X if (CDseek(cdrom_fd, start_msf->minute,
- X start_msf->second,
- X start_msf->frame) < 0) {
- X perror("CDseek");
- X return(-1);
- X }
- X cdrom_shmem->cdrom_audio_cdi.state = CD_PLAYING;
- X cdrom_shmem->cdrom_audio_cdi.curtrack = cdi.curtrack;
- X if (cdrom_shmem->cdrom_audio_cdi.child_pid != 0) {
- X return(0);
- X }
- X signal(SIGCLD, cdrom_child_died);
- X if ((cdrom_shmem->cdrom_audio_cdi.child_pid = fork()) == 0) {
- X cdrom_child_setup();
- X while (1) {
- X cdrom_play_frames(ONE_SECOND);
- X }
- X }
- X
- X } else {
- X if (! CDplayabs(cdrom_fd, start_msf->minute,
- X start_msf->second,
- X start_msf->frame, 1)) {
- X perror("CDplayabs");
- X return(-1);
- X }
- X
- X return(0);
- X }
- X}
- X
- Xint
- Xcdrom_read_tocentry(track, tocentry)
- X unsigned int track;
- X struct cdrom_tocentry *tocentry;
- X{
- X CDSTATUS cdrom_stat;
- X CDTRACKINFO cdrom_track;
- X
- X tocentry->cdte_track = track;
- X tocentry->cdte_format = CDROM_MSF;
- X
- X if (cdrom_status() == CD_NODISC) {
- X tocentry->cdte_addr.msf.minute = 0;
- X tocentry->cdte_addr.msf.second = 0;
- X tocentry->cdte_addr.msf.frame = 0;
- X return(0);
- X }
- X
- X if (track == CDROM_LEADOUT) {
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_read_tocentry): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X tocentry->cdte_addr.msf.minute = cdrom_stat.total_min;
- X tocentry->cdte_addr.msf.second = cdrom_stat.total_sec;
- X tocentry->cdte_addr.msf.frame = cdrom_stat.total_frame;
- X } else {
- X if (! CDgettrackinfo(cdrom_fd, track,
- X (CDTRACKINFO *) &cdrom_track)) {
- X fprintf(stderr, "CDgettrackinfo(cdrom_read_tocentry): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X tocentry->cdte_addr.msf.minute = cdrom_track.start_min;
- X tocentry->cdte_addr.msf.second = cdrom_track.start_sec;
- X tocentry->cdte_addr.msf.frame = cdrom_track.start_frame;
- X }
- X return(0);
- X}
- X
- Xint
- Xcdrom_read_tochdr(tochdr)
- X CDSTATUS *tochdr;
- X{
- X if (cdrom_status() == CD_NODISC)
- X return(-1);
- X
- X if (! CDgetstatus(cdrom_fd, tochdr)) {
- X fprintf(stderr, "CDgetstatus(cdrom_read_tochdr): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_status() {
- X CDSTATUS cdrom_stat;
- X
- X if (cdrom_fd == NULL) {
- X return(-1);
- X }
- X
- X if (cdi.scsi_audio && cdrom_audio_opened &&
- X (cdrom_shmem->cdrom_audio_cdi.child_pid != 0)) {
- X return(cdrom_shmem->cdrom_audio_cdi.state);
- X }
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_stat): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X
- X switch (cdrom_stat.state) {
- X case CD_ERROR:
- X return(CD_ERROR);
- X case CD_NODISC:
- X return(CD_NODISC);
- X case CD_READY:
- X return(CD_READY);
- X case CD_PLAYING:
- X return(CD_PLAYING);
- X case CD_PAUSED:
- X return(CD_PAUSED);
- X case CD_STILL:
- X return(CD_STILL);
- X }
- X
- X return(-1);
- X}
- X
- Xint
- Xcdrom_playing(track)
- X int *track;
- X{
- X CDSTATUS cdrom_stat;
- X
- X if (cdi.scsi_audio && cdrom_audio_opened &&
- X ((cdrom_shmem->cdrom_audio_cdi.state == CD_PLAYING) ||
- X (cdrom_shmem->cdrom_audio_cdi.state == CD_PAUSED))) {
- X return(cdrom_shmem->cdrom_audio_cdi.state);
- X }
- X
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_playing): ");
- X perror("CDstatus");
- X return(-1);
- X }
- X
- X *track = cdrom_stat.track;
- X if (cdrom_stat.state == CD_PLAYING) {
- X return(1);
- X }
- X
- X return(0);
- X}
- X
- Xint
- Xcdrom_paused(track)
- X int *track;
- X{
- X CDSTATUS cdrom_stat;
- X
- X if (cdi.scsi_audio && cdrom_audio_opened &&
- X ((cdrom_shmem->cdrom_audio_cdi.state == CD_PLAYING) ||
- X (cdrom_shmem->cdrom_audio_cdi.state == CD_PAUSED))) {
- X return(cdrom_shmem->cdrom_audio_cdi.state);
- X }
- X
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_paused): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X
- X *track = cdrom_stat.track;
- X if (cdrom_status() == CD_PAUSED) {
- X return(1);
- X }
- X
- X return(0);
- X}
- X
- X# if defined(notused)
- Xint
- Xmounted(name)
- X char *name;
- X{
- X char buf[MAXPATHLEN], *cp;
- X struct stat st;
- X dev_t bdevno;
- X FILE *fp;
- X struct mntent *mnt;
- X
- X /*
- X * Get the block device corresponding to the raw device opened,
- X * and find its device number.
- X */
- X if (stat(name, &st) != 0) {
- X (void) fprintf(stderr, "stat: ");
- X perror(name);
- X return(UNMOUNTED);
- X }
- X
- X /*
- X * If this is a raw device, we have to build the block device name.
- X */
- X if ((st.st_mode & S_IFMT) == S_IFCHR) {
- X if ((cp = strchr(name, 'r')) != NULL)
- X cp++;
- X
- X (void) sprintf(buf, "/dev/%s", cp);
- X if (stat(buf, &st) != 0) {
- X (void) fprintf(stderr, "stat: ");
- X perror(buf);
- X return(UNMOUNTED);
- X }
- X }
- X
- X if ((st.st_mode & S_IFMT) != S_IFBLK)
- X return(UNMOUNTED);
- X
- X bdevno = st.st_rdev & (dev_t)(~0x07); /* Mask out partition. */
- X
- X /*
- X * Now go through the mtab, looking at all hsfs filesystems.
- X * Compare the device mounted with our bdevno.
- X */
- X if ((fp = setmntent(MOUNTED, "r")) == NULL) {
- X (void) fprintf(stderr, "couldn't open %s\n", MOUNTED);
- X return(UNMOUNTED);
- X }
- X
- X while ((mnt = getmntent(fp)) != NULL) {
- X /* avoid obvious excess stat(2)'s */
- X if (strcmp(mnt->mnt_type, "hsfs") != 0)
- X continue;
- X
- X if (stat(mnt->mnt_fsname, &st) != 0)
- X continue;
- X
- X if (((st.st_mode & S_IFMT) == S_IFBLK) &&
- X ((st.st_rdev & (dev_t)(~0x07)) == bdevno)) {
- X (void) endmntent(fp);
- X return(STILL_MOUNTED);
- X }
- X }
- X
- X (void) endmntent(fp);
- X
- X return(UNMOUNTED);
- X}
- X# endif /* defined(notused) */
- X
- Xint
- Xcdrom_play_frames(number)
- X int number;
- X{
- X int frames_to_read = number;
- X int num_frames;
- X int frame_ctr;
- X struct msf msf;
- X CDSTATUS cdrom_stat;
- X
- X if (cdrom_audio_opened &&
- X cdrom_shmem->cdrom_audio_cdi.state != CD_PLAYING) {
- X sleep(1);
- X return(-1);
- X }
- X
- X if (frames_to_read > INIT_READ) {
- X frames_to_read = INIT_READ;
- X }
- X if ((num_frames =
- X CDreadda(cdrom_fd, &cd_audio_buff[0], frames_to_read)) == -1) {
- X perror("CDreadda");
- X return(-1);
- X }
- X if (num_frames == 0) {
- X msf = cdi.addrs[cdi.maxtrack];
- X if ((cdrom_shmem->cdrom_audio_msf.minute >= (msf.minute-1)) &&
- X (cdrom_shmem->cdrom_audio_msf.second >= (msf.second-1)) ) {
- X cdrom_shmem->cdrom_audio_cdi.curtrack = 0;
- X cdrom_shmem->cdrom_audio_cdi.state = CD_READY;
- X }
- X return(0);
- X }
- X for (frame_ctr=0;
- X frame_ctr<num_frames &&
- X cdrom_shmem->cdrom_audio_cdi.state == CD_PLAYING;
- X frame_ctr++) {
- X CDparseframe(cd_parser, &cd_audio_buff[frame_ctr]);
- X }
- X if (cdrom_shmem->cdrom_audio_cdi.state == CD_ABORT) {
- X cdrom_shmem->cdrom_audio_cdi.state = CD_PLAYING;
- X }
- X return(num_frames);
- X}
- X
- Xint
- Xcdrom_child_setup() {
- X cdrom_shmem = shmat(shmid, NULL, SHM_RND);
- X cdrom_shmem->cdrom_audio_cdi.state = CD_PLAYING;
- X signal(SIGHUP,cdrom_child_quit);
- X}
- X
- Xvoid
- Xcdrom_child_died() {
- X cdrom_stop();
- X wait(NULL);
- X cdrom_shmem->cdrom_audio_cdi.child_pid = 0;
- X cdrom_shmem->cdrom_audio_cdi.state = CD_READY;
- X cdrom_shmem->cdrom_audio_cdi.curtrack = 0;
- X cdi.curtrack = 0;
- X cdrom_shmem->cdrom_audio_msf.minute = 0;
- X cdrom_shmem->cdrom_audio_msf.second = 0;
- X cdrom_shmem->cdrom_audio_msf.frame = 0;
- X signal(SIGCLD,cdrom_child_died);
- X}
- X
- Xvoid
- Xcdrom_child_quit() {
- X shmdt(cdrom_shmem);
- X exit(1);
- X}
- X
- Xvoid
- Xcdrom_kill_child()
- X{
- X if (!(cdrom_audio_opened && cdrom_shmem->cdrom_audio_cdi.child_pid)) {
- X return;
- X }
- X kill(cdrom_shmem->cdrom_audio_cdi.child_pid, SIGHUP);
- X wait(NULL);
- X cdrom_shmem->cdrom_audio_cdi.state = CD_READY;
- X cdrom_shmem->cdrom_audio_cdi.child_pid = 0;
- X}
- X
- Xint
- Xcdrom_audio_avail() {
- X CDSTATUS cdrom_stat;
- X
- X if (cdrom_audio_opened && (! audio_button_state())) {
- X return(0);
- X }
- X cdrom_audio_opened = 1;
- X
- X if (! CDgetstatus(cdrom_fd, (CDSTATUS *) &cdrom_stat)) {
- X fprintf(stderr, "CDgetstatus(cdrom_stat): ");
- X perror("CDgetstatus");
- X return(-1);
- X }
- X
- X if ( cdrom_stat.scsi_audio && (cdrom_audio_open() >= 0) ) {
- X return(1);
- X } else {
- X return(0);
- X }
- X}
- X
- Xunsigned short *
- Xushort_malloc(n)
- X int n;
- X{
- X extern char *calloc();
- X unsigned short *ptr;
- X
- X ptr = (unsigned short *) calloc(n, sizeof(unsigned short));
- X if (ptr == NULL) {
- X perror("calloc");
- X exit(1);
- X }
- X
- X return(ptr);
- X}
- X
- Xstruct msf *
- Xmsf_malloc(n)
- X int n;
- X{
- X extern char *calloc();
- X struct msf *ptr;
- X
- X ptr = (struct msf *) calloc(n, sizeof(struct msf));
- X if (ptr == NULL) {
- X perror("calloc");
- X exit(1);
- X }
- X
- X return(ptr);
- X}
- X
- Xint
- Xcdrom_disp_cdi() {
- X int trk;
- X
- X fprintf(stderr,"CDI structure:\n");
- X fprintf(stderr,"\tcurtrack: %d\n",cdi.curtrack);
- X fprintf(stderr,"\tmin: %d max: %d total: %d\n",
- X cdi.mintrack, cdi.maxtrack, cdi.ntracks);
- X fprintf(stderr,"\tdur: %d state: %2x\n",cdi.duration, cdi.state);
- X fprintf(stderr,"\tcurrand: %d lastprog: %d\n",
- X cdi.currand, cdi.lastprog);
- X fprintf(stderr,"\n\tTracklist:\n");
- X if (cdi.maxtrack != cdi.mintrack) {
- X for (trk=cdi.mintrack; trk<=cdi.maxtrack; trk++) {
- X fprintf(stderr,"\t%3d: %d %02d:%02d %d\n",trk,cdi.times[trk],
- X cdi.addrs[trk].minute,cdi.addrs[trk].second,
- X cdi.addrs[trk].frame);
- X }
- X }
- X
- X if (cdi.scsi_audio) {
- X fprintf(stderr,"AUDIO_CDI structure:\n");
- X fprintf(stderr,"\tcurtrack: %d\n",cdrom_shmem->cdrom_audio_cdi.curtrack);
- X fprintf(stderr,"\tdur: %d state: %d\n",cdrom_shmem->cdrom_audio_cdi.duration, cdrom_shmem->cdrom_audio_cdi.state);
- X }
- X}
- X
- X# endif /* defined(sgi) */
- END_OF_FILE
- if test 24783 -ne `wc -c <'xcdplayer-2.2/cdrom_sgi.c'`; then
- echo shar: \"'xcdplayer-2.2/cdrom_sgi.c'\" unpacked with wrong size!
- fi
- # end of 'xcdplayer-2.2/cdrom_sgi.c'
- fi
- echo shar: End of archive 5 \(of 5\).
- cp /dev/null ark5isdone
- MISSING=""
- for I in 1 2 3 4 5 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 5 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Dan Rich | drich@lerc.nasa.gov | (216) 433-4000
- Sr. Systems Engineer | "Danger, you haven't seen the last of me!"
- RMS Technologies, Inc. | "No, but the first of you turns my stomach!"
- NASA Lewis Research Center | -- The Firesign Theatre's Nick Danger
-
-