diff -urN mcdp-0.4a/cddev.c mcdp-0.4b/cddev.c --- mcdp-0.4a/cddev.c 2005-12-17 11:46:04.000000000 +0100 +++ mcdp-0.4b/cddev.c 2011-07-03 22:57:29.000000000 +0200 @@ -1,4 +1,5 @@ #include "mcdp.h" + short cddb; /* if 0, we have no entries and no remote stuff */ static void cd_playmsf(struct mcdp *cd, struct cdrom_msf *msf); @@ -13,39 +14,47 @@ /* GLOBAL */ +/** + * returns 1, if devfile is okay + */ +int cd_try_some_dev(const char *devfile, struct mcdp *cd) +{ + if (!devfile) return 0; + + cd->fd = open(devfile, O_RDONLY|O_NONBLOCK); + if (cd->fd == -1) return 0; + + cd->status = ioctl(cd->fd,CDROM_DRIVE_STATUS, NULL); + if (cd->status == -1) { + close(cd->fd); + return 0; + } + + return 1; +} + /* open device or exit ! */ void cd_initdev(const char *cdpath, struct mcdp *cd) { + int r; /* 1. check argv[1] */ - if (cdpath) { - cd->dev = cdpath; - goto try; /* here was a BIG BUG over years :( */ - } + r = cd_try_some_dev(cdpath, cd); + if (r) return; /* 2. check $CDROM */ - if ((cd->dev=getenv("CDROM"))!=NULL) goto try; + r = cd_try_some_dev(getenv("CDROM"), cd); + if (r) return; + + /* 3. try some defaults */ + r = cd_try_some_dev("/dev/sr0", cd); + if (r) return; + r = cd_try_some_dev("/dev/scd0", cd); + if (r) return; + r = cd_try_some_dev("/dev/cdrom", cd); + if (r) return; + r = cd_try_some_dev("/dev/cdroms/cdrom0", cd); + if (r) return; - /* 3. try default */ - { - struct stat st; - if (stat("/dev/.devfsd", &st)<0) { - cd->dev="/dev/cdrom"; /* really no devfs :( */ - } else { - if (S_ISCHR(st.st_mode)) { /* devfs */ - cd->dev="/dev/cdroms/cdrom0"; - } else cd->dev="/dev/cdrom"; - } - } - try: - cd->fd=open(cd->dev, O_RDONLY|O_NONBLOCK); - if ((cd->fd<0) || (cd->status=ioctl(cd->fd,CDROM_DRIVE_STATUS,NULL)<0)) { - _printf("Sorry, can't open cd-device \"%s\" !\n", cd->dev); - exit(1); - } - if (cd->status==(100||105)) { /* audio/mixed */ - mesg(1,"Sorry, your disc isn't a Mixed-CD or Audio-CD !\n"); - exit(2); - } return; } diff -urN mcdp-0.4a/doc/CHANGES mcdp-0.4b/doc/CHANGES --- mcdp-0.4a/doc/CHANGES 2005-12-17 12:04:45.000000000 +0100 +++ mcdp-0.4b/doc/CHANGES 2011-07-03 23:00:11.000000000 +0200 @@ -1,3 +1,8 @@ +0.4b +- deleted not used variable @ formats.c +- added some device filenames in cdrom.c +- but: a lot other bugs and wrong coding keeps unfixed ;) + 0.4a - fixed argv[1] bug - fixed draw_hline() in draw.c diff -urN mcdp-0.4a/formats.c mcdp-0.4b/formats.c --- mcdp-0.4a/formats.c 2002-07-04 08:33:15.000000000 +0200 +++ mcdp-0.4b/formats.c 2011-07-03 22:39:55.000000000 +0200 @@ -27,7 +27,7 @@ char ch,buf[1024]; char *pb; char flag_in_sign,flag_upcase; - char flag_hash,flag_zero,flag_left,flag_space,flag_sign,flag_dot; + char flag_hash,flag_left,flag_space,flag_sign,flag_dot; signed char flag_long; long number,width,preci=0,bu_len,pad; char padwith; @@ -42,7 +42,6 @@ { case '%': flag_hash=flag_upcase=0; - flag_zero=0; flag_left=0; flag_space=0; flag_sign=0; diff -urN mcdp-0.4a/Makefile mcdp-0.4b/Makefile --- mcdp-0.4a/Makefile 2005-12-17 11:42:28.000000000 +0100 +++ mcdp-0.4b/Makefile 2011-07-03 22:55:22.000000000 +0200 @@ -12,6 +12,7 @@ # compiler CC = $(DIET) gcc CFLAGS = -Os -Wall -pipe -fomit-frame-pointer +CFLAGS += -Wno-sequence-point -Wno-pointer-sign -Wno-array-bounds LDFLAGS = # extraflags diff -urN mcdp-0.4a/mcdp.lsm mcdp-0.4b/mcdp.lsm --- mcdp-0.4a/mcdp.lsm 2005-12-17 12:06:29.000000000 +0100 +++ mcdp-0.4b/mcdp.lsm 2011-07-03 22:58:24.000000000 +0200 @@ -1,7 +1,7 @@ Begin4 Title: mcdp -Version: 0.4a -Entered-date: 2005-12-17 +Version: 0.4b +Entered-date: 2011-07-03 Description: Is a small cd player application with a curses like interface. Has a track database, supports remote/local cddb track data, different play modes and volume control.