home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume21 / xmcd / part04 < prev    next >
Encoding:
Text File  |  1993-12-19  |  62.8 KB  |  1,951 lines

  1. Newsgroups: comp.sources.x
  2. From: ti@bazooka.amb.org (Ti Kan)
  3. Subject: v21i066:  xmcd - X11/Motif CD audio player, Part04/13
  4. Message-ID: <1993Dec19.193840.24063@sparky.sterling.com>
  5. X-Md4-Signature: 4fe215d92d0fb07c56d4e353e4883037
  6. Sender: chris@sparky.sterling.com (Chris Olson)
  7. Organization: Sterling Software
  8. Date: Sun, 19 Dec 1993 19:38:40 GMT
  9. Approved: chris@sterling.com
  10.  
  11. Submitted-by: ti@bazooka.amb.org (Ti Kan)
  12. Posting-number: Volume 21, Issue 66
  13. Archive-name: xmcd/part04
  14. Environment: X11, OSF/Motif
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 4 (of 13)."
  23. # Contents:  patchlevel.h resource.h util.h widget.h xmcd.h
  24. # Wrapped by ti@bazooka on Mon Nov  8 10:35:19 1993
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f 'patchlevel.h' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'patchlevel.h'\"
  28. else
  29. echo shar: Extracting \"'patchlevel.h'\" \(1150 characters\)
  30. sed "s/^X//" >'patchlevel.h' <<'END_OF_FILE'
  31. X/*
  32. X *   xmcd - Motif(tm) CD Audio Player
  33. X *
  34. X *   Copyright (C) 1993  Ti Kan
  35. X *   E-mail: ti@amb.org
  36. X *
  37. X *   This program is free software; you can redistribute it and/or modify
  38. X *   it under the terms of the GNU General Public License as published by
  39. X *   the Free Software Foundation; either version 2 of the License, or
  40. X *   (at your option) any later version.
  41. X *
  42. X *   This program is distributed in the hope that it will be useful,
  43. X *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  44. X *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  45. X *   GNU General Public License for more details.
  46. X *
  47. X *   You should have received a copy of the GNU General Public License
  48. X *   along with this program; if not, write to the Free Software
  49. X *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  50. X *
  51. X */
  52. X#ifndef __PATCHLEVEL_H__
  53. X#define __PATCHLEVEL_H__
  54. X
  55. X#ifndef LINT
  56. Xstatic char *_patchlevel_h_ident_ = "@(#)patchlevel.h    1.16 93/09/28";
  57. X#endif
  58. X
  59. X#define VERSION        "1.0"        /* The version number */
  60. X#define VERSION_EXT    ""        /* Version number extension */
  61. X#define PATCHLEVEL    0        /* The patch level */
  62. X
  63. X#endif    /* __PATCHLEVEL_H__ */
  64. END_OF_FILE
  65. if test 1150 -ne `wc -c <'patchlevel.h'`; then
  66.     echo shar: \"'patchlevel.h'\" unpacked with wrong size!
  67. fi
  68. # end of 'patchlevel.h'
  69. fi
  70. if test -f 'resource.h' -a "${1}" != "-c" ; then 
  71.   echo shar: Will not clobber existing file \"'resource.h'\"
  72. else
  73. echo shar: Extracting \"'resource.h'\" \(32884 characters\)
  74. sed "s/^X//" >'resource.h' <<'END_OF_FILE'
  75. X/*
  76. X *   xmcd - Motif(tm) CD Audio Player
  77. X *
  78. X *   Copyright (C) 1993  Ti Kan
  79. X *   E-mail: ti@amb.org
  80. X *
  81. X *   This program is free software; you can redistribute it and/or modify
  82. X *   it under the terms of the GNU General Public License as published by
  83. X *   the Free Software Foundation; either version 2 of the License, or
  84. X *   (at your option) any later version.
  85. X *
  86. X *   This program is distributed in the hope that it will be useful,
  87. X *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  88. X *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  89. X *   GNU General Public License for more details.
  90. X *
  91. X *   You should have received a copy of the GNU General Public License
  92. X *   along with this program; if not, write to the Free Software
  93. X *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  94. X *
  95. X */
  96. X#ifndef __RESOURCE_H__
  97. X#define __RESOURCE_H__
  98. X
  99. X#ifndef LINT
  100. Xstatic char *_resource_h_ident_ = "@(#)resource.h    1.91 93/09/28";
  101. X#endif
  102. X
  103. X#define XmcdNdevnum            "devnum"
  104. X#define XmcdCDevnum            "Devnum"
  105. X#define XmcdNdevice            "device"
  106. X#define XmcdCDevice            "Device"
  107. X#define XmcdNlibdir            "libdir"
  108. X#define XmcdCLibdir            "Libdir"
  109. X#define XmcdNdbdir            "dbdir"
  110. X#define XmcdCDbdir            "Dbdir"
  111. X#define XmcdNmaxDbdirs            "maxDbdirs"
  112. X#define XmcdCMaxDbdirs            "MaxDbdirs"
  113. X#define XmcdNdbFileMode            "dbFileMode"
  114. X#define XmcdCDbFileMode            "DbFileMode"
  115. X
  116. X#define XmcdNcaddyLock            "caddyLock"
  117. X#define XmcdCCaddyLock            "CaddyLock"
  118. X#define XmcdNstatusPollInterval        "statusPollInterval"
  119. X#define XmcdCStatusPollInterval        "StatusPollInterval"
  120. X#define XmcdNinsertPollInterval        "insertPollInterval"
  121. X#define XmcdCInsertPollInterval        "InsertPollInterval"
  122. X#define XmcdNpreviousThreshold        "previousThreshold"
  123. X#define XmcdCPreviousThreshold        "PreviousThreshold"
  124. X#define XmcdNsearchSkipBlocks        "searchSkipBlocks"
  125. X#define XmcdCSearchSkipBlocks        "SearchSkipBlocks"
  126. X#define XmcdNsearchPauseInterval    "searchPauseInterval"
  127. X#define XmcdCSearchPauseInterval    "SearchPauseInterval"
  128. X#define XmcdNsearchSpeedUpCount        "searchSpeedUpCount"
  129. X#define XmcdCSearchSpeedUpCount        "SearchSpeedUpCount"
  130. X#define XmcdNsearchVolumePercent    "searchVolumePercent"
  131. X#define XmcdCSearchVolumePercent    "SearchVolumePercent"
  132. X#define XmcdNsearchMinVolume        "searchMinVolume"
  133. X#define XmcdCSearchMinVolume        "SearchMinVolume"
  134. X#define XmcdNsampleBlocks        "sampleBlocks"
  135. X#define XmcdCSampleBlocks        "SampleBlocks"
  136. X#define XmcdNminimumPlayBlocks        "minimumPlayBlocks"
  137. X#define XmcdCMinimumPlayBlocks        "MinimumPlayBlocks"
  138. X#define XmcdNdisplayBlinkOnInterval    "displayBlinkOnInterval"
  139. X#define XmcdCDisplayBlinkOnInterval    "DisplayBlinkOnInterval"
  140. X#define XmcdNdisplayBlinkOffInterval    "displayBlinkOffInterval"
  141. X#define XmcdCDisplayBlinkOffInterval    "DisplayBlinkOffInterval"
  142. X#define XmcdNdriveVendorCode        "driveVendorCode"
  143. X#define XmcdCDriveVendorCode        "DriveVendorCode"
  144. X#define XmcdNplayAudio10Support        "playAudio10Support"
  145. X#define XmcdCPlayAudio10Support        "PlayAudio10Support"
  146. X#define XmcdNplayAudio12Support        "playAudio12Support"
  147. X#define XmcdCPlayAudio12Support        "PlayAudio12Support"
  148. X#define XmcdNplayAudioMSFSupport    "playAudioMSFSupport"
  149. X#define XmcdCPlayAudioMSFSupport    "PlayAudioMSFSupport"
  150. X#define XmcdNplayAudioTISupport        "playAudioTISupport"
  151. X#define XmcdCPlayAudioTISupport        "PlayAudioTISupport"
  152. X#define XmcdNloadSupport        "loadSupport"
  153. X#define XmcdCLoadSupport        "LoadSupport"
  154. X#define XmcdNejectSupport        "ejectSupport"
  155. X#define XmcdCEjectSupport        "EjectSupport"
  156. X#define XmcdNvolumeControlSupport    "volumeControlSupport"
  157. X#define XmcdCVolumeControlSupport    "VolumeControlSupport"
  158. X#define XmcdNvolumeControlSetDBD    "volumeControlSetDBD"
  159. X#define XmcdCVolumeControlSetDBD    "VolumeControlSetDBD"
  160. X#define XmcdNscsiAudioVolumeBase    "scsiAudioVolumeBase"
  161. X#define XmcdCScsiAudioVolumeBase    "ScsiAudioVolumeBase"
  162. X#define XmcdNvolumeControlTaper        "volumeControlTaper"
  163. X#define XmcdCVolumeControlTaper        "VolumeControlTaper"
  164. X#define XmcdNpauseResumeSupport        "pauseResumeSupport"
  165. X#define XmcdCPauseResumeSupport        "PauseResumeSupport"
  166. X#define XmcdNcaddyLockSupport        "caddyLockSupport"
  167. X#define XmcdCCaddyLockSupport        "CaddyLockSupport"
  168. X#define XmcdNspinDownOnLoad        "spinDownOnLoad"
  169. X#define XmcdCSpinDownOnLoad        "SpinDownOnLoad"
  170. X#define XmcdNejectOnExit        "ejectOnExit"
  171. X#define XmcdCEjectOnExit        "EjectOnExit"
  172. X#define XmcdNstopOnExit            "stopOnExit"
  173. X#define XmcdCStopOnExit            "StopOnExit"
  174. X#define XmcdNshowScsiErrMsg        "showScsiErrMsg"
  175. X#define XmcdCShowScsiErrMsg        "ShowScsiErrMsg"
  176. X#define XmcdNmainShowFocus        "mainShowFocus"
  177. X#define XmcdCMainShowFocus        "MainShowFocus"
  178. X
  179. X#define XmcdNmainWindowTitle        "mainWindowTitle"
  180. X#define XmcdCMainWindowTitle        "MainWindowTitle"
  181. X#define XmcdNdbModeMsg            "dbModeMsg"
  182. X#define XmcdCDbModeMsg            "DbModeMsg"
  183. X#define XmcdNprogModeMsg        "progModeMsg"
  184. X#define XmcdCProgModeMsg        "ProgModeMsg"
  185. X#define XmcdNelapseMsg            "elapseMsg"
  186. X#define XmcdCElapseMsg            "ElapseMsg"
  187. X#define XmcdNremainTrackMsg        "remainTrackMsg"
  188. X#define XmcdCRemainTrackMsg        "RemainTrackMsg"
  189. X#define XmcdNremainDiscMsg        "remainDiscMsg"
  190. X#define XmcdCRemainDiscMsg        "RemainDiscMsg"
  191. X#define XmcdNplayMsg            "playMsg"
  192. X#define XmcdCPlayMsg            "PlayMsg"
  193. X#define XmcdNpauseMsg            "pauseMsg"
  194. X#define XmcdCPauseMsg            "PauseMsg"
  195. X#define XmcdNreadyMsg            "readyMsg"
  196. X#define XmcdCReadyMsg            "ReadyMsg"
  197. X#define XmcdNsampleMsg            "sampleMsg"
  198. X#define XmcdCSampleMsg            "SampleMsg"
  199. X#define XmcdNusageMsg            "usageMsg"
  200. X#define XmcdCUsageMsg            "UsageMsg"
  201. X#define XmcdNbadOptsMsg            "badOptsMsg"
  202. X#define XmcdCBadOptsMsg            "BadOptsMsg"
  203. X#define XmcdNnoDiscMsg            "noDiscMsg"
  204. X#define XmcdCNoDiscMsg            "NoDiscMsg"
  205. X#define XmcdNdevBusyMsg            "devBusyMsg"
  206. X#define XmcdCDevBusyMsg            "DevBusyMsg"
  207. X#define XmcdNdataMsg            "dataMsg"
  208. X#define XmcdCDataMsg            "DataMsg"
  209. X#define XmcdNwarningMsg            "warningMsg"
  210. X#define XmcdCWarningMsg            "WarningMsg"
  211. X#define XmcdNfatalMsg            "fatalMsg"
  212. X#define XmcdCFatalMsg            "FatalMsg"
  213. X#define XmcdNconfirmMsg            "confirmMsg"
  214. X#define XmcdCConfirmMsg            "ConfirmMsg"
  215. X#define XmcdNinfoMsg            "infoMsg"
  216. X#define XmcdCInfoMsg            "InfoMsg"
  217. X#define XmcdNaboutMsg            "aboutMsg"
  218. X#define XmcdCAboutMsg            "AboutMsg"
  219. X#define XmcdNquitMsg            "quitMsg"
  220. X#define XmcdCQuitMsg            "QuitMsg"
  221. X#define XmcdNnoMemMsg            "noMemMsg"
  222. X#define XmcdCNoMemMsg            "NoMemMsg"
  223. X#define XmcdNnoHelpMsg            "noHelpMsg"
  224. X#define XmcdCNoHelpMsg            "NoHelpMsg"
  225. X#define XmcdNnoLinkMsg            "noLinkMsg"
  226. X#define XmcdCNoLinkMsg            "NoLinkMsg"
  227. X#define XmcdNnoDbMsg            "noDbMsg"
  228. X#define XmcdCNoDbMsg            "NoDbMsg"
  229. X#define XmcdNnotRomMsg            "notRomMsg"
  230. X#define XmcdCNotRomMsg            "NotRomMsg"
  231. X#define XmcdNnotScsi2Msg        "notScsi2Msg"
  232. X#define XmcdCNotScsi2Msg        "NotScsi2Msg"
  233. X#define XmcdNmodeErrMsg            "modeErrMsg"
  234. X#define XmcdCModeErrMsg            "ModeErrMsg"
  235. X#define XmcdNstatErrMsg            "statErrMsg"
  236. X#define XmcdCStatErrMsg            "StatErrMsg"
  237. X#define XmcdNnodeErrMsg            "nodeErrMsg"
  238. X#define XmcdCNodeErrMsg            "NodeErrMsg"
  239. X#define XmcdNseqFmtErrMsg        "seqFmtErrMsg"
  240. X#define XmcdCSeqFmtErrMsg        "SeqFmtErrMsg"
  241. X#define XmcdNdbdirsErrMsg        "dbdirsErrMsg"
  242. X#define XmcdCDbdirsErrMsg        "DbdirsErrMsg"
  243. X#define XmcdNrecovErrMsg        "recovErrMsg"
  244. X#define XmcdCRecovErrMsg        "RecovErrMsg"
  245. X#define XmcdNmaxErrMsg            "maxErrMsg"
  246. X#define XmcdCMaxErrMsg            "MaxErrMsg"
  247. X#define XmcdNsavErrForkMsg        "savErrForkMsg"
  248. X#define XmcdCSavErrForkMsg        "SavErrForkMsg"
  249. X#define XmcdNsavErrSuidMsg        "savErrSuidMsg"
  250. X#define XmcdCSavErrSuidMsg        "SavErrSuidMsg"
  251. X#define XmcdNsavErrOpenMsg        "savErrOpenMsg"
  252. X#define XmcdCSavErrOpenMsg        "SavErrOpenMsg"
  253. X#define XmcdNsavErrKilledMsg        "savErrKilledMsg"
  254. X#define XmcdCSavErrKilledMsg        "SavErrKilledMsg"
  255. X#define XmcdNlnkErrForkMsg        "lnkErrForkMsg"
  256. X#define XmcdCLnkErrForkMsg        "LnkErrForkMsg"
  257. X#define XmcdNlnkErrSuidMsg        "lnkErrSuidMsg"
  258. X#define XmcdCLnkErrSuidMsg        "LnkErrSuidMsg"
  259. X#define XmcdNlnkErrLinkMsg        "lnkErrLinkMsg"
  260. X#define XmcdCLnkErrLinkMsg        "LnkErrLinkMsg"
  261. X#define XmcdNlnkErrKilledMsg        "lnkErrKilledMsg"
  262. X#define XmcdCLnkErrKilledMsg        "LnkErrKilledMsg"
  263. X
  264. X#define XmcdNbuttonLabelKey        "buttonLabelKey"
  265. X#define XmcdCButtonLabelKey        "ButtonLabelKey"
  266. X#define XmcdNlockKey            "lockKey"
  267. X#define XmcdCLockKey            "LockKey"
  268. X#define XmcdNrepeatKey            "repeatKey"
  269. X#define XmcdCRepeatKey            "RepeatKey"
  270. X#define XmcdNshuffleKey            "shuffleKey"
  271. X#define XmcdCShuffleKey            "ShuffleKey"
  272. X#define XmcdNejectKey            "ejectKey"
  273. X#define XmcdCEjectKey            "EjectKey"
  274. X#define XmcdNpowerOffKey        "powerOffKey"
  275. X#define XmcdCPowerOffKey        "PowerOffKey"
  276. X#define XmcdNdbprogKey            "dbprogKey"
  277. X#define XmcdCDbprogKey            "DbprogKey"
  278. X#define XmcdNhelpKey            "helpKey"
  279. X#define XmcdCHelpKey            "HelpKey"
  280. X#define XmcdNtimeKey            "timeKey"
  281. X#define XmcdCTimeKey            "TimeKey"
  282. X#define XmcdNabKey            "abKey"
  283. X#define XmcdCAbKey            "AbKey"
  284. X#define XmcdNsampleKey            "sampleKey"
  285. X#define XmcdCSampleKey            "SampleKey"
  286. X#define XmcdNkeypadKey            "keypadKey"
  287. X#define XmcdCKeypadKey            "KeypadKey"
  288. X#define XmcdNplayPauseKey        "playPauseKey"
  289. X#define XmcdCPlayPauseKey        "PlayPauseKey"
  290. X#define XmcdNstopKey            "stopKey"
  291. X#define XmcdCStopKey            "StopKey"
  292. X#define XmcdNprevTrackKey        "prevTrackKey"
  293. X#define XmcdCPrevTrackKey        "PrevTrackKey"
  294. X#define XmcdNnextTrackKey        "nextTrackKey"
  295. X#define XmcdCNextTrackKey        "NextTrackKey"
  296. X#define XmcdNprevIndexKey        "prevIndexKey"
  297. X#define XmcdCPrevIndexKey        "PrevIndexKey"
  298. X#define XmcdNnextIndexKey        "nextIndexKey"
  299. X#define XmcdCNextIndexKey        "NextIndexKey"
  300. X#define XmcdNrewKey            "rewKey"
  301. X#define XmcdCRewKey            "RewKey"
  302. X#define XmcdNffKey            "ffKey"
  303. X#define XmcdCFfKey            "FfKey"
  304. X#define XmcdNkeypadNumKey0        "keypadNumKey0"
  305. X#define XmcdCKeypadNumKey0        "KeypadNumKey0"
  306. X#define XmcdNkeypadNumKey1        "keypadNumKey1"
  307. X#define XmcdCKeypadNumKey1        "KeypadNumKey1"
  308. X#define XmcdNkeypadNumKey2        "keypadNumKey2"
  309. X#define XmcdCKeypadNumKey2        "KeypadNumKey2"
  310. X#define XmcdNkeypadNumKey3        "keypadNumKey3"
  311. X#define XmcdCKeypadNumKey3        "KeypadNumKey3"
  312. X#define XmcdNkeypadNumKey4        "keypadNumKey4"
  313. X#define XmcdCKeypadNumKey4        "KeypadNumKey4"
  314. X#define XmcdNkeypadNumKey5        "keypadNumKey5"
  315. X#define XmcdCKeypadNumKey5        "KeypadNumKey5"
  316. X#define XmcdNkeypadNumKey6        "keypadNumKey6"
  317. X#define XmcdCKeypadNumKey6        "KeypadNumKey6"
  318. X#define XmcdNkeypadNumKey7        "keypadNumKey7"
  319. X#define XmcdCKeypadNumKey7        "KeypadNumKey7"
  320. X#define XmcdNkeypadNumKey8        "keypadNumKey8"
  321. X#define XmcdCKeypadNumKey8        "KeypadNumKey8"
  322. X#define XmcdNkeypadNumKey9        "keypadNumKey9"
  323. X#define XmcdCKeypadNumKey9        "KeypadNumKey9"
  324. X#define XmcdNkeypadEnterKey        "keypadEnterKey"
  325. X#define XmcdCKeypadEnterKey        "KeypadEnterKey"
  326. X#define XmcdNkeypadClearKey        "keypadClearKey"
  327. X#define XmcdCKeypadClearKey        "KeypadClearKey"
  328. X#define XmcdNkeypadCancelKey        "keypadCancelKey"
  329. X#define XmcdCKeypadCancelKey        "KeypadCancelKey"
  330. X
  331. X
  332. XSTATIC XtResource    resources[] = {
  333. X    {
  334. X        XmcdNdevnum, XmcdCDevnum,
  335. X        XmRInt, sizeof(int),
  336. X        XtOffsetOf(AppData, devnum), XmRImmediate,
  337. X        (XtPointer) DEVNUM,
  338. X    },
  339. X    {
  340. X        XmcdNdevice, XmcdCDevice,
  341. X        XmRString, sizeof(String),
  342. X        XtOffsetOf(AppData, device), XmRImmediate,
  343. X        (XtPointer) DEVICE,
  344. X    },
  345. X    {
  346. X        XmcdNlibdir, XmcdCLibdir,
  347. X        XmRString, sizeof(String),
  348. X        XtOffsetOf(AppData, libdir), XmRImmediate,
  349. X        (XtPointer) CDLIBDIR,
  350. X    },
  351. X    {
  352. X        XmcdNdbdir, XmcdCDbdir,
  353. X        XmRString, sizeof(String),
  354. X        XtOffsetOf(AppData, dbdir), XmRImmediate,
  355. X        (XtPointer) CDDBDIR,
  356. X    },
  357. X    {
  358. X        XmcdNmaxDbdirs, XmcdCMaxDbdirs,
  359. X        XmRInt, sizeof(int),
  360. X        XtOffsetOf(AppData, max_dbdirs), XmRImmediate,
  361. X        (XtPointer) MAX_DBDIRS,
  362. X    },
  363. X    {
  364. X        XmcdNdbFileMode, XmcdCDbFileMode,
  365. X        XmRString, sizeof(String),
  366. X        XtOffsetOf(AppData, dbfile_mode), XmRImmediate,
  367. X        (XtPointer) DBFILE_MODE,
  368. X    },
  369. X    {
  370. X        XmcdNcaddyLock, XmcdCCaddyLock,
  371. X        XmRBoolean, sizeof(Boolean),
  372. X        XtOffsetOf(AppData, caddy_lock), XmRImmediate,
  373. X        (XtPointer) CADDY_LOCK,
  374. X    },
  375. X    {
  376. X        XmcdNspinDownOnLoad, XmcdCSpinDownOnLoad,
  377. X        XmRBoolean, sizeof(Boolean),
  378. X        XtOffsetOf(AppData, load_spindown), XmRImmediate,
  379. X        (XtPointer) LOAD_SPINDOWN,
  380. X    },
  381. X    {
  382. X        XmcdNejectOnExit, XmcdCEjectOnExit,
  383. X        XmRBoolean, sizeof(Boolean),
  384. X        XtOffsetOf(AppData, exit_eject), XmRImmediate,
  385. X        (XtPointer) EXIT_EJECT,
  386. X    },
  387. X    {
  388. X        XmcdNstopOnExit, XmcdCStopOnExit,
  389. X        XmRBoolean, sizeof(Boolean),
  390. X        XtOffsetOf(AppData, exit_stop), XmRImmediate,
  391. X        (XtPointer) EXIT_STOP,
  392. X    },
  393. X    {
  394. X        XmcdNshowScsiErrMsg, XmcdCShowScsiErrMsg,
  395. X        XmRBoolean, sizeof(Boolean),
  396. X        XtOffsetOf(AppData, scsierr_msg), XmRImmediate,
  397. X        (XtPointer) SCSIERR_MSG,
  398. X    },
  399. X    {
  400. X        XmcdNmainShowFocus, XmcdCMainShowFocus,
  401. X        XmRBoolean, sizeof(Boolean),
  402. X        XtOffsetOf(AppData, main_showfocus), XmRImmediate,
  403. X        (XtPointer) MAIN_SHOWFOCUS,
  404. X    },
  405. X    {
  406. X        XmcdNstatusPollInterval, XmcdCStatusPollInterval,
  407. X        XmRInt, sizeof(int),
  408. X        XtOffsetOf(AppData, stat_interval), XmRImmediate,
  409. X        (XtPointer) STATUS_INTERVAL,
  410. X    },
  411. X    {
  412. X        XmcdNinsertPollInterval, XmcdCInsertPollInterval,
  413. X        XmRInt, sizeof(int),
  414. X        XtOffsetOf(AppData, ins_interval), XmRImmediate,
  415. X        (XtPointer) INSERT_INTERVAL,
  416. X    },
  417. X    {
  418. X        XmcdNpreviousThreshold, XmcdCPreviousThreshold,
  419. X        XmRInt, sizeof(int),
  420. X        XtOffsetOf(AppData, prev_threshold), XmRImmediate,
  421. X        (XtPointer) PREV_THRESHOLD,
  422. X    },
  423. X    {
  424. X        XmcdNsearchSkipBlocks, XmcdCSearchSkipBlocks,
  425. X        XmRInt, sizeof(int),
  426. X        XtOffsetOf(AppData, skip_blks), XmRImmediate,
  427. X        (XtPointer) SKIP_BLKS,
  428. X    },
  429. X    {
  430. X        XmcdNsearchPauseInterval, XmcdCSearchPauseInterval,
  431. X        XmRInt, sizeof(int),
  432. X        XtOffsetOf(AppData, skip_pause), XmRImmediate,
  433. X        (XtPointer) SKIP_PAUSE,
  434. X    },
  435. X    {
  436. X        XmcdNsearchSpeedUpCount, XmcdCSearchSpeedUpCount,
  437. X        XmRInt, sizeof(int),
  438. X        XtOffsetOf(AppData, skip_spdup), XmRImmediate,
  439. X        (XtPointer) SKIP_SPDUP,
  440. X    },
  441. X    {
  442. X        XmcdNsearchVolumePercent, XmcdCSearchVolumePercent,
  443. X        XmRInt, sizeof(int),
  444. X        XtOffsetOf(AppData, skip_vol), XmRImmediate,
  445. X        (XtPointer) SKIP_VOL,
  446. X    },
  447. X    {
  448. X        XmcdNsearchMinVolume, XmcdCSearchMinVolume,
  449. X        XmRInt, sizeof(int),
  450. X        XtOffsetOf(AppData, skip_minvol), XmRImmediate,
  451. X        (XtPointer) SKIP_MINVOL,
  452. X    },
  453. X    {
  454. X        XmcdNsampleBlocks, XmcdCSampleBlocks,
  455. X        XmRInt, sizeof(int),
  456. X        XtOffsetOf(AppData, sample_blks), XmRImmediate,
  457. X        (XtPointer) SAMPLE_BLKS,
  458. X    },
  459. X    {
  460. X        XmcdNminimumPlayBlocks, XmcdCMinimumPlayBlocks,
  461. X        XmRInt, sizeof(int),
  462. X        XtOffsetOf(AppData, min_playblks), XmRImmediate,
  463. X        (XtPointer) MIN_PLAYBLKS,
  464. X    },
  465. X    {
  466. X        XmcdNdisplayBlinkOnInterval, XmcdCDisplayBlinkOnInterval,
  467. X        XmRInt, sizeof(int),
  468. X        XtOffsetOf(AppData, blinkon_interval), XmRImmediate,
  469. X        (XtPointer) BLINKON_INTERVAL,
  470. X    },
  471. X    {
  472. X        XmcdNdisplayBlinkOffInterval, XmcdCDisplayBlinkOffInterval,
  473. X        XmRInt, sizeof(int),
  474. X        XtOffsetOf(AppData, blinkoff_interval), XmRImmediate,
  475. X        (XtPointer) BLINKOFF_INTERVAL,
  476. X    },
  477. X    {
  478. X        XmcdNdriveVendorCode, XmcdCDriveVendorCode,
  479. X        XmRInt, sizeof(int),
  480. X        XtOffsetOf(AppData, vendor_code), XmRImmediate,
  481. X        (XtPointer) VENDOR_CODE,
  482. X    },
  483. X    {
  484. X        XmcdNplayAudio10Support, XmcdCPlayAudio10Support,
  485. X        XmRBoolean, sizeof(Boolean),
  486. X        XtOffsetOf(AppData, play10_supp), XmRImmediate,
  487. X        (XtPointer) PLAY10_SUPP,
  488. X    },
  489. X    {
  490. X        XmcdNplayAudio12Support, XmcdCPlayAudio12Support,
  491. X        XmRBoolean, sizeof(Boolean),
  492. X        XtOffsetOf(AppData, play12_supp), XmRImmediate,
  493. X        (XtPointer) PLAY12_SUPP,
  494. X    },
  495. X    {
  496. X        XmcdNplayAudioMSFSupport, XmcdCPlayAudioMSFSupport,
  497. X        XmRBoolean, sizeof(Boolean),
  498. X        XtOffsetOf(AppData, playmsf_supp), XmRImmediate,
  499. X        (XtPointer) PLAYMSF_SUPP,
  500. X    },
  501. X    {
  502. X        XmcdNplayAudioTISupport, XmcdCPlayAudioTISupport,
  503. X        XmRBoolean, sizeof(Boolean),
  504. X        XtOffsetOf(AppData, playti_supp), XmRImmediate,
  505. X        (XtPointer) PLAYTI_SUPP,
  506. X    },
  507. X    {
  508. X        XmcdNloadSupport, XmcdCLoadSupport,
  509. X        XmRBoolean, sizeof(Boolean),
  510. X        XtOffsetOf(AppData, load_supp), XmRImmediate,
  511. X        (XtPointer) LOAD_SUPP,
  512. X    },
  513. X    {
  514. X        XmcdNejectSupport, XmcdCEjectSupport,
  515. X        XmRBoolean, sizeof(Boolean),
  516. X        XtOffsetOf(AppData, eject_supp), XmRImmediate,
  517. X        (XtPointer) EJECT_SUPP,
  518. X    },
  519. X    {
  520. X        XmcdNvolumeControlSupport, XmcdCVolumeControlSupport,
  521. X        XmRBoolean, sizeof(Boolean),
  522. X        XtOffsetOf(AppData, mselvol_supp), XmRImmediate,
  523. X        (XtPointer) MSELVOL_SUPP,
  524. X    },
  525. X    {
  526. X        XmcdNvolumeControlSetDBD, XmcdCVolumeControlSetDBD,
  527. X        XmRBoolean, sizeof(Boolean),
  528. X        XtOffsetOf(AppData, mselvol_dbd), XmRImmediate,
  529. X        (XtPointer) MSELVOL_DBD,
  530. X    },
  531. X    {
  532. X        XmcdNscsiAudioVolumeBase, XmcdCScsiAudioVolumeBase,
  533. X        XmRInt, sizeof(int),
  534. X        XtOffsetOf(AppData, base_scsivol), XmRImmediate,
  535. X        (XtPointer) BASE_SCSIVOL,
  536. X    },
  537. X    {
  538. X        XmcdNvolumeControlTaper, XmcdCVolumeControlTaper,
  539. X        XmRInt, sizeof(int),
  540. X        XtOffsetOf(AppData, vol_taper), XmRImmediate,
  541. X        (XtPointer) VOL_TAPER,
  542. X    },
  543. X    {
  544. X        XmcdNpauseResumeSupport, XmcdCPauseResumeSupport,
  545. X        XmRBoolean, sizeof(Boolean),
  546. X        XtOffsetOf(AppData, pause_supp), XmRImmediate,
  547. X        (XtPointer) PAUSE_SUPP,
  548. X    },
  549. X    {
  550. X        XmcdNcaddyLockSupport, XmcdCCaddyLockSupport,
  551. X        XmRBoolean, sizeof(Boolean),
  552. X        XtOffsetOf(AppData, caddylock_supp), XmRImmediate,
  553. X        (XtPointer) CADDYLOCK_SUPP,
  554. X    },
  555. X    {
  556. X        XmcdNmainWindowTitle, XmcdCMainWindowTitle,
  557. X        XmRString, sizeof(String),
  558. X        XtOffsetOf(AppData, main_title), XmRImmediate,
  559. X        (XtPointer) MAIN_TITLE,
  560. X    },
  561. X    {
  562. X        XmcdNdbModeMsg, XmcdCDbModeMsg,
  563. X        XmRString, sizeof(String),
  564. X        XtOffsetOf(AppData, str_dbmode), XmRImmediate,
  565. X        (XtPointer) STR_DBMODE,
  566. X    },
  567. X    {
  568. X        XmcdNprogModeMsg, XmcdCProgModeMsg,
  569. X        XmRString, sizeof(String),
  570. X        XtOffsetOf(AppData, str_progmode), XmRImmediate,
  571. X        (XtPointer) STR_PROGMODE,
  572. X    },
  573. X    {
  574. X        XmcdNelapseMsg, XmcdCElapseMsg,
  575. X        XmRString, sizeof(String),
  576. X        XtOffsetOf(AppData, str_elapse), XmRImmediate,
  577. X        (XtPointer) STR_ELAPSE,
  578. X    },
  579. X    {
  580. X        XmcdNremainTrackMsg, XmcdCRemainTrackMsg,
  581. X        XmRString, sizeof(String),
  582. X        XtOffsetOf(AppData, str_remaintrk), XmRImmediate,
  583. X        (XtPointer) STR_REMAIN_TRK,
  584. X    },
  585. X    {
  586. X        XmcdNremainDiscMsg, XmcdCRemainDiscMsg,
  587. X        XmRString, sizeof(String),
  588. X        XtOffsetOf(AppData, str_remaindisc), XmRImmediate,
  589. X        (XtPointer) STR_REMAIN_DISC,
  590. X    },
  591. X    {
  592. X        XmcdNplayMsg, XmcdCPlayMsg,
  593. X        XmRString, sizeof(String),
  594. X        XtOffsetOf(AppData, str_play), XmRImmediate,
  595. X        (XtPointer) STR_PLAY,
  596. X    },
  597. X    {
  598. X        XmcdNpauseMsg, XmcdCPauseMsg,
  599. X        XmRString, sizeof(String),
  600. X        XtOffsetOf(AppData, str_pause), XmRImmediate,
  601. X        (XtPointer) STR_PAUSE,
  602. X    },
  603. X    {
  604. X        XmcdNreadyMsg, XmcdCReadyMsg,
  605. X        XmRString, sizeof(String),
  606. X        XtOffsetOf(AppData, str_ready), XmRImmediate,
  607. X        (XtPointer) STR_READY,
  608. X    },
  609. X    {
  610. X        XmcdNsampleMsg, XmcdCSampleMsg,
  611. X        XmRString, sizeof(String),
  612. X        XtOffsetOf(AppData, str_sample), XmRImmediate,
  613. X        (XtPointer) STR_SAMPLE,
  614. X    },
  615. X    {
  616. X        XmcdNusageMsg, XmcdCUsageMsg,
  617. X        XmRString, sizeof(String),
  618. X        XtOffsetOf(AppData, str_usage), XmRImmediate,
  619. X        (XtPointer) STR_USAGE,
  620. X    },
  621. X    {
  622. X        XmcdNbadOptsMsg, XmcdCBadOptsMsg,
  623. X        XmRString, sizeof(String),
  624. X        XtOffsetOf(AppData, str_badopts), XmRImmediate,
  625. X        (XtPointer) STR_BADOPTS,
  626. X    },
  627. X    {
  628. X        XmcdNnoDiscMsg, XmcdCNoDiscMsg,
  629. X        XmRString, sizeof(String),
  630. X        XtOffsetOf(AppData, str_nodisc), XmRImmediate,
  631. X        (XtPointer) STR_NODISC,
  632. X    },
  633. X    {
  634. X        XmcdNdevBusyMsg, XmcdCDevBusyMsg,
  635. X        XmRString, sizeof(String),
  636. X        XtOffsetOf(AppData, str_busy), XmRImmediate,
  637. X        (XtPointer) STR_BUSY,
  638. X    },
  639. X    {
  640. X        XmcdNdataMsg, XmcdCDataMsg,
  641. X        XmRString, sizeof(String),
  642. X        XtOffsetOf(AppData, str_data), XmRImmediate,
  643. X        (XtPointer) STR_DATA,
  644. X    },
  645. X    {
  646. X        XmcdNwarningMsg, XmcdCWarningMsg,
  647. X        XmRString, sizeof(String),
  648. X        XtOffsetOf(AppData, str_warning), XmRImmediate,
  649. X        (XtPointer) STR_WARNING,
  650. X    },
  651. X    {
  652. X        XmcdNfatalMsg, XmcdCFatalMsg,
  653. X        XmRString, sizeof(String),
  654. X        XtOffsetOf(AppData, str_fatal), XmRImmediate,
  655. X        (XtPointer) STR_FATAL,
  656. X    },
  657. X    {
  658. X        XmcdNconfirmMsg, XmcdCConfirmMsg,
  659. X        XmRString, sizeof(String),
  660. X        XtOffsetOf(AppData, str_confirm), XmRImmediate,
  661. X        (XtPointer) STR_CONFIRM,
  662. X    },
  663. X    {
  664. X        XmcdNinfoMsg, XmcdCInfoMsg,
  665. X        XmRString, sizeof(String),
  666. X        XtOffsetOf(AppData, str_info), XmRImmediate,
  667. X        (XtPointer) STR_INFO,
  668. X    },
  669. X    {
  670. X        XmcdNaboutMsg, XmcdCAboutMsg,
  671. X        XmRString, sizeof(String),
  672. X        XtOffsetOf(AppData, str_about), XmRImmediate,
  673. X        (XtPointer) STR_ABOUT,
  674. X    },
  675. X    {
  676. X        XmcdNquitMsg, XmcdCQuitMsg,
  677. X        XmRString, sizeof(String),
  678. X        XtOffsetOf(AppData, str_quit), XmRImmediate,
  679. X        (XtPointer) STR_QUIT,
  680. X    },
  681. X    {
  682. X        XmcdNnoMemMsg, XmcdCNoMemMsg,
  683. X        XmRString, sizeof(String),
  684. X        XtOffsetOf(AppData, str_nomemory), XmRImmediate,
  685. X        (XtPointer) STR_NOMEMORY,
  686. X    },
  687. X    {
  688. X        XmcdNnoHelpMsg, XmcdCNoHelpMsg,
  689. X        XmRString, sizeof(String),
  690. X        XtOffsetOf(AppData, str_nohelp), XmRImmediate,
  691. X        (XtPointer) STR_NOHELP,
  692. X    },
  693. X    {
  694. X        XmcdNnoLinkMsg, XmcdCNoLinkMsg,
  695. X        XmRString, sizeof(String),
  696. X        XtOffsetOf(AppData, str_nolink), XmRImmediate,
  697. X        (XtPointer) STR_NOLINK,
  698. X    },
  699. X    {
  700. X        XmcdNnoDbMsg, XmcdCNoDbMsg,
  701. X        XmRString, sizeof(String),
  702. X        XtOffsetOf(AppData, str_nodb), XmRImmediate,
  703. X        (XtPointer) STR_NODB,
  704. X    },
  705. X    {
  706. X        XmcdNnotRomMsg, XmcdCNotRomMsg,
  707. X        XmRString, sizeof(String),
  708. X        XtOffsetOf(AppData, str_notrom), XmRImmediate,
  709. X        (XtPointer) STR_NOTROM,
  710. X    },
  711. X    {
  712. X        XmcdNnotScsi2Msg, XmcdCNotScsi2Msg,
  713. X        XmRString, sizeof(String),
  714. X        XtOffsetOf(AppData, str_notscsi2), XmRImmediate,
  715. X        (XtPointer) STR_NOTSCSI2,
  716. X    },
  717. X    {
  718. X        XmcdNmodeErrMsg, XmcdCModeErrMsg,
  719. X        XmRString, sizeof(String),
  720. X        XtOffsetOf(AppData, str_moderr), XmRImmediate,
  721. X        (XtPointer) STR_MODERR,
  722. X    },
  723. X    {
  724. X        XmcdNstatErrMsg, XmcdCStatErrMsg,
  725. X        XmRString, sizeof(String),
  726. X        XtOffsetOf(AppData, str_staterr), XmRImmediate,
  727. X        (XtPointer) STR_STATERR,
  728. X    },
  729. X    {
  730. X        XmcdNnodeErrMsg, XmcdCNodeErrMsg,
  731. X        XmRString, sizeof(String),
  732. X        XtOffsetOf(AppData, str_noderr), XmRImmediate,
  733. X        (XtPointer) STR_NODERR,
  734. X    },
  735. X    {
  736. X        XmcdNseqFmtErrMsg, XmcdCSeqFmtErrMsg,
  737. X        XmRString, sizeof(String),
  738. X        XtOffsetOf(AppData, str_seqfmterr), XmRImmediate,
  739. X        (XtPointer) STR_SEQFMTERR,
  740. X    },
  741. X    {
  742. X        XmcdNdbdirsErrMsg, XmcdCDbdirsErrMsg,
  743. X        XmRString, sizeof(String),
  744. X        XtOffsetOf(AppData, str_dbdirserr), XmRImmediate,
  745. X        (XtPointer) STR_DBDIRSERR,
  746. X    },
  747. X    {
  748. X        XmcdNrecovErrMsg, XmcdCRecovErrMsg,
  749. X        XmRString, sizeof(String),
  750. X        XtOffsetOf(AppData, str_recoverr), XmRImmediate,
  751. X        (XtPointer) STR_RECOVERR,
  752. X    },
  753. X    {
  754. X        XmcdNmaxErrMsg, XmcdCMaxErrMsg,
  755. X        XmRString, sizeof(String),
  756. X        XtOffsetOf(AppData, str_maxerr), XmRImmediate,
  757. X        (XtPointer) STR_MAXERR,
  758. X    },
  759. X    {
  760. X        XmcdNsavErrForkMsg, XmcdCSavErrForkMsg,
  761. X        XmRString, sizeof(String),
  762. X        XtOffsetOf(AppData, str_saverr_fork), XmRImmediate,
  763. X        (XtPointer) STR_SAVERR_FORK,
  764. X    },
  765. X    {
  766. X        XmcdNsavErrSuidMsg, XmcdCSavErrSuidMsg,
  767. X        XmRString, sizeof(String),
  768. X        XtOffsetOf(AppData, str_saverr_suid), XmRImmediate,
  769. X        (XtPointer) STR_SAVERR_SUID,
  770. X    },
  771. X    {
  772. X        XmcdNsavErrOpenMsg, XmcdCSavErrOpenMsg,
  773. X        XmRString, sizeof(String),
  774. X        XtOffsetOf(AppData, str_saverr_open), XmRImmediate,
  775. X        (XtPointer) STR_SAVERR_OPEN,
  776. X    },
  777. X    {
  778. X        XmcdNsavErrKilledMsg, XmcdCSavErrKilledMsg,
  779. X        XmRString, sizeof(String),
  780. X        XtOffsetOf(AppData, str_saverr_killed), XmRImmediate,
  781. X        (XtPointer) STR_SAVERR_KILLED,
  782. X    },
  783. X    {
  784. X        XmcdNlnkErrForkMsg, XmcdCLnkErrForkMsg,
  785. X        XmRString, sizeof(String),
  786. X        XtOffsetOf(AppData, str_lnkerr_fork), XmRImmediate,
  787. X        (XtPointer) STR_LNKERR_FORK,
  788. X    },
  789. X    {
  790. X        XmcdNlnkErrSuidMsg, XmcdCLnkErrSuidMsg,
  791. X        XmRString, sizeof(String),
  792. X        XtOffsetOf(AppData, str_lnkerr_suid), XmRImmediate,
  793. X        (XtPointer) STR_LNKERR_SUID,
  794. X    },
  795. X    {
  796. X        XmcdNlnkErrLinkMsg, XmcdCLnkErrLinkMsg,
  797. X        XmRString, sizeof(String),
  798. X        XtOffsetOf(AppData, str_lnkerr_link), XmRImmediate,
  799. X        (XtPointer) STR_LNKERR_LINK,
  800. X    },
  801. X    {
  802. X        XmcdNlnkErrKilledMsg, XmcdCLnkErrKilledMsg,
  803. X        XmRString, sizeof(String),
  804. X        XtOffsetOf(AppData, str_lnkerr_killed), XmRImmediate,
  805. X        (XtPointer) STR_LNKERR_KILLED,
  806. X    },
  807. X    {
  808. X        XmcdNbuttonLabelKey, XmcdCButtonLabelKey,
  809. X        XmRString, sizeof(String),
  810. X        XtOffsetOf(AppData, btnlbl_key), XmRImmediate,
  811. X        (XtPointer) BTNLBL_KEY,
  812. X    },
  813. X    {
  814. X        XmcdNlockKey, XmcdCLockKey,
  815. X        XmRString, sizeof(String),
  816. X        XtOffsetOf(AppData, lock_key), XmRImmediate,
  817. X        (XtPointer) LOCK_KEY,
  818. X    },
  819. X    {
  820. X        XmcdNrepeatKey, XmcdCRepeatKey,
  821. X        XmRString, sizeof(String),
  822. X        XtOffsetOf(AppData, repeat_key), XmRImmediate,
  823. X        (XtPointer) REPEAT_KEY,
  824. X    },
  825. X    {
  826. X        XmcdNshuffleKey, XmcdCShuffleKey,
  827. X        XmRString, sizeof(String),
  828. X        XtOffsetOf(AppData, shuffle_key), XmRImmediate,
  829. X        (XtPointer) SHUFFLE_KEY,
  830. X    },
  831. X    {
  832. X        XmcdNejectKey, XmcdCEjectKey,
  833. X        XmRString, sizeof(String),
  834. X        XtOffsetOf(AppData, eject_key), XmRImmediate,
  835. X        (XtPointer) EJECT_KEY,
  836. X    },
  837. X    {
  838. X        XmcdNpowerOffKey, XmcdCPowerOffKey,
  839. X        XmRString, sizeof(String),
  840. X        XtOffsetOf(AppData, poweroff_key), XmRImmediate,
  841. X        (XtPointer) POWEROFF_KEY,
  842. X    },
  843. X    {
  844. X        XmcdNdbprogKey, XmcdCDbprogKey,
  845. X        XmRString, sizeof(String),
  846. X        XtOffsetOf(AppData, dbprog_key), XmRImmediate,
  847. X        (XtPointer) DBPROG_KEY,
  848. X    },
  849. X    {
  850. X        XmcdNhelpKey, XmcdCHelpKey,
  851. X        XmRString, sizeof(String),
  852. X        XtOffsetOf(AppData, help_key), XmRImmediate,
  853. X        (XtPointer) HELP_KEY,
  854. X    },
  855. X    {
  856. X        XmcdNtimeKey, XmcdCTimeKey,
  857. X        XmRString, sizeof(String),
  858. X        XtOffsetOf(AppData, time_key), XmRImmediate,
  859. X        (XtPointer) TIME_KEY,
  860. X    },
  861. X    {
  862. X        XmcdNabKey, XmcdCAbKey,
  863. X        XmRString, sizeof(String),
  864. X        XtOffsetOf(AppData, ab_key), XmRImmediate,
  865. X        (XtPointer) AB_KEY,
  866. X    },
  867. X    {
  868. X        XmcdNsampleKey, XmcdCSampleKey,
  869. X        XmRString, sizeof(String),
  870. X        XtOffsetOf(AppData, sample_key), XmRImmediate,
  871. X        (XtPointer) SAMPLE_KEY,
  872. X    },
  873. X    {
  874. X        XmcdNkeypadKey, XmcdCKeypadKey,
  875. X        XmRString, sizeof(String),
  876. X        XtOffsetOf(AppData, keypad_key), XmRImmediate,
  877. X        (XtPointer) KEYPAD_KEY,
  878. X    },
  879. X    {
  880. X        XmcdNplayPauseKey, XmcdCPlayPauseKey,
  881. X        XmRString, sizeof(String),
  882. X        XtOffsetOf(AppData, playpause_key), XmRImmediate,
  883. X        (XtPointer) PLAYPAUSE_KEY,
  884. X    },
  885. X    {
  886. X        XmcdNstopKey, XmcdCStopKey,
  887. X        XmRString, sizeof(String),
  888. X        XtOffsetOf(AppData, stop_key), XmRImmediate,
  889. X        (XtPointer) STOP_KEY,
  890. X    },
  891. X    {
  892. X        XmcdNprevTrackKey, XmcdCPrevTrackKey,
  893. X        XmRString, sizeof(String),
  894. X        XtOffsetOf(AppData, prevtrk_key), XmRImmediate,
  895. X        (XtPointer) PREVTRK_KEY,
  896. X    },
  897. X    {
  898. X        XmcdNnextTrackKey, XmcdCNextTrackKey,
  899. X        XmRString, sizeof(String),
  900. X        XtOffsetOf(AppData, nexttrk_key), XmRImmediate,
  901. X        (XtPointer) NEXTTRK_KEY,
  902. X    },
  903. X    {
  904. X        XmcdNprevIndexKey, XmcdCPrevIndexKey,
  905. X        XmRString, sizeof(String),
  906. X        XtOffsetOf(AppData, previdx_key), XmRImmediate,
  907. X        (XtPointer) PREVIDX_KEY,
  908. X    },
  909. X    {
  910. X        XmcdNnextIndexKey, XmcdCNextIndexKey,
  911. X        XmRString, sizeof(String),
  912. X        XtOffsetOf(AppData, nextidx_key), XmRImmediate,
  913. X        (XtPointer) NEXTIDX_KEY,
  914. X    },
  915. X    {
  916. X        XmcdNrewKey, XmcdCRewKey,
  917. X        XmRString, sizeof(String),
  918. X        XtOffsetOf(AppData, rew_key), XmRImmediate,
  919. X        (XtPointer) REW_KEY,
  920. X    },
  921. X    {
  922. X        XmcdNffKey, XmcdCFfKey,
  923. X        XmRString, sizeof(String),
  924. X        XtOffsetOf(AppData, ff_key), XmRImmediate,
  925. X        (XtPointer) FF_KEY,
  926. X    },
  927. X    {
  928. X        XmcdNkeypadNumKey0, XmcdCKeypadNumKey0,
  929. X        XmRString, sizeof(String),
  930. X        XtOffsetOf(AppData, keypad0_key), XmRImmediate,
  931. X        (XtPointer) KEYPAD0_KEY,
  932. X    },
  933. X    {
  934. X        XmcdNkeypadNumKey1, XmcdCKeypadNumKey1,
  935. X        XmRString, sizeof(String),
  936. X        XtOffsetOf(AppData, keypad1_key), XmRImmediate,
  937. X        (XtPointer) KEYPAD1_KEY,
  938. X    },
  939. X    {
  940. X        XmcdNkeypadNumKey2, XmcdCKeypadNumKey2,
  941. X        XmRString, sizeof(String),
  942. X        XtOffsetOf(AppData, keypad2_key), XmRImmediate,
  943. X        (XtPointer) KEYPAD2_KEY,
  944. X    },
  945. X    {
  946. X        XmcdNkeypadNumKey3, XmcdCKeypadNumKey3,
  947. X        XmRString, sizeof(String),
  948. X        XtOffsetOf(AppData, keypad3_key), XmRImmediate,
  949. X        (XtPointer) KEYPAD3_KEY,
  950. X    },
  951. X    {
  952. X        XmcdNkeypadNumKey4, XmcdCKeypadNumKey4,
  953. X        XmRString, sizeof(String),
  954. X        XtOffsetOf(AppData, keypad4_key), XmRImmediate,
  955. X        (XtPointer) KEYPAD4_KEY,
  956. X    },
  957. X    {
  958. X        XmcdNkeypadNumKey5, XmcdCKeypadNumKey5,
  959. X        XmRString, sizeof(String),
  960. X        XtOffsetOf(AppData, keypad5_key), XmRImmediate,
  961. X        (XtPointer) KEYPAD5_KEY,
  962. X    },
  963. X    {
  964. X        XmcdNkeypadNumKey6, XmcdCKeypadNumKey6,
  965. X        XmRString, sizeof(String),
  966. X        XtOffsetOf(AppData, keypad6_key), XmRImmediate,
  967. X        (XtPointer) KEYPAD6_KEY,
  968. X    },
  969. X    {
  970. X        XmcdNkeypadNumKey7, XmcdCKeypadNumKey7,
  971. X        XmRString, sizeof(String),
  972. X        XtOffsetOf(AppData, keypad7_key), XmRImmediate,
  973. X        (XtPointer) KEYPAD7_KEY,
  974. X    },
  975. X    {
  976. X        XmcdNkeypadNumKey8, XmcdCKeypadNumKey8,
  977. X        XmRString, sizeof(String),
  978. X        XtOffsetOf(AppData, keypad8_key), XmRImmediate,
  979. X        (XtPointer) KEYPAD8_KEY,
  980. X    },
  981. X    {
  982. X        XmcdNkeypadNumKey9, XmcdCKeypadNumKey9,
  983. X        XmRString, sizeof(String),
  984. X        XtOffsetOf(AppData, keypad9_key), XmRImmediate,
  985. X        (XtPointer) KEYPAD9_KEY,
  986. X    },
  987. X    {
  988. X        XmcdNkeypadEnterKey, XmcdCKeypadEnterKey,
  989. X        XmRString, sizeof(String),
  990. X        XtOffsetOf(AppData, keypadenter_key), XmRImmediate,
  991. X        (XtPointer) KEYPADENTER_KEY,
  992. X    },
  993. X    {
  994. X        XmcdNkeypadClearKey, XmcdCKeypadClearKey,
  995. X        XmRString, sizeof(String),
  996. X        XtOffsetOf(AppData, keypadclear_key), XmRImmediate,
  997. X        (XtPointer) KEYPADCLEAR_KEY,
  998. X    },
  999. X    {
  1000. X        XmcdNkeypadCancelKey, XmcdCKeypadCancelKey,
  1001. X        XmRString, sizeof(String),
  1002. X        XtOffsetOf(AppData, keypadcancel_key), XmRImmediate,
  1003. X        (XtPointer) KEYPADCANCEL_KEY,
  1004. X    },
  1005. X};
  1006. X
  1007. X
  1008. XSTATIC XrmOptionDescRec    options[] = {
  1009. X    { "-dev",    ".device",    XrmoptionSepArg, NULL, },
  1010. X    { "-dbdir",    ".dbdir",    XrmoptionSepArg, NULL, },
  1011. X};
  1012. X
  1013. X
  1014. XSTATIC String        fallbacks[] = {
  1015. X    "*mainForm.width: 390",
  1016. X    "*mainForm.height: 140",
  1017. X    "*keypadForm.width: 150",
  1018. X    "*keypadForm.height: 225",
  1019. X    "*dbprogForm.width: 450",
  1020. X    "*dbprogForm.height: 455",
  1021. X    "*extDiscInfoForm.width: 400",
  1022. X    "*extDiscInfoForm.height: 350",
  1023. X    "*extTrackInfoForm.width: 400",
  1024. X    "*extTrackInfoForm.height: 350",
  1025. X    "*helpForm.width: 400",
  1026. X    "*helpForm.height: 350",
  1027. X    "*dirSelectForm.width: 250",
  1028. X    "*dirSelectForm.height: 230",
  1029. X    "*linkSelectForm.width: 350",
  1030. X    "*linkSelectForm.height: 230",
  1031. X    "*mainForm.XmPushButton.labelType: PIXMAP",
  1032. X    "*mainForm.XmPushButton.fontList: 6x10",
  1033. X    "*mainForm.checkBoxFrame*fontList: 6x10",
  1034. X    "*trackIndicator.fontList: -*-helvetica-*-o-*--*-240-*",
  1035. X    "*indexIndicator.fontList: -*-helvetica-*-o-*--*-140-*",
  1036. X    "*timeIndicator.fontList: -*-helvetica-*-o-*--*-240-*",
  1037. X    "*dbModeIndicator.fontList: -*-times-*-r-*--*-120-*",
  1038. X    "*progModeIndicator.fontList: -*-times-*-r-*--*-120-*",
  1039. X    "*timeModeIndicator.fontList: -*-times-*-r-*--*-120-*",
  1040. X    "*playModeIndicator.fontList: -*-times-*-r-*--*-120-*",
  1041. X    "*keypadForm*keypadLabel.fontList: fixed",
  1042. X    "*keypadForm*keypadIndicator.fontList: -*-helvetica-*-o-*--*-140-*",
  1043. X    "*keypadForm*keypadCancelButton.fontList: fixed",
  1044. X    "*keypadForm*keypadClearButton.fontList: fixed",
  1045. X    "*keypadForm*fontList: -*-helvetica-bold-r-*--*-120-*",
  1046. X    "*dirSelectList.fontList: -*-helvetica-medium-r-*--*-120-*",
  1047. X    "*aboutPopup*fontList: -*-times-bold-i-*--*-240-*=chset1, -*-times-bold-i-*--*-120-*=chset2, -*-fixed-medium-r-*--*-100-*=chset3, fixed",
  1048. X    "*XmList.fontList: -*-helvetica-medium-r-*--*-120-*=chset1, -*-helvetica-bold-r-*--*-120-*=chset2, fixed",
  1049. X    "*XmText.fontList: -*-helvetica-medium-r-*--*-120-*",
  1050. X    "*XmScale*fontList: 6x10",
  1051. X    "*fontlist: fixed",
  1052. X    "*checkBox*button_0.labelString: disp",
  1053. X    "*checkBox*button_1.labelString: lock",
  1054. X    "*checkBox*button_2.labelString: rept",
  1055. X    "*checkBox*button_3.labelString: shuf",
  1056. X    "*ejectButton.labelString: eject",
  1057. X    "*powerOffButton.labelString: quit",
  1058. X    "*dbprogButton.labelString: cddb\nprog",
  1059. X    "*helpButton.labelString: help",
  1060. X    "*timeButton.labelString: time",
  1061. X    "*abButton.labelString: a->b",
  1062. X    "*sampleButton.labelString: samp",
  1063. X    "*keypadButton.labelString: kpad",
  1064. X    "*playPauseButton.labelString: play / pause",
  1065. X    "*stopButton.labelString: stop",
  1066. X    "*prevTrackButton.labelString: < track",
  1067. X    "*nextTrackButton.labelString: track >",
  1068. X    "*prevIndexButton.labelString: < index",
  1069. X    "*nextIndexButton.labelString: index >",
  1070. X    "*rewButton.labelString: << rew",
  1071. X    "*ffButton.labelString: ff >>",
  1072. X    "*keypadLabel.labelString: Direct track access",
  1073. X    "*keypadNumButton0.labelString: 0",
  1074. X    "*keypadNumButton1.labelString: 1",
  1075. X    "*keypadNumButton2.labelString: 2",
  1076. X    "*keypadNumButton3.labelString: 3",
  1077. X    "*keypadNumButton4.labelString: 4",
  1078. X    "*keypadNumButton5.labelString: 5",
  1079. X    "*keypadNumButton6.labelString: 6",
  1080. X    "*keypadNumButton7.labelString: 7",
  1081. X    "*keypadNumButton8.labelString: 8",
  1082. X    "*keypadNumButton9.labelString: 9",
  1083. X    "*keypadEnterButton.labelString: Enter",
  1084. X    "*keypadCancelButton.labelString: Cancel",
  1085. X    "*keypadClearButton.labelString: Clear",
  1086. X    "*aboutButton.labelString: About...",
  1087. X    "*discTitleLabel.labelString: Disc artist / Title",
  1088. X    "*discLabel.labelString: Disc",
  1089. X    "*extDiscInfoButton.labelString: Ext Info",
  1090. X    "*trackListLabel.labelString: Track / Time / Title",
  1091. X    "*timeSelectLabel.labelString: Time",
  1092. X    "*timeSelectBox*button_0.labelString: total",
  1093. X    "*timeSelectBox*button_1.labelString: track",
  1094. X    "*trackTitleLabel.labelString: Track title edit",
  1095. X    "*trackLabel.labelString: Track",
  1096. X    "*extTrackInfoButton.labelString: Ext Info",
  1097. X    "*programLabel.labelString: Trk Prog",
  1098. X    "*addProgramButton.labelString: Add to",
  1099. X    "*clearProgramButton.labelString: Clear",
  1100. X    "*playProgramButton.labelString: Play",
  1101. X    "*programSequenceLabel.labelString: Program sequence",
  1102. X    "*saveDatabaseButton.labelString: Save",
  1103. X    "*loadDatabaseButton.labelString: Load",
  1104. X    "*linkDatabaseButton.labelString: Link",
  1105. X    "*dbprogCancelButton.labelString: Cancel",
  1106. X    "*helpButton.labelString: Help",
  1107. X    "*extDiscInfoOkButton.labelString: OK",
  1108. X    "*extDiscInfoClearButton.labelString: Clear",
  1109. X    "*extDiscInfoCancelButton.labelString: Cancel",
  1110. X    "*extTrackInfoOkButton.labelString: OK",
  1111. X    "*extTrackInfoClearButton.labelString: Clear",
  1112. X    "*extTrackInfoCancelButton.labelString: Cancel",
  1113. X    "*helpOkButton.labelString: OK",
  1114. X    "*dirSelectLabel.labelString: Database Directory Selection",
  1115. X    "*dirSelectOkButton.labelString: OK",
  1116. X    "*dirSelectCancelButton.labelString: Cancel",
  1117. X    "*trackIndicator.foreground: white",
  1118. X    "*trackIndicator.background: black",
  1119. X    "*indexIndicator.foreground: white",
  1120. X    "*indexIndicator.background: black",
  1121. X    "*timeIndicator.foreground: white",
  1122. X    "*timeIndicator.background: black",
  1123. X    "*dbModeIndicator.foreground: white",
  1124. X    "*dbModeIndicator.background: black",
  1125. X    "*progModeIndicator.foreground: white",
  1126. X    "*progModeIndicator.background: black",
  1127. X    "*timeModeIndicator.foreground: white",
  1128. X    "*timeModeIndicator.background: black",
  1129. X    "*playModeIndicator.foreground: white",
  1130. X    "*playModeIndicator.background: black",
  1131. X    "*keypadIndicator.foreground: white",
  1132. X    "*keypadIndicator.background: black",
  1133. X    "*XmLabel.foreground: black",
  1134. X    "*XmLabel.background: white",
  1135. X    "*XmLabel.borderWidth: 0",
  1136. X    "*foreground: black",
  1137. X    "*background: white",
  1138. X    "*title: xmcd - Can't access X defaults file",
  1139. X    NULL,
  1140. X};
  1141. X
  1142. X#endif    /* __RESOURCE_H__ */
  1143. X
  1144. END_OF_FILE
  1145. if test 32884 -ne `wc -c <'resource.h'`; then
  1146.     echo shar: \"'resource.h'\" unpacked with wrong size!
  1147. fi
  1148. # end of 'resource.h'
  1149. fi
  1150. if test -f 'util.h' -a "${1}" != "-c" ; then 
  1151.   echo shar: Will not clobber existing file \"'util.h'\"
  1152. else
  1153. echo shar: Extracting \"'util.h'\" \(1713 characters\)
  1154. sed "s/^X//" >'util.h' <<'END_OF_FILE'
  1155. X/*
  1156. X *   xmcd - Motif(tm) CD Audio Player
  1157. X *
  1158. X *   Copyright (C) 1993  Ti Kan
  1159. X *   E-mail: ti@amb.org
  1160. X *
  1161. X *   This program is free software; you can redistribute it and/or modify
  1162. X *   it under the terms of the GNU General Public License as published by
  1163. X *   the Free Software Foundation; either version 2 of the License, or
  1164. X *   (at your option) any later version.
  1165. X *
  1166. X *   This program is distributed in the hope that it will be useful,
  1167. X *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  1168. X *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1169. X *   GNU General Public License for more details.
  1170. X *
  1171. X *   You should have received a copy of the GNU General Public License
  1172. X *   along with this program; if not, write to the Free Software
  1173. X *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1174. X *
  1175. X */
  1176. X#ifndef __UTIL_H__
  1177. X#define __UTIL_H__
  1178. X
  1179. X#ifndef LINT
  1180. Xstatic char *_util_h_ident_ = "@(#)util.h    1.28 93/09/28";
  1181. X#endif
  1182. X
  1183. X
  1184. X/* Utility macros */
  1185. X#define sqr(x)    ((x) * (x))        /* Compute the square of a number */
  1186. X
  1187. X
  1188. X/* Public function prototypes */
  1189. Xvoid        usage(int, char **);
  1190. Xsword32_t    ltobcd(sword32_t);
  1191. Xsword32_t    bcdtol(sword32_t);
  1192. Xbool_t        stob(char *);
  1193. Xchar        *basename(char *);
  1194. Xchar        *dirname(char *);
  1195. Xchar        *homedir(uid_t);
  1196. Xint        isqrt(int);
  1197. Xvoid        blktomsf(word32_t, byte_t *, byte_t *, byte_t *, word32_t);
  1198. Xvoid        msftoblk(byte_t, byte_t, byte_t, word32_t *, word32_t);
  1199. Xword16_t    bswap16(word16_t);
  1200. Xword32_t    bswap24(word32_t);
  1201. Xword32_t    bswap32(word32_t);
  1202. Xword16_t    lswap16(word16_t);
  1203. Xword32_t    lswap24(word32_t);
  1204. Xword32_t    lswap32(word32_t);
  1205. X
  1206. X#ifdef DEBUG
  1207. XFILE        *dbfile_open(char *);
  1208. Xint        dbfile_close(FILE *);
  1209. Xvoid        dbfile_dump(FILE *, char *, byte_t *, int);
  1210. X#endif
  1211. X
  1212. X#endif    /* __UTIL_H__ */
  1213. X
  1214. END_OF_FILE
  1215. if test 1713 -ne `wc -c <'util.h'`; then
  1216.     echo shar: \"'util.h'\" unpacked with wrong size!
  1217. fi
  1218. # end of 'util.h'
  1219. fi
  1220. if test -f 'widget.h' -a "${1}" != "-c" ; then 
  1221.   echo shar: Will not clobber existing file \"'widget.h'\"
  1222. else
  1223. echo shar: Extracting \"'widget.h'\" \(8032 characters\)
  1224. sed "s/^X//" >'widget.h' <<'END_OF_FILE'
  1225. X/*
  1226. X *   xmcd - Motif(tm) CD Audio Player
  1227. X *
  1228. X *   Copyright (C) 1993  Ti Kan
  1229. X *   E-mail: ti@amb.org
  1230. X *
  1231. X *   This program is free software; you can redistribute it and/or modify
  1232. X *   it under the terms of the GNU General Public License as published by
  1233. X *   the Free Software Foundation; either version 2 of the License, or
  1234. X *   (at your option) any later version.
  1235. X *
  1236. X *   This program is distributed in the hope that it will be useful,
  1237. X *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  1238. X *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1239. X *   GNU General Public License for more details.
  1240. X *
  1241. X *   You should have received a copy of the GNU General Public License
  1242. X *   along with this program; if not, write to the Free Software
  1243. X *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1244. X *
  1245. X */
  1246. X#ifndef __WIDGET_H__
  1247. X#define __WIDGET_H__
  1248. X
  1249. X#ifndef LINT
  1250. Xstatic char *_widget_h_ident_ = "@(#)widget.h    1.41 93/09/28";
  1251. X#endif
  1252. X
  1253. X/* Holder for all main window widgets */
  1254. Xtypedef struct {
  1255. X    Widget        toplevel;        /* Top-level */
  1256. X    struct {
  1257. X        Widget    form;            /* Form container */
  1258. X        Widget    chkbox_frm;        /* Frame for Lock toggle */
  1259. X        Widget    check_box;        /* Toggle button checkbox */
  1260. X        Widget    btnlbl_btn;        /* Button label button */
  1261. X        Widget    lock_btn;        /* Caddy lock button */
  1262. X        Widget    repeat_btn;        /* Repeat button */
  1263. X        Widget    shuffle_btn;        /* Shuffle button */
  1264. X        Widget    eject_btn;        /* Eject button */
  1265. X        Widget    poweroff_btn;        /* Power off button */
  1266. X        Widget    track_ind;        /* Track number indicator */
  1267. X        Widget    index_ind;        /* Index number indicator */
  1268. X        Widget    time_ind;        /* Time indicator */
  1269. X        Widget    dbmode_ind;        /* CD database indicator */
  1270. X        Widget    progmode_ind;        /* Program mode indicator */
  1271. X        Widget    timemode_ind;        /* Time mode indicator */
  1272. X        Widget    playmode_ind;        /* Play mode indicator */
  1273. X        Widget    dbprog_btn;        /* CDDB/Program button */
  1274. X        Widget    time_btn;        /* Time display button */
  1275. X        Widget    ab_btn;            /* A->B mode button */
  1276. X        Widget    sample_btn;        /* Sample mode button */
  1277. X        Widget    keypad_btn;        /* Keypad button */
  1278. X        Widget    help_btn;        /* Help button */
  1279. X        Widget    level_scale;        /* Volume control slider */
  1280. X        Widget    playpause_btn;        /* Play/Pause button */
  1281. X        Widget    stop_btn;        /* Stop button */
  1282. X        Widget    prevtrk_btn;        /* Prev Track button */
  1283. X        Widget    nexttrk_btn;        /* Next Track button */
  1284. X        Widget    previdx_btn;        /* Prev Index button */
  1285. X        Widget    nextidx_btn;        /* Next Index button */
  1286. X        Widget    rew_btn;        /* Search REW button */
  1287. X        Widget    ff_btn;            /* Search FF button */
  1288. X    } main;
  1289. X    struct {
  1290. X        Widget    form;            /* Form container */
  1291. X        Widget    keypad_lbl;        /* Keypad label */
  1292. X        Widget    keypad_ind;        /* Keypad indicator */
  1293. X        Widget    num_btn[10];        /* Number keys */
  1294. X        Widget    enter_btn;        /* Enter key */
  1295. X        Widget    keypad_sep;        /* Separator bar */
  1296. X        Widget    cancel_btn;        /* Cancel_btn */
  1297. X        Widget    clear_btn;        /* Clear */
  1298. X    } keypad;
  1299. X    struct {
  1300. X        Widget    form;            /* Form container */
  1301. X        Widget    logo_lbl;        /* Logo label */
  1302. X        Widget    about_btn;        /* About button */
  1303. X        Widget    dtitle_lbl;        /* Disc title label */
  1304. X        Widget    dtitle_txt;        /* Disc title text */
  1305. X        Widget    extd_lbl;        /* Disc ext descr label */
  1306. X        Widget    extd_btn;        /* Disc ext descr button */
  1307. X        Widget    dbprog_sep1;        /* Separator bar */
  1308. X        Widget    trklist_lbl;        /* Track list label */
  1309. X        Widget    trk_list;        /* Track list */
  1310. X        Widget    radio_lbl;        /* Time dpy radio box label */
  1311. X        Widget    radio_frm;        /* Time dpy radio box Frame */
  1312. X        Widget    radio_box;        /* Time dpy radio box */
  1313. X        Widget    tottime_btn;        /* Total time button */
  1314. X        Widget    trktime_btn;        /* Track time button */
  1315. X        Widget    ttitle_lbl;        /* Track title label */
  1316. X        Widget    ttitle_txt;        /* Track title text */
  1317. X        Widget    extt_lbl;        /* Track ext descr label */
  1318. X        Widget    extt_btn;        /* Track ext descr button */
  1319. X        Widget    pgm_lbl;        /* program label */
  1320. X        Widget    addpgm_btn;        /* Add to button */
  1321. X        Widget    clrpgm_btn;        /* Clear button */
  1322. X        Widget    playpgm_btn;        /* Play program button */
  1323. X        Widget    pgmseq_lbl;        /* Program sequence label */
  1324. X        Widget    pgmseq_txt;        /* Program sequence text */
  1325. X        Widget    dbprog_sep2;        /* Separator bar */
  1326. X        Widget    savedb_btn;        /* Save to database button */
  1327. X        Widget    loaddb_btn;        /* Load from database button */
  1328. X        Widget    linkdb_btn;        /* Link database entry button */
  1329. X        Widget    cancel_btn;        /* Cancel button */
  1330. X    } dbprog;
  1331. X    struct {
  1332. X        Widget    form;            /* Form container */
  1333. X        Widget    disc_lbl;        /* Disc ext descr label */
  1334. X        Widget    disc_txt;        /* Disc ext descr text */
  1335. X        Widget    dbextd_sep;        /* Separator bar */
  1336. X        Widget    ok_btn;            /* OK button */
  1337. X        Widget    clear_btn;        /* Clear button */
  1338. X        Widget    cancel_btn;        /* Cancel button */
  1339. X    } dbextd;
  1340. X    struct {
  1341. X        Widget    form;            /* Form container */
  1342. X        Widget    trk_lbl;        /* Track ext descr label */
  1343. X        Widget    trk_txt;        /* Track ext descr text */
  1344. X        Widget    dbextt_sep;        /* Separator bar */
  1345. X        Widget    ok_btn;            /* OK button */
  1346. X        Widget    clear_btn;        /* Clear button */
  1347. X        Widget    cancel_btn;        /* Cancel button */
  1348. X    } dbextt;
  1349. X    struct {
  1350. X        Widget    form;            /* Form container */
  1351. X        Widget    dir_lbl;        /* Directory list label */
  1352. X        Widget    dir_list;        /* Directory list */
  1353. X        Widget    dirsel_sep;        /* Separator bar */
  1354. X        Widget    ok_btn;            /* OK button */
  1355. X        Widget    cancel_btn;        /* Cancel button */
  1356. X    } dirsel;
  1357. X    struct {
  1358. X        Widget    form;            /* Form container */
  1359. X        Widget    link_lbl;        /* Directory list label */
  1360. X        Widget    link_list;        /* Directory list */
  1361. X        Widget    linksel_sep;        /* Separator bar */
  1362. X        Widget    ok_btn;            /* OK button */
  1363. X        Widget    cancel_btn;        /* Cancel button */
  1364. X    } linksel;
  1365. X    struct {
  1366. X        Widget    form;            /* Form container */
  1367. X        Widget    help_txt;        /* Help text */
  1368. X        Widget    help_sep;        /* Separator bar */
  1369. X        Widget    ok_btn;            /* OK button */
  1370. X    } help;
  1371. X    struct {
  1372. X        Widget    info;            /* Info popup */
  1373. X        Widget    warning;        /* Warning popup */
  1374. X        Widget    fatal;            /* Fatal error popup */
  1375. X        Widget    confirm;        /* Confirm popup */
  1376. X        Widget    about;            /* About popup */
  1377. X    } dialog;
  1378. X} widgets_t;
  1379. X
  1380. X
  1381. X/* Holder for all button-face pixmaps */
  1382. Xtypedef struct {
  1383. X    struct {
  1384. X        Pixmap    icon_pixmap;        /* Icon logo */
  1385. X        Pixmap    btnlbl_pixmap;        /* Button label mode */
  1386. X        Pixmap    lock_pixmap;        /* Prevent caddy removal */
  1387. X        Pixmap    repeat_pixmap;        /* Repeat */
  1388. X        Pixmap    shuffle_pixmap;        /* Shuffle */
  1389. X        Pixmap    eject_pixmap;        /* Eject */
  1390. X        Pixmap    eject_hlpixmap;        /* Eject */
  1391. X        Pixmap    poweroff_pixmap;    /* Power off */
  1392. X        Pixmap    poweroff_hlpixmap;    /* Power off */
  1393. X        Pixmap    dbprog_pixmap;        /* Logo */
  1394. X        Pixmap    dbprog_hlpixmap;    /* Logo */
  1395. X        Pixmap    time_pixmap;        /* Time */
  1396. X        Pixmap    time_hlpixmap;        /* Time */
  1397. X        Pixmap    ab_pixmap;        /* A->B */
  1398. X        Pixmap    ab_hlpixmap;        /* A->B */
  1399. X        Pixmap    sample_pixmap;        /* Sample */
  1400. X        Pixmap    sample_hlpixmap;    /* Sample */
  1401. X        Pixmap    keypad_pixmap;        /* Keypad */
  1402. X        Pixmap    keypad_hlpixmap;    /* Keypad */
  1403. X        Pixmap    help_pixmap;        /* Help */
  1404. X        Pixmap    help_hlpixmap;        /* Help */
  1405. X        Pixmap    playpause_pixmap;    /* Play/Pause */
  1406. X        Pixmap    playpause_hlpixmap;    /* Play/Pause */
  1407. X        Pixmap    stop_pixmap;        /* Stop */
  1408. X        Pixmap    stop_hlpixmap;        /* Stop */
  1409. X        Pixmap    prevtrk_pixmap;        /* Prev Track */
  1410. X        Pixmap    prevtrk_hlpixmap;    /* Prev Track */
  1411. X        Pixmap    nexttrk_pixmap;        /* Next Track */
  1412. X        Pixmap    nexttrk_hlpixmap;    /* Next Track */
  1413. X        Pixmap    previdx_pixmap;        /* Prev Index */
  1414. X        Pixmap    previdx_hlpixmap;    /* Prev Index */
  1415. X        Pixmap    nextidx_pixmap;        /* Next Index */
  1416. X        Pixmap    nextidx_hlpixmap;    /* Next Index */
  1417. X        Pixmap    rew_pixmap;        /* Search REW */
  1418. X        Pixmap    rew_hlpixmap;        /* Search REW */
  1419. X        Pixmap    ff_pixmap;        /* Search FF */
  1420. X        Pixmap    ff_hlpixmap;        /* Search FF */
  1421. X    } main;
  1422. X    struct {
  1423. X        Pixmap    logo_pixmap;        /* CD Logo */
  1424. X    } dbprog;
  1425. X    struct {
  1426. X        Pixmap    xmcd_pixmap;        /* Program logo */
  1427. X    } dialog;
  1428. X} pixmaps_t;
  1429. X
  1430. X
  1431. X/* Mode flags for bm_to_px(): used to set foreground/background colors */
  1432. X#define BM_PX_NORMAL    0        /* normal/normal */
  1433. X#define BM_PX_HIGHLIGHT    1        /* highlight/normal */
  1434. X#define BM_PX_WHITE    2        /* white/normal */
  1435. X#define BM_PX_BLACK    3        /* black/normal */
  1436. X#define BM_PX_BW    4        /* black/white */
  1437. X#define BM_PX_BWREV    5        /* white/black */
  1438. X
  1439. X
  1440. X/* Public function prototypes */
  1441. Xvoid        create_widgets(widgets_t *);
  1442. Xvoid        pre_realize_config(widgets_t *);
  1443. Xvoid        post_realize_config(widgets_t *, pixmaps_t *);
  1444. Xvoid        register_callbacks(widgets_t *, curstat_t *);
  1445. X
  1446. X#endif /* __WIDGET_H__ */
  1447. X
  1448. END_OF_FILE
  1449. if test 8032 -ne `wc -c <'widget.h'`; then
  1450.     echo shar: \"'widget.h'\" unpacked with wrong size!
  1451. fi
  1452. # end of 'widget.h'
  1453. fi
  1454. if test -f 'xmcd.h' -a "${1}" != "-c" ; then 
  1455.   echo shar: Will not clobber existing file \"'xmcd.h'\"
  1456. else
  1457. echo shar: Extracting \"'xmcd.h'\" \(14843 characters\)
  1458. sed "s/^X//" >'xmcd.h' <<'END_OF_FILE'
  1459. X/*
  1460. X *   xmcd - Motif(tm) CD Audio Player
  1461. X *
  1462. X *   Copyright (C) 1993  Ti Kan
  1463. X *   E-mail: ti@amb.org
  1464. X *
  1465. X *   This program is free software; you can redistribute it and/or modify
  1466. X *   it under the terms of the GNU General Public License as published by
  1467. X *   the Free Software Foundation; either version 2 of the License, or
  1468. X *   (at your option) any later version.
  1469. X *
  1470. X *   This program is distributed in the hope that it will be useful,
  1471. X *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  1472. X *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1473. X *   GNU General Public License for more details.
  1474. X *
  1475. X *   You should have received a copy of the GNU General Public License
  1476. X *   along with this program; if not, write to the Free Software
  1477. X *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1478. X *
  1479. X */
  1480. X#ifndef __XMCD_H__
  1481. X#define __XMCD_H__
  1482. X
  1483. X#ifndef LINT
  1484. Xstatic char *_xmcd_h_ident_ = "@(#)xmcd.h    1.82 93/09/28";
  1485. X#endif
  1486. X
  1487. X
  1488. X/* Whether STATIC should really be... */
  1489. X#ifdef DEBUG
  1490. X#define STATIC
  1491. X#else
  1492. X#define STATIC            static
  1493. X#endif
  1494. X
  1495. X
  1496. X/* Data type definitions: for portability */
  1497. Xtypedef unsigned char        byte_t;        /* 8-bit unsigned */
  1498. Xtypedef char            sbyte_t;    /* 8-bit signed */
  1499. Xtypedef unsigned short        word16_t;    /* 16-bit unsigned */
  1500. Xtypedef short            sword16_t;    /* 16-bit signed */
  1501. Xtypedef unsigned long        word32_t;    /* 32-bit unsigned */
  1502. Xtypedef long            sword32_t;    /* 32-bit signed */
  1503. Xtypedef char            bool_t;        /* Boolean */
  1504. X
  1505. X
  1506. X/* Endianess */
  1507. X#define LITTLE_ENDIAN        1234
  1508. X#define BIG_ENDIAN        4321
  1509. X
  1510. X#if defined(i286) || defined(i386)
  1511. X#define BYTE_ORDER        LITTLE_ENDIAN
  1512. X#else
  1513. X#define BYTE_ORDER        BIG_ENDIAN
  1514. X#endif
  1515. X
  1516. X
  1517. X/* Boolean flags */
  1518. X#ifndef FALSE
  1519. X#define FALSE            0
  1520. X#endif
  1521. X#ifndef TRUE
  1522. X#define TRUE            1
  1523. X#endif
  1524. X
  1525. X
  1526. X/* BSD compatibility */
  1527. X#ifdef BSDCOMPAT
  1528. X
  1529. X#ifndef strchr
  1530. X#define strchr            index
  1531. X#endif
  1532. X
  1533. X#ifndef strrchr
  1534. X#define strrchr            rindex
  1535. X#endif
  1536. X
  1537. X#endif    /* BSDCOMPAT */
  1538. X
  1539. X
  1540. X/* Common header files to be included for all modules */
  1541. X#include <sys/types.h>
  1542. X#include <sys/stat.h>
  1543. X#include <sys/wait.h>
  1544. X#include <sys/ioctl.h>
  1545. X#ifndef NO_STDLIB_H
  1546. X#include <stdlib.h>
  1547. X#endif
  1548. X#include <stdio.h>
  1549. X#include <ctype.h>
  1550. X#include <errno.h>
  1551. X#include <fcntl.h>
  1552. X#include <signal.h>
  1553. X#include <memory.h>
  1554. X#include <dirent.h>
  1555. X#include <pwd.h>
  1556. X#ifdef BSDCOMPAT
  1557. X#include <strings.h>
  1558. X#else
  1559. X#include <string.h>
  1560. X#endif
  1561. X
  1562. X
  1563. X/* Memory allocator defines */
  1564. X#define MEM_ALLOC        XtMalloc
  1565. X#define MEM_REALLOC        XtRealloc
  1566. X#define MEM_CALLOC        XtCalloc
  1567. X#define MEM_FREE        XtFree
  1568. X
  1569. X
  1570. X/* Program name string */
  1571. X#define PROGNAME        "xmcd"
  1572. X
  1573. X
  1574. X/* Backup values for application resources/options */
  1575. X#define DEVNUM            0
  1576. X#define DEVICE            "/dev/rcdrom"
  1577. X#define CDLIBDIR        "/usr/lib/X11/xmcd"
  1578. X#define CDDBDIR            "rock:jazz:newage:classical:soundtrack:data"
  1579. X#define MAX_DBDIRS        10
  1580. X#define DBFILE_MODE        "0664"
  1581. X#define CADDY_LOCK        TRUE
  1582. X#define STATUS_INTERVAL        260
  1583. X#define INSERT_INTERVAL        2000
  1584. X#define PREV_THRESHOLD        100
  1585. X#define SKIP_BLKS        90
  1586. X#define SKIP_PAUSE        45
  1587. X#define SKIP_SPDUP        15
  1588. X#define SKIP_VOL        35
  1589. X#define SKIP_MINVOL        2
  1590. X#define SAMPLE_BLKS        750
  1591. X#define MIN_PLAYBLKS        25
  1592. X#define BLINKON_INTERVAL    850
  1593. X#define BLINKOFF_INTERVAL    150
  1594. X#define BASE_SCSIVOL        0
  1595. X#define VOL_TAPER        0
  1596. X#define VENDOR_CODE        0    /* SCSI-2 (see lib_scsipt.h) */
  1597. X#define PLAY10_SUPP        TRUE
  1598. X#define PLAY12_SUPP        FALSE
  1599. X#define PLAYMSF_SUPP        TRUE
  1600. X#define PLAYTI_SUPP        TRUE
  1601. X#define LOAD_SUPP        FALSE
  1602. X#define EJECT_SUPP        TRUE
  1603. X#define MSELVOL_SUPP        TRUE
  1604. X#define MSELVOL_DBD        FALSE
  1605. X#define PAUSE_SUPP        TRUE
  1606. X#define CADDYLOCK_SUPP        TRUE
  1607. X#define LOAD_SPINDOWN        FALSE
  1608. X#define EXIT_EJECT        FALSE
  1609. X#define EXIT_STOP        TRUE
  1610. X#define SCSIERR_MSG        TRUE
  1611. X#define MAIN_SHOWFOCUS        FALSE
  1612. X
  1613. X/* Backup message strings */
  1614. X#define MAIN_TITLE        "Motif CD Audio Player"
  1615. X#define STR_DBMODE        "cddb"
  1616. X#define STR_PROGMODE        "prog"
  1617. X#define STR_ELAPSE        "elapse"
  1618. X#define STR_REMAIN_TRK        "r-trac"
  1619. X#define STR_REMAIN_DISC        "r-disc"
  1620. X#define STR_PLAY        "play"
  1621. X#define STR_PAUSE        "pause"
  1622. X#define STR_READY        "ready"
  1623. X#define STR_SAMPLE        "sample"
  1624. X#define STR_USAGE        "Usage:"
  1625. X#define STR_BADOPTS        "The following options are unrecognized:"
  1626. X#define STR_NODISC        "no disc"
  1627. X#define STR_BUSY        "cd busy"
  1628. X#define STR_DATA        "data"
  1629. X#define STR_WARNING        "Warning"
  1630. X#define STR_FATAL        "Fatal Error"
  1631. X#define STR_CONFIRM        "Confirm"
  1632. X#define STR_INFO        "Information"
  1633. X#define STR_ABOUT        "About"
  1634. X#define STR_QUIT        "Really Quit?"
  1635. X#define STR_NOMEMORY        "Out of virtual memory!"
  1636. X#define STR_NOHELP        "Help is not available on this item."
  1637. X#define STR_NOLINK        "There is no likely CDDB entry to link to."
  1638. X#define STR_NODB        "No CD database directory."
  1639. X#define STR_NOTROM        "Device is not a CD-ROM!"
  1640. X#define STR_NOTSCSI2        "Device is not SCSI-II compliant."
  1641. X#define STR_MODERR        "Xmcd binary permissions error."
  1642. X#define STR_STATERR        "Cannot stat device \"%s\"."
  1643. X#define STR_NODERR        "\"%s\" is not a character device!"
  1644. X#define STR_SEQFMTERR        "Program sequence string format error."
  1645. X#define STR_DBDIRSERR        "XMcd.maxDbdirs resource error."
  1646. X#define STR_RECOVERR        "Recovering from audio playback error..."
  1647. X#define STR_MAXERR        "Too many errors."
  1648. X#define STR_SAVERR_FORK        "File not saved:\nCannot fork. (errno %d)"
  1649. X#define STR_SAVERR_SUID        "File not saved:\nCannot setuid to %d."
  1650. X#define STR_SAVERR_OPEN        "File not saved:\nCannot open file for writing."
  1651. X#define STR_SAVERR_KILLED    "File not saved:\nChild killed. (signal %d)"
  1652. X#define STR_LNKERR_FORK        "File not linked:\nCannot fork. (errno %d)"
  1653. X#define STR_LNKERR_SUID        "File not linked:\nCannot setuid to %d."
  1654. X#define STR_LNKERR_LINK        "File not linked:\nLink failed."
  1655. X#define STR_LNKERR_KILLED    "File not linked:\nChild killed. (signal %d)"
  1656. X
  1657. X/* Backup short-cut keys */
  1658. X#define BTNLBL_KEY        ""
  1659. X#define LOCK_KEY        ""
  1660. X#define REPEAT_KEY        ""
  1661. X#define SHUFFLE_KEY        ""
  1662. X#define EJECT_KEY        ""
  1663. X#define POWEROFF_KEY        ""
  1664. X#define DBPROG_KEY        ""
  1665. X#define HELP_KEY        ""
  1666. X#define TIME_KEY        ""
  1667. X#define AB_KEY            ""
  1668. X#define SAMPLE_KEY        ""
  1669. X#define KEYPAD_KEY        ""
  1670. X#define PLAYPAUSE_KEY        ""
  1671. X#define STOP_KEY        ""
  1672. X#define PREVTRK_KEY        ""
  1673. X#define NEXTTRK_KEY        ""
  1674. X#define PREVIDX_KEY        ""
  1675. X#define NEXTIDX_KEY        ""
  1676. X#define REW_KEY            ""
  1677. X#define FF_KEY            ""
  1678. X#define KEYPAD0_KEY        ""
  1679. X#define KEYPAD1_KEY        ""
  1680. X#define KEYPAD2_KEY        ""
  1681. X#define KEYPAD3_KEY        ""
  1682. X#define KEYPAD4_KEY        ""
  1683. X#define KEYPAD5_KEY        ""
  1684. X#define KEYPAD6_KEY        ""
  1685. X#define KEYPAD7_KEY        ""
  1686. X#define KEYPAD8_KEY        ""
  1687. X#define KEYPAD9_KEY        ""
  1688. X#define KEYPADENTER_KEY        ""
  1689. X#define KEYPADCLEAR_KEY        ""
  1690. X#define KEYPADCANCEL_KEY    ""
  1691. X
  1692. X/* Application resource/option data */
  1693. Xtypedef struct {
  1694. X    /* Device and file paths */
  1695. X    int        devnum;            /* Logical device number */
  1696. X    char        *device;        /* CD-ROM Device path */
  1697. X    char        *libdir;        /* Library path */
  1698. X    char        *dbdir;            /* Database paths */
  1699. X    int        max_dbdirs;        /* Max number of db dirs */
  1700. X    char        *dbfile_mode;        /* Database file permissions */
  1701. X
  1702. X    /* CD operation parameters */
  1703. X    bool_t        caddy_lock;        /* Lock caddy on startup */
  1704. X    int        stat_interval;        /* Status poll interval (ms) */
  1705. X    int        ins_interval;        /* Insert poll interval (ms) */
  1706. X    int        prev_threshold;        /* Previous track/index
  1707. X                         * threshold (blocks)
  1708. X                         */
  1709. X    int        skip_blks;        /* FF/REW skip blocks */
  1710. X    int        skip_pause;        /* FF/REW pause (msec) */
  1711. X    int        skip_spdup;        /* FF/REW speedup count */
  1712. X    int        skip_vol;        /* FF/REW percent volume */
  1713. X    int        skip_minvol;        /* FF/REW minimum volume */
  1714. X    int        sample_blks;        /* Sample play blocks */
  1715. X    int        min_playblks;        /* Minimum play blocks */
  1716. X    int        blinkon_interval;    /* Display blink on (ms) */
  1717. X    int        blinkoff_interval;    /* Display blink off (ms) */
  1718. X    int        base_scsivol;        /* SCSI volume value base */
  1719. X    int        vol_taper;        /* Volume control taper */
  1720. X    int        vendor_code;        /* Vendor command set code */
  1721. X    bool_t        play10_supp;        /* Play Audio (10) supported */
  1722. X    bool_t        play12_supp;        /* Play Audio (12) supported */
  1723. X    bool_t        playmsf_supp;        /* Play Audio MSF supported */
  1724. X    bool_t        playti_supp;        /* Play Audio T/I supported */
  1725. X    bool_t        load_supp;        /* Motorized load supported */
  1726. X    bool_t        eject_supp;        /* Motorized eject supported */
  1727. X    bool_t        mselvol_supp;        /* Audio vol chg supported */
  1728. X    bool_t        mselvol_dbd;        /* Set DBD bit for msen/msel */
  1729. X    bool_t        pause_supp;        /* Pause/Resume supported */
  1730. X    bool_t        caddylock_supp;        /* Caddy lock supported */
  1731. X    bool_t        load_spindown;        /* Spin down disc at CD load */
  1732. X    bool_t        exit_eject;        /* Eject disc on exit? */
  1733. X    bool_t        exit_stop;        /* Stop disc on exit? */
  1734. X    bool_t        scsierr_msg;        /* Print SCSI error msg? */
  1735. X    bool_t        main_showfocus;        /* Highlight kbd focus? */
  1736. X
  1737. X    /* Various application message strings */
  1738. X    char        *main_title;        /* Main window title */
  1739. X    char        *str_dbmode;        /* cddb */
  1740. X    char        *str_progmode;        /* prog */
  1741. X    char        *str_elapse;        /* elapse */
  1742. X    char        *str_remaintrk;        /* r-trac */
  1743. X    char        *str_remaindisc;    /* r-disc */
  1744. X    char        *str_play;        /* play */
  1745. X    char        *str_pause;        /* pause */
  1746. X    char        *str_ready;        /* ready */
  1747. X    char        *str_sample;        /* sample */
  1748. X    char        *str_usage;        /* Usage */
  1749. X    char        *str_badopts;        /* Bad command-line options */
  1750. X    char        *str_nodisc;        /* No disc */
  1751. X    char        *str_busy;        /* Device busy */
  1752. X    char        *str_data;        /* Data */
  1753. X    char        *str_warning;        /* Warning */
  1754. X    char        *str_fatal;        /* Fatal error */
  1755. X    char        *str_confirm;        /* Confirm */
  1756. X    char        *str_info;        /* Information */
  1757. X    char        *str_about;        /* About */
  1758. X    char        *str_quit;        /* Really Quit? */
  1759. X    char        *str_nomemory;        /* Out of memory */
  1760. X    char        *str_nohelp;        /* No help available on item */
  1761. X    char        *str_nolink;        /* No likely CDDB link */
  1762. X    char        *str_nodb;        /* No CDDB directory */
  1763. X    char        *str_notrom;        /* Not a CD-ROM device */
  1764. X    char        *str_notscsi2;        /* Not SCSI-II compliant */
  1765. X    char        *str_moderr;        /* xmcd binary perms error */
  1766. X    char        *str_staterr;        /* Can't stat device */
  1767. X    char        *str_noderr;        /* Not a character device */
  1768. X    char        *str_seqfmterr;        /* Pgm sequence format err */
  1769. X    char        *str_dbdirserr;        /* XMcd.maxDbdirs error */
  1770. X    char        *str_recoverr;        /* Recovering audio play err */
  1771. X    char        *str_maxerr;        /* Too many errors */
  1772. X    char        *str_saverr_fork;    /* File save err: fork */
  1773. X    char        *str_saverr_suid;    /* File save err: setuid */
  1774. X    char        *str_saverr_open;    /* File save err: open */
  1775. X    char        *str_saverr_killed;    /* File save err: child kill */
  1776. X    char        *str_lnkerr_fork;    /* File link err: fork */
  1777. X    char        *str_lnkerr_suid;    /* File link err: setuid */
  1778. X    char        *str_lnkerr_link;    /* File link err: link */
  1779. X    char        *str_lnkerr_killed;    /* File link err: child kill */
  1780. X
  1781. X    /* Short-cut key definitions */
  1782. X    char        *btnlbl_key;        /* Button label */
  1783. X    char        *lock_key;        /* Lock */
  1784. X    char        *repeat_key;        /* Repeat */
  1785. X    char        *shuffle_key;        /* Shuffle */
  1786. X    char        *eject_key;        /* Eject */
  1787. X    char        *poweroff_key;        /* Quit */
  1788. X    char        *dbprog_key;        /* Database/Program popup */
  1789. X    char        *help_key;        /* Help popup */
  1790. X    char        *time_key;        /* Time */
  1791. X    char        *ab_key;        /* A->B */
  1792. X    char        *sample_key;        /* Sample */
  1793. X    char        *keypad_key;        /* Keypad popup */
  1794. X    char        *playpause_key;        /* Play/Pause */
  1795. X    char        *stop_key;        /* Stop */
  1796. X    char        *prevtrk_key;        /* Prev track */
  1797. X    char        *nexttrk_key;        /* Next track */
  1798. X    char        *previdx_key;        /* Prev index */
  1799. X    char        *nextidx_key;        /* Next index */
  1800. X    char        *rew_key;        /* REW */
  1801. X    char        *ff_key;        /* FF */
  1802. X    char        *keypad0_key;        /* Keypad 0 */
  1803. X    char        *keypad1_key;        /* Keypad 1 */
  1804. X    char        *keypad2_key;        /* Keypad 2 */
  1805. X    char        *keypad3_key;        /* Keypad 3 */
  1806. X    char        *keypad4_key;        /* Keypad 4 */
  1807. X    char        *keypad5_key;        /* Keypad 5 */
  1808. X    char        *keypad6_key;        /* Keypad 6 */
  1809. X    char        *keypad7_key;        /* Keypad 7 */
  1810. X    char        *keypad8_key;        /* Keypad 8 */
  1811. X    char        *keypad9_key;        /* Keypad 9 */
  1812. X    char        *keypadenter_key;    /* Keypad Enter */
  1813. X    char        *keypadclear_key;    /* Keypad clear */
  1814. X    char        *keypadcancel_key;    /* Keypad cancel */
  1815. X} AppData;
  1816. X
  1817. X
  1818. X/* Constant definitions */
  1819. X#define STR_BUF_SZ    64            /* Generic string buffer size */
  1820. X#define FILE_PATH_SZ    72            /* Max file path length */
  1821. X#define MAXTRACK    100            /* Max number of tracks */
  1822. X#define LEAD_OUT_TRACK    0xaa            /* Lead-out track number */
  1823. X#define FRAME_PER_SEC    75            /* Frames per second */
  1824. X#define MAX_VOL        100            /* Max logical audio volume */
  1825. X
  1826. X/* Macros */
  1827. X#define MSF_OFFSET(s)    ((s)->trkinfo[0].frame + \
  1828. X    (((s)->trkinfo[0].min * 60 + (s)->trkinfo[0].sec) * FRAME_PER_SEC))
  1829. X                        /* Starting MSF offset */
  1830. X
  1831. X/* Character set/font */
  1832. X#define CHSET1        "chset1"
  1833. X#define CHSET2        "chset2"
  1834. X#define CHSET3        "chset3"
  1835. X#define CHSET4        "chset4"
  1836. X
  1837. X
  1838. X/* Defines for the type field in trkinfo_t */
  1839. X#define TYP_AUDIO    1            /* Audio track */
  1840. X#define TYP_DATA    2            /* Data track */
  1841. X
  1842. X/* Defines for the mode field in curstat_t */
  1843. X#define M_NODISC    0            /* No disc loaded */
  1844. X#define M_PLAY        1            /* Play mode */
  1845. X#define M_PAUSE        2            /* Pause mode */
  1846. X#define M_STOP        3            /* Stop mode */
  1847. X#define M_A        4            /* First half of A->B mode */
  1848. X#define M_AB        5            /* Running A->B mode */
  1849. X#define M_SAMPLE    6            /* Sample mode */
  1850. X
  1851. X/* Defines for the time_dpy field in curstat_t */
  1852. X#define T_ELAPSED    0            /* Per-track elapsed time */
  1853. X#define T_REMAIN_TRACK    1            /* Per-track remaining time */
  1854. X#define T_REMAIN_DISC    2            /* Whole-disc remaining time */
  1855. X
  1856. X
  1857. X/* CD per-track information */
  1858. Xtypedef struct {
  1859. X    sword32_t    trkno;            /* Track number */
  1860. X    word32_t    addr;            /* Absolute offset block */
  1861. X    byte_t        min;            /* Absolute offset minutes */
  1862. X    byte_t        sec;            /* Absolute offset seconds */
  1863. X    byte_t        frame;            /* Absolute offset frame */
  1864. X    byte_t        type;            /* track type */
  1865. X} trkinfo_t;
  1866. X
  1867. X
  1868. X/* Structure containing current status information */
  1869. Xtypedef struct {
  1870. X    byte_t        mode;            /* Player mode */
  1871. X    byte_t        time_dpy;        /* Time display mode */
  1872. X    byte_t        reserved[2];        /* reserved */
  1873. X    sword32_t    first_trk;        /* First track */
  1874. X    sword32_t    last_trk;        /* Last track */
  1875. X    byte_t        tot_trks;        /* Total number of tracks */
  1876. X    byte_t        tot_min;        /* Total minutes */
  1877. X    byte_t        tot_sec;        /* Total seconds */
  1878. X    byte_t        tot_frame;        /* Total frame */
  1879. X    word32_t    tot_addr;        /* Total block length */
  1880. X    sword32_t    cur_trk;        /* Current track */
  1881. X    sword32_t    cur_idx;        /* Current index */
  1882. X    byte_t        cur_tot_min;        /* Current absolute minutes */
  1883. X    byte_t        cur_tot_sec;        /* Current absolute seconds */
  1884. X    byte_t        cur_tot_frame;        /* Current absolute frame */
  1885. X    byte_t        cur_trk_min;        /* Current relative minutes */
  1886. X    byte_t        cur_trk_sec;        /* Current relative seconds */
  1887. X    byte_t        cur_trk_frame;        /* Current relative frame */
  1888. X    byte_t        reserved2[2];        /* reserved */
  1889. X    word32_t    cur_tot_addr;        /* Current absolute block */
  1890. X    word32_t    cur_trk_addr;        /* Current relative block */
  1891. X    word32_t    sav_iaddr;        /* Saved index abs block */
  1892. X    trkinfo_t    trkinfo[MAXTRACK];    /* Per-track information */
  1893. X    sword32_t    playorder[MAXTRACK];    /* Prog/Shuf sequence */
  1894. X    bool_t        repeat;            /* Repeat mode */
  1895. X    bool_t        shuffle;        /* Shuffle mode */
  1896. X    bool_t        program;        /* Program mode */
  1897. X    bool_t        cddb;            /* CD Database entry */
  1898. X    bool_t        caddy_lock;        /* Caddy lock */
  1899. X    byte_t        prog_tot;        /* Prog/Shuf total tracks */
  1900. X    byte_t        prog_cnt;        /* Prog/Shuf track counter */
  1901. X    byte_t        level;            /* Current volume level */
  1902. X    char        vendor[9];        /* CD-ROM drive vendor */
  1903. X    char        prod[17];        /* CD-ROM drive model */
  1904. X    char        revnum[5];        /* CD-ROM firmware revision */
  1905. X} curstat_t;
  1906. X
  1907. X
  1908. X/* Public function prototypes */
  1909. Xcurstat_t    *curstat_addr(void);
  1910. X
  1911. X#endif    /* __XMCD_H__ */
  1912. END_OF_FILE
  1913. if test 14843 -ne `wc -c <'xmcd.h'`; then
  1914.     echo shar: \"'xmcd.h'\" unpacked with wrong size!
  1915. fi
  1916. # end of 'xmcd.h'
  1917. fi
  1918. echo shar: End of archive 4 \(of 13\).
  1919. cp /dev/null ark4isdone
  1920. MISSING=""
  1921. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 ; do
  1922.     if test ! -f ark${I}isdone ; then
  1923.     MISSING="${MISSING} ${I}"
  1924.     fi
  1925. done
  1926. if test "${MISSING}" = "" ; then
  1927.     echo You have unpacked all 13 archives.
  1928.     echo "Now read the README and INSTALL files for further instructions."
  1929.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1930. else
  1931.     echo You still need to unpack the following archives:
  1932.     echo "        " ${MISSING}
  1933. fi
  1934. ##  End of shell archive.
  1935. exit 0
  1936. -- 
  1937.     ///  Ti Kan                vorsprung durch technik
  1938.    ///   AMB Research Laboratories, Sunnyvale, CA. USA
  1939.   ///    ti@amb.org
  1940.  //////  ...!{decwrl,synopsys,tandem,tsoft,ultra}!sgiblab!bazooka!ti
  1941. ///      ...!uunet!bazooka!ti
  1942.  
  1943.  
  1944.  
  1945. exit 0 # Just in case...
  1946. -- 
  1947.   // chris@Sterling.COM           | Send comp.sources.x submissions to:
  1948. \X/  Amiga: The only way to fly!  |    sources-x@sterling.com
  1949.        "It's intuitively obvious to the most casual observer..."
  1950.  GCS d++(--) -p+ c++ !l u++ e+ m+(-) s++/++ n h--- f+ g+++ w+ t++ r+ y+
  1951.