diff options
author | Paul Gevers <elbrus@debian.org> | 2014-06-23 21:40:52 +0200 |
---|---|---|
committer | Paul Gevers <elbrus@debian.org> | 2014-06-23 21:40:52 +0200 |
commit | 84838ff1b39fa8f05b1bf244cfb20d4a2de86872 (patch) | |
tree | e4a73a5666bb4bb20835e09f2879e6143f7520d0 /src/daisy-player.c | |
parent | e83ec173e9845f5efaa6607d42b04d364e190fe6 (diff) |
Imported Upstream version 8.6.2
Diffstat (limited to 'src/daisy-player.c')
-rw-r--r-- | src/daisy-player.c | 92 |
1 files changed, 53 insertions, 39 deletions
diff --git a/src/daisy-player.c b/src/daisy-player.c index 6de85c2..42aeeff 100644 --- a/src/daisy-player.c +++ b/src/daisy-player.c @@ -195,6 +195,7 @@ void get_bookmark (misc_t *misc, my_attribute_t *my_attribute, misc->current_page_number = daisy[misc->playing].page_number; misc->just_this_item = -1; skip_left (misc, my_attribute, daisy); + skip_right (misc); view_screen (misc, daisy); return; } // get_bookmark @@ -2074,9 +2075,6 @@ int main (int argc, char *argv[]) printw (gettext ("Daisy-player - Version %s\n"), PACKAGE_VERSION); printw (gettext ("A parser to play Daisy CD's with Linux\n")); -// set the CD speed so it makes less noise - set_drive_speed (&misc, 4); - printw (gettext ("Scanning for a Daisy CD...")); refresh (); misc.audiocd = 0; @@ -2156,12 +2154,14 @@ int main (int argc, char *argv[]) magic_close (myt); } // if there is an argument else -// try the default block device (/dev/sr0) +// try misc.cd_dev { - char cmd[MAX_CMD], *str, *tmp; - size_t s; + if (access (misc.cd_dev, R_OK) != 0) + failure (misc.cd_dev, errno); + + char cmd[MAX_CMD], *tmp; time_t start; - FILE *r; + CdIo_t *cd; snprintf (cmd, MAX_CMD, "eject -t %s", misc.cd_dev); switch (system (cmd)) @@ -2170,41 +2170,47 @@ int main (int argc, char *argv[]) break; } // switch start = time (NULL); - if ((r = fopen ("/run/udev/data/b11:0", "r")) == NULL) -// block 11 = cdrom - { - int e; - - e = errno; - endwin (); - beep (); - printf ("/run/udev/data/b11:0: %s\n\n", gettext (strerror (e))); - usage (); - } // if tmp = strdup ("/tmp/daisy-player.XXXXXX"); strncpy (misc.daisy_mp, mkdtemp (tmp), MAX_STR); - str = malloc (MAX_STR); - s = MAX_STR - 1; - while (1) + misc.found_cd = 0; + cd = NULL; + cdio_init (); + do + { + if (time (NULL) - start >= 30) + failure (gettext ("No Daisy CD in drive."), errno); + cd = cdio_open (misc.cd_dev, DRIVER_UNKNOWN); + } while (cd == NULL); + start = time (NULL); + do { - switch (getline (&str, &s, r)) - { - default: - break; - } // switch if (time (NULL) - start >= 30) failure (gettext ("No Daisy CD in drive."), errno); - if (feof (r)) + switch (cdio_get_discmode (cd)) + { + case CDIO_DISC_MODE_CD_DATA: /**< CD-ROM form 1 */ + case CDIO_DISC_MODE_CD_XA: /**< CD-ROM XA form2 */ + case CDIO_DISC_MODE_DVD_ROM: /**< DVD ROM (e.g. movies) */ + case CDIO_DISC_MODE_DVD_RAM: /**< DVD-RAM */ + case CDIO_DISC_MODE_DVD_R: /**< DVD-R */ + case CDIO_DISC_MODE_DVD_RW: /**< DVD-RW */ + case CDIO_DISC_MODE_HD_DVD_ROM: /**< HD DVD-ROM */ + case CDIO_DISC_MODE_HD_DVD_RAM: /**< HD DVD-RAM */ + case CDIO_DISC_MODE_HD_DVD_R: /**< HD DVD-R */ + case CDIO_DISC_MODE_DVD_PR: /**< DVD+R */ + case CDIO_DISC_MODE_DVD_PRW: /**< DVD+RW */ + case CDIO_DISC_MODE_DVD_PRW_DL: /**< DVD+RW DL */ + case CDIO_DISC_MODE_DVD_PR_DL: /**< DVD+R DL */ + case CDIO_DISC_MODE_CD_MIXED: { - r = freopen ("/run/udev/data/b11:0", "r", r); - continue; - } // if +// set the CD speed so it makes less noise + set_drive_speed (&misc, 4); - if (strcasestr (str, "TRACK_COUNT_DATA")) - { - if (! get_mount_point (&misc)) + do // if not found a mounted cd, try to mount one { + if (time (NULL) - start >= 30) + failure (gettext ("No Daisy CD in drive."), errno); snprintf (cmd, MAX_CMD, "udisksctl mount -b %s > /dev/null", misc.cd_dev); switch (system (cmd)) @@ -2212,11 +2218,11 @@ int main (int argc, char *argv[]) break; } // switch get_mount_point (&misc); - } // if + } while (! get_mount_point (&misc)); + misc.found_cd = 1; break; } // TRACK_COUNT_DATA" - - if (strcasestr (str, "TRACK_COUNT_AUDIO")) + case CDIO_DISC_MODE_CD_DA: /**< CD-DA */ { // probably an Audio-CD misc.audiocd = 1; @@ -2226,14 +2232,22 @@ int main (int argc, char *argv[]) refresh (); strncpy (misc.bookmark_title, "Audio-CD", MAX_STR - 1); strncpy (misc.daisy_title, "Audio-CD", MAX_STR - 1); +// set the CD speed so it makes less noise + set_drive_speed (&misc, 4); init_paranoia (&misc); daisy = get_number_of_tracks (&misc); get_toc_audiocd (&misc, daisy); strncpy (misc.daisy_mp, "/tmp", MAX_STR - 1); + misc.found_cd = 1; break; - } // TRACK_COUNT_AUDIO - } // while - fclose (r); + } // TRACK_COUNT_AUDIO + case CDIO_DISC_MODE_CD_I: + case CDIO_DISC_MODE_DVD_OTHER: + case CDIO_DISC_MODE_NO_INFO: + case CDIO_DISC_MODE_ERROR: + failure (misc.cd_dev, errno); + } // switch + } while (misc.found_cd != 1); } // if use misc.cd_dev keypad (misc.screenwin, TRUE); meta (misc.screenwin, TRUE); |