version 1.24, 2002/04/18 20:18:31 |
version 1.25, 2002/04/18 22:17:04 |
|
|
#define CMD_PREV 17 |
#define CMD_PREV 17 |
#define CMD_REPLAY 18 |
#define CMD_REPLAY 18 |
#define CMD_CDDB 19 |
#define CMD_CDDB 19 |
|
#define CMD_CDID 20 |
|
|
struct cmdtab { |
struct cmdtab { |
int command; |
int command; |
|
|
{ CMD_STATUS, "status", 1, "" }, |
{ CMD_STATUS, "status", 1, "" }, |
{ CMD_STOP, "stop", 3, "" }, |
{ CMD_STOP, "stop", 3, "" }, |
{ CMD_VOLUME, "volume", 1, "<l> <r> | left | right | mute | mono | stereo" }, |
{ CMD_VOLUME, "volume", 1, "<l> <r> | left | right | mute | mono | stereo" }, |
{ CMD_CDDB, "cddbinfo", 2, "[n]" }, |
{ CMD_CDDB, "cddbinfo", 2, "[n]" }, |
|
{ CMD_CDID, "cdid", 2, "" }, |
{ 0, 0, 0, 0} |
{ 0, 0, 0, 0} |
}; |
}; |
|
|
|
|
void help(void); |
void help(void); |
void usage(void); |
void usage(void); |
char *strstatus(int); |
char *strstatus(int); |
|
int cdid(void); |
|
|
void |
void |
help() |
help() |
|
|
|
|
return cddbinfo(arg); |
return cddbinfo(arg); |
|
|
|
case CMD_CDID: |
|
if (fd < 0 && ! open_cd(cdname)) |
|
return (0); |
|
return cdid(); |
|
|
case CMD_STATUS: |
case CMD_STATUS: |
if (fd < 0 && ! open_cd(cdname)) |
if (fd < 0 && ! open_cd(cdname)) |
return (0); |
return (0); |
|
|
} else |
} else |
printf("No volume level info available\n"); |
printf("No volume level info available\n"); |
return(0); |
return(0); |
|
} |
|
|
|
int |
|
cdid() |
|
{ |
|
unsigned long id; |
|
struct ioc_toc_header h; |
|
int rc, n; |
|
|
|
rc = ioctl(fd, CDIOREADTOCHEADER, &h); |
|
if (rc == -1) { |
|
warn("getting toc header"); |
|
return (rc); |
|
} |
|
|
|
n = h.ending_track - h.starting_track + 1; |
|
rc = read_toc_entrys((n + 1) * sizeof (struct cd_toc_entry)); |
|
if (rc < 0) |
|
return (rc); |
|
|
|
id = cddb_discid(n, toc_buffer); |
|
if (id) { |
|
if (verbose) |
|
printf("CDID="); |
|
printf("%08lx\n", id); |
|
} |
|
return id ? 0 : 1; |
} |
} |
|
|
int |
int |