cdcontrol.c (13884) | cdcontrol.c (13888) |
---|---|
1/* 2 * Compact Disc Control Utility by Serge V. Vakulenko <vak@cronyx.ru>. 3 * Based on the non-X based CD player by Jean-Marc Zucconi and 4 * Andrey A. Chernov. 5 * 6 * $Id$ 7 */ 8#include <stdio.h> --- 383 unchanged lines hidden (view full) --- 392 case ASTS_VOID: return ("void"); 393 default: return ("??"); 394 } 395} 396 397int pstatus (char *arg) 398{ 399 struct ioc_vol v; | 1/* 2 * Compact Disc Control Utility by Serge V. Vakulenko <vak@cronyx.ru>. 3 * Based on the non-X based CD player by Jean-Marc Zucconi and 4 * Andrey A. Chernov. 5 * 6 * $Id$ 7 */ 8#include <stdio.h> --- 383 unchanged lines hidden (view full) --- 392 case ASTS_VOID: return ("void"); 393 default: return ("??"); 394 } 395} 396 397int pstatus (char *arg) 398{ 399 struct ioc_vol v; |
400 struct ioc_read_subchannel ss; 401 struct cd_sub_channel_info data; |
|
400 int rc, trk, m, s, f; 401 402 rc = status (&trk, &m, &s, &f); 403 if (rc >= 0) 404 if (verbose) 405 printf ("Audio status = %d<%s>, current track = %d, current position = %d:%02d.%02d\n", 406 rc, strstatus (rc), trk, m, s, f); 407 else 408 printf ("%d %d %d:%02d.%02d\n", rc, trk, m, s, f); 409 else | 402 int rc, trk, m, s, f; 403 404 rc = status (&trk, &m, &s, &f); 405 if (rc >= 0) 406 if (verbose) 407 printf ("Audio status = %d<%s>, current track = %d, current position = %d:%02d.%02d\n", 408 rc, strstatus (rc), trk, m, s, f); 409 else 410 printf ("%d %d %d:%02d.%02d\n", rc, trk, m, s, f); 411 else |
410 printf ("No current status info\n"); | 412 printf ("No current status info available\n"); |
411 | 413 |
414 bzero (&ss, sizeof (ss)); 415 ss.data = &data; 416 ss.data_len = sizeof (data); 417 ss.address_format = msf ? CD_MSF_FORMAT : CD_LBA_FORMAT; 418 ss.data_format = CD_MEDIA_CATALOG; 419 rc = ioctl (fd, CDIOCREADSUBCHANNEL, (char *) &ss); 420 if (rc >= 0) { 421 printf("Media catalog is %sactive\n", 422 ss.data->what.media_catalog.mc_valid ? "": "in"); 423 } else 424 printf("No media catalog info available\n"); 425 |
|
412 rc = ioctl (fd, CDIOCGETVOL, &v); 413 if (rc >= 0) 414 if (verbose) 415 printf ("Left volume = %d, right volume = %d\n", 416 v.vol[0], v.vol[1]); 417 else 418 printf ("%d %d\n", v.vol[0], v.vol[1]); 419 else | 426 rc = ioctl (fd, CDIOCGETVOL, &v); 427 if (rc >= 0) 428 if (verbose) 429 printf ("Left volume = %d, right volume = %d\n", 430 v.vol[0], v.vol[1]); 431 else 432 printf ("%d %d\n", v.vol[0], v.vol[1]); 433 else |
420 printf ("No volume level info\n"); | 434 printf ("No volume level info available\n"); |
421 return(0); 422} 423 424int info (char *arg) 425{ 426 struct ioc_toc_header h; 427 int rc, i, n; 428 429 rc = ioctl (fd, CDIOREADTOCHEADER, &h); | 435 return(0); 436} 437 438int info (char *arg) 439{ 440 struct ioc_toc_header h; 441 int rc, i, n; 442 443 rc = ioctl (fd, CDIOREADTOCHEADER, &h); |
430 if (rc >= 0) | 444 if (rc >= 0) { |
431 if (verbose) 432 printf ("Starting track = %d, ending track = %d, TOC size = %d bytes\n", 433 h.starting_track, h.ending_track, h.len); 434 else 435 printf ("%d %d %d\n", h.starting_track, 436 h.ending_track, h.len); | 445 if (verbose) 446 printf ("Starting track = %d, ending track = %d, TOC size = %d bytes\n", 447 h.starting_track, h.ending_track, h.len); 448 else 449 printf ("%d %d %d\n", h.starting_track, 450 h.ending_track, h.len); |
437 else { | 451 } else { |
438 perror ("getting toc header"); 439 return (rc); 440 } 441 442 n = h.ending_track - h.starting_track + 1; 443 rc = read_toc_entrys ((n + 1) * sizeof (struct cd_toc_entry)); 444 if (rc < 0) 445 return (rc); --- 244 unchanged lines hidden --- | 452 perror ("getting toc header"); 453 return (rc); 454 } 455 456 n = h.ending_track - h.starting_track + 1; 457 rc = read_toc_entrys ((n + 1) * sizeof (struct cd_toc_entry)); 458 if (rc < 0) 459 return (rc); --- 244 unchanged lines hidden --- |