version 1.50, 2006/06/01 07:12:18 |
version 1.51, 2006/06/01 07:53:01 |
|
|
int i; |
int i; |
|
|
for (c=cmdtab; c->name; ++c) { |
for (c=cmdtab; c->name; ++c) { |
if (! c->args) |
if (!c->args) |
continue; |
continue; |
printf("\t"); |
printf("\t"); |
for (i = c->min, s = c->name; *s; s++, i--) { |
for (i = c->min, s = c->name; *s; s++, i--) { |
|
|
char type; |
char type; |
|
|
cdname = getenv("DISC"); |
cdname = getenv("DISC"); |
if (! cdname) |
if (!cdname) |
cdname = getenv("CDROM"); |
cdname = getenv("CDROM"); |
|
|
cddb_host = getenv("CDDB"); |
cddb_host = getenv("CDDB"); |
|
|
if (argc > 0 && ! strcasecmp(*argv, "help")) |
if (argc > 0 && ! strcasecmp(*argv, "help")) |
usage(); |
usage(); |
|
|
if (! cdname) { |
if (!cdname) { |
cdname = DEFAULT_CD_DRIVE; |
cdname = DEFAULT_CD_DRIVE; |
fprintf(stderr, |
fprintf(stderr, |
"No CD device name specified. Defaulting to %s.\n", cdname); |
"No CD device name specified. Defaulting to %s.\n", cdname); |
|
|
SLIST_INSERT_AFTER(cur_track,tr,track_list); |
SLIST_INSERT_AFTER(cur_track,tr,track_list); |
cur_track = tr; |
cur_track = tr; |
} |
} |
if (! open_cd(cdname, 1)) |
if (!open_cd(cdname, 1)) |
exit(1); |
exit(1); |
get_disc_size(&availblk); |
get_disc_size(&availblk); |
SLIST_FOREACH(tr, &tracks, track_list) { |
SLIST_FOREACH(tr, &tracks, track_list) { |
|
|
if (fd < 0 && ! open_cd(cdname, 0)) |
if (fd < 0 && ! open_cd(cdname, 0)) |
return (0); |
return (0); |
|
|
if (! strcasecmp(arg, "on")) |
if (!strcasecmp(arg, "on")) |
return ioctl(fd, CDIOCSETDEBUG); |
return ioctl(fd, CDIOCSETDEBUG); |
|
|
if (! strcasecmp(arg, "off")) |
if (!strcasecmp(arg, "off")) |
return ioctl(fd, CDIOCCLRDEBUG); |
return ioctl(fd, CDIOCCLRDEBUG); |
|
|
printf("%s: Invalid command arguments\n", __progname); |
printf("%s: Invalid command arguments\n", __progname); |
|
|
} |
} |
|
|
/* open new device */ |
/* open new device */ |
if (! open_cd(arg, 0)) |
if (!open_cd(arg, 0)) |
return (0); |
return (0); |
(void) strlcpy(newcdname, arg, sizeof(newcdname)); |
(void) strlcpy(newcdname, arg, sizeof(newcdname)); |
cdname = newcdname; |
cdname = newcdname; |
|
|
rc--; |
rc--; |
} |
} |
|
|
if (! arg || ! *arg) { |
if (!arg || ! *arg) { |
/* Play the whole disc */ |
/* Play the whole disc */ |
return (play_track(h.starting_track, 1, h.ending_track, 1)); |
return (play_track(h.starting_track, 1, h.ending_track, 1)); |
} |
} |
|
|
} |
} |
|
|
if (trk < h.starting_track) |
if (trk < h.starting_track) |
return play_track(h.starting_track, 1, |
return play_track(h.starting_track, 1, |
h.ending_track + 1, 1); |
h.ending_track + 1, 1); |
return play_track(trk, 1, h.ending_track, 1); |
return play_track(trk, 1, h.ending_track, 1); |
} |
} |
|
|
return ioctl(fd, CDIOCPLAYMSF, (char *) &a); |
return ioctl(fd, CDIOCPLAYMSF, (char *) &a); |
} |
} |
|
|
int |
int |
status(int *trk, int *min, int *sec, int *frame) |
status(int *trk, int *min, int *sec, int *frame) |
{ |
{ |
struct ioc_read_subchannel s; |
struct ioc_read_subchannel s; |
|
|
continue; |
continue; |
|
|
len = p - buf; |
len = p - buf; |
if (! len) |
if (!len) |
return (0); |
return (0); |
|
|
if (*p) { /* It must be a spacing character! */ |
if (*p) { /* It must be a spacing character! */ |
|
|
*cmd = -1; |
*cmd = -1; |
for (c=cmdtab; c->name; ++c) { |
for (c=cmdtab; c->name; ++c) { |
/* Is it an exact match? */ |
/* Is it an exact match? */ |
if (! strcasecmp(buf, c->name)) { |
if (!strcasecmp(buf, c->name)) { |
*cmd = c->command; |
*cmd = c->command; |
break; |
break; |
} |
} |