From 383e922d226f29737da0812a421e93bf389f6568 Mon Sep 17 00:00:00 2001 From: Veit Heller Date: Wed, 17 Dec 2014 13:55:06 +0100 Subject: [PATCH] Updated for better error messages --- src/cd_check_capabilities.c | 12 ++++++++---- src/cd_check_eject.c | 12 ++++++++---- src/cd_check_read.c | 25 +++++++++++++++++-------- src/cd_check_read_toc.c | 16 ++++++++++------ 4 files changed, 43 insertions(+), 22 deletions(-) diff --git a/src/cd_check_capabilities.c b/src/cd_check_capabilities.c index c792c6c..3aa8be6 100644 --- a/src/cd_check_capabilities.c +++ b/src/cd_check_capabilities.c @@ -5,19 +5,23 @@ #include #include +const char* program_name; + static inline void die(int code, const char* message){ - fprintf(stderr, "%s\n", message); + fprintf(stderr, "%s: %s\n", program_name, message); exit(code); } -int main(){ +int main(int argc, char** argv){ register int fd, caps; + program_name = argv[0]; + if((fd = open("/dev/cdrom", O_RDONLY | O_NONBLOCK)) == -1) - die(127, "cd_check_capabilities: Cannot open /dev/cdrom"); + die(127, "Cannot open /dev/cdrom"); if((caps = ioctl(fd, CDROM_GET_CAPABILITY)) == -1) - die(127, "cd_check_capabilities: ioctl failed"); + die(127, "ioctl failed"); printf("This drive is capable of playing CD-R: %s\n\t\t\t" "CD-RW: %s\n\t\t\tDVD: %s\n\t\t\tDVD-R: %s\n", diff --git a/src/cd_check_eject.c b/src/cd_check_eject.c index 52a47d7..e334aa5 100644 --- a/src/cd_check_eject.c +++ b/src/cd_check_eject.c @@ -5,19 +5,23 @@ #include #include +const char* program_name; + static inline void die(int code, const char* message){ - fprintf(stderr, "%s\n", message); + fprintf(stderr, "%s: %s\n", program_name, message); exit(code); } -int main(){ +int main(int argc, char** argv){ register int fd; + program_name = argv[0]; + if((fd = open("/dev/cdrom", O_RDONLY | O_NONBLOCK)) == -1) - die(127, "cd_check_eject: Cannot open /dev/cdrom"); + die(127, "Cannot open /dev/cdrom"); if(ioctl(fd, CDROMEJECT) == -1) - die(127, "cd_check_eject: ioctl() failed"); + die(127, "ioctl() failed"); close(fd); diff --git a/src/cd_check_read.c b/src/cd_check_read.c index 9385cdd..e48eb31 100644 --- a/src/cd_check_read.c +++ b/src/cd_check_read.c @@ -1,28 +1,37 @@ #include #include #include +#include #include #include #include +const char* program_name; + static inline void die(int code, const char* message){ - fprintf(stderr, "%s\n", message); + fprintf(stderr, "%s: %s\n", program_name, message); exit(code); } -int main(){ +int main(int argc, char** argv){ register int fd; struct cdrom_tocentry toc_entry; struct cdrom_msf start_stop; - if((fd = open("/dev/cdrom", O_RDONLY)) == -1) - die(127, "cd_check_read: Cannot open /dev/cdrom"); + program_name = argv[0]; + + if((fd = open("/dev/cdrom", O_RDONLY)) == -1){ + if(errno == ENOMEDIUM) + die(127, "No CD in drive"); + else + die(127, "Cannot open /dev/cdrom"); + } toc_entry.cdte_track = 1; toc_entry.cdte_format = CDROM_MSF; if(ioctl(fd, CDROMREADTOCENTRY, &toc_entry) == -1) - die(127, "cd_check_read: ioctl() failed"); + die(127, "ioctl() failed"); start_stop.cdmsf_min0 = toc_entry.cdte_addr.msf.minute; start_stop.cdmsf_sec0 = toc_entry.cdte_addr.msf.second; @@ -32,20 +41,20 @@ int main(){ toc_entry.cdte_format = CDROM_MSF; if(ioctl(fd, CDROMREADTOCENTRY, &toc_entry) == -1) - die(127, "cd_check_read: ioctl() failed"); + die(127, "ioctl() failed"); start_stop.cdmsf_min1 = toc_entry.cdte_addr.msf.minute; start_stop.cdmsf_sec1 = toc_entry.cdte_addr.msf.second; start_stop.cdmsf_frame1 = toc_entry.cdte_addr.msf.frame; if(ioctl(fd, CDROMPLAYMSF, &start_stop) == -1) - die(127, "cd_check_read: ioctl() failed"); + die(127, "ioctl() failed"); printf("Press anything to stop playing.\n"); getchar(); if(ioctl(fd, CDROMSTOP) == -1) - die(127, "cd_check_read: ioctl() failed"); + die(127, "ioctl() failed"); close(fd); return 0; diff --git a/src/cd_check_read_toc.c b/src/cd_check_read_toc.c index 23b1d8d..806d128 100644 --- a/src/cd_check_read_toc.c +++ b/src/cd_check_read_toc.c @@ -6,26 +6,30 @@ #include #include +const char* program_name; + static inline void die(int code, const char* message){ - fprintf(stderr, "%s\n", message); + fprintf(stderr, "%s: %s\n", program_name, message); exit(code); } -int main(){ +int main(int argc, char** argv){ register int fd; register unsigned char i; struct cdrom_tochdr toc_hdr; struct cdrom_tocentry toc_entry; + program_name = argv[0]; + if((fd = open("/dev/cdrom", O_RDONLY)) == -1){ if(errno == ENOMEDIUM) - die(127, "cd_check_read_toc: No CD in drive"); + die(127, "No CD in drive"); else - die(127, "cd_check_read_toc: Cannot open /dev/cdrom"); + die(127, "Cannot open /dev/cdrom"); } if(ioctl(fd, CDROMREADTOCHDR, &toc_hdr) == -1) - die(127, "cd_check_read_toc: Cannot get header"); + die(127, "Cannot get header"); printf("First track: %d\nLast track: %d\n\n trackno) length\n", toc_hdr.cdth_trk0, toc_hdr.cdth_trk1); @@ -35,7 +39,7 @@ int main(){ toc_entry.cdte_format = CDROM_MSF; if(ioctl(fd, CDROMREADTOCENTRY, &toc_entry) == -1) - die(127, "cd_check_read_toc: Cannot get table of contents"); + die(127, "Cannot get table of contents"); printf(" %2d)\t%02d:%02d.%02d\n", i, toc_entry.cdte_addr.msf.minute, toc_entry.cdte_addr.msf.second,