diff options
Diffstat (limited to 'src/paranoia.c')
-rw-r--r-- | src/paranoia.c | 58 |
1 files changed, 26 insertions, 32 deletions
diff --git a/src/paranoia.c b/src/paranoia.c index 914d338..b70a836 100644 --- a/src/paranoia.c +++ b/src/paranoia.c @@ -17,43 +17,37 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "src/daisy.h" +#include "daisy.h" -extern daisy_t daisy[]; -extern misc_t misc; - -void view_screen (); -void playfile (char *, char *, char *, char *, char *); - -char *get_mcn () +char *get_mcn (misc_t *misc) { - if (misc.audiocd == 1) + if (misc->audiocd == 1) { - snprintf (misc.mcn, MAX_STR, ".MCN_%s", cdio_get_mcn (misc.p_cdio)); - return misc.mcn; + snprintf (misc->mcn, MAX_STR, ".MCN_%s", cdio_get_mcn (misc->p_cdio)); + return misc->mcn; } // if return ""; } // get_mcn -void init_paranoia () +void init_paranoia (misc_t *misc) { - misc.p_cdio = cdio_open (misc.cd_dev, DRIVER_UNKNOWN); - if (! (misc.drv = cdio_cddap_identify_cdio (misc.p_cdio, 0, NULL))) + misc->p_cdio = cdio_open (misc->cd_dev, DRIVER_UNKNOWN); + if (! (misc->drv = cdio_cddap_identify_cdio (misc->p_cdio, 0, NULL))) { endwin (); beep (); printf ("Unable to identify audio CD disc.\n"); kill (getppid (), SIGKILL); } // if - if (cdda_open (misc.drv) != 0) + if (cdda_open (misc->drv) != 0) { endwin (); beep (); printf ("Unable to open disc.\n"); kill (getppid (), SIGKILL); } // if - if (pipe (misc.pipefd) == -1) - { + if (pipe (misc->pipefd) == -1) + { int e; e = errno; @@ -62,34 +56,34 @@ void init_paranoia () printf ("pipe: %s\n", strerror (e)); kill (getppid (), SIGKILL); } // if - misc.par = paranoia_init (misc.drv); - paranoia_modeset (misc.par, PARANOIA_MODE_FULL ^ PARANOIA_MODE_NEVERSKIP); + misc->par = paranoia_init (misc->drv); + paranoia_modeset (misc->par, PARANOIA_MODE_FULL ^ PARANOIA_MODE_NEVERSKIP); } // init_paranoia -pid_t play_track (char *out_file, char *type, +pid_t play_track (misc_t *misc, char *out_file, char *type, lsn_t from) { - cdio_paranoia_free (misc.par); - init_paranoia (); - switch (misc.player_pid = fork ()) + cdio_paranoia_free (misc->par); + init_paranoia (misc); + switch (misc->player_pid = fork ()) { case 0: /* Child reads from pipe */ { char path[MAX_STR + 1], str[MAX_STR + 1]; - close (misc.pipefd[1]); /* don't need this in child */ + close (misc->pipefd[1]); /* don't need this in child */ #ifdef F_SETPIPE_SZ - fcntl (misc.pipefd[0], F_SETPIPE_SZ, 1024000); + fcntl (misc->pipefd[0], F_SETPIPE_SZ, 1024000); #endif - snprintf (path, MAX_STR, "/dev/fd/%d", misc.pipefd[0]); - snprintf (str, MAX_STR, "%f", misc.speed); - playfile (path, "cdda", out_file, type, str); - close (misc.pipefd[0]); + snprintf (path, MAX_STR, "/dev/fd/%d", misc->pipefd[0]); + snprintf (str, MAX_STR, "%f", misc->speed); + playfile (misc, path, "cdda", out_file, type, str); + close (misc->pipefd[0]); _exit (0); } default: - paranoia_seek (misc.par, from, SEEK_SET); - misc.lsn_cursor = from; - return misc.player_pid; + paranoia_seek (misc->par, from, SEEK_SET); + misc->lsn_cursor = from; + return misc->player_pid; } // switch } // play_track |