diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-19 19:14:32 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-19 19:14:32 +0100 |
commit | ce6f922de24f004f9c108fc6d921ec141fb7818c (patch) | |
tree | 2e1e1b1012fb0a2f2f8cb212d8de4834b3207295 /src/daisy-player.c | |
parent | 102e19229600ac49dcfc6373ccc4ce3b135b62c8 (diff) |
New upstream version 11.6.2.1
Diffstat (limited to 'src/daisy-player.c')
-rw-r--r-- | src/daisy-player.c | 193 |
1 files changed, 126 insertions, 67 deletions
diff --git a/src/daisy-player.c b/src/daisy-player.c index e4bc43a..a417df5 100644 --- a/src/daisy-player.c +++ b/src/daisy-player.c @@ -59,7 +59,7 @@ void put_bookmark (misc_t *misc) void get_clips (misc_t *misc, my_attribute_t *my_attribute) { char begin_str[MAX_STR], *begin, *orig_begin, *end; - + if (misc->cd_type == CDIO_DISC_MODE_CD_DA) return; orig_begin = my_attribute->clip_begin; @@ -129,6 +129,7 @@ void get_bookmark (misc_t *misc, my_attribute_t *my_attribute, snprintf (name, len, "%s/.daisy-player/%s%s", pw->pw_dir, misc->bookmark_title, get_mcn (misc)); local_doc = htmlParseFile (name, "UTF-8"); + free (name); if (! (local_reader = xmlReaderWalker (local_doc))) { xmlFreeDoc (local_doc); @@ -154,7 +155,7 @@ void get_bookmark (misc_t *misc, my_attribute_t *my_attribute, misc->elapsed_seconds = time (NULL) - misc->elapsed_seconds; return; } // if - id = my_attribute->id; + id = strdup (my_attribute->id); open_clips_file (misc, my_attribute, daisy[misc->current].clips_file, daisy[misc->current].clips_anchor); while (1) @@ -182,8 +183,9 @@ void get_next_clips (misc_t *misc, my_attribute_t *my_attribute, eof = 1 - get_tag_or_label (misc, my_attribute, misc->reader); if (strcasecmp (misc->tag, "audio") == 0) { - misc->current_audio_file = - malloc (strlen (misc->daisy_mp) + strlen (my_attribute->src) + 5); + misc->current_audio_file = realloc + (misc->current_audio_file, + strlen (misc->daisy_mp) + strlen (my_attribute->src) + 5); get_path_name (misc->daisy_mp, convert_URL_name (misc, my_attribute->src), misc->current_audio_file); get_clips (misc, my_attribute); @@ -220,14 +222,15 @@ void get_next_clips (misc_t *misc, my_attribute_t *my_attribute, char *name; pw = getpwuid (geteuid ()); - quit_daisy_player (misc, daisy); + quit_daisy_player (misc, my_attribute, daisy); len = strlen (pw->pw_dir) + strlen (misc->bookmark_title) + strlen (get_mcn (misc)) + 100; name = malloc (len); snprintf (name, len, "%s/.daisy-player/%s%s", pw->pw_dir, misc->bookmark_title, get_mcn (misc)); unlink (name); - _exit (EXIT_FAILURE); + free (name); + _exit (EXIT_SUCCESS); } // if if (daisy[misc->playing].level <= misc->level) misc->displaying = misc->current = misc->playing; @@ -270,7 +273,7 @@ void view_page (misc_t *misc, daisy_t *daisy) void view_time (misc_t *misc, daisy_t *daisy) { float remain_seconds = 0, elapsed_seconds = 0; - + if (misc->playing == -1 || daisy[misc->current].screen != daisy[misc->playing].screen) return; @@ -400,9 +403,9 @@ void start_playing (misc_t *misc, daisy_t *daisy) failure (misc, "fork ()", errno); case 0: // child snprintf (tempo_str, 10, "%lf", misc->speed); - playfile (misc, misc->tmp_wav, "wav", misc->pulseaudio_device, + playfile (misc->tmp_wav, "wav", misc->pulseaudio_device, "pulseaudio", tempo_str); - exit (EXIT_SUCCESS); + _exit (EXIT_SUCCESS); default: // parent return; } // switch @@ -518,7 +521,7 @@ void write_wav (misc_t *misc, my_attribute_t *my_attribute, endwin (); beep (); printf ("%s: %s\n", misc->current_audio_file, strerror (e)); - _exit (-1); + _exit (EXIT_FAILURE); } // if madplay (misc->current_audio_file, begin, duration, out_cdr); r = open (out_cdr, O_RDONLY); @@ -536,7 +539,7 @@ void write_wav (misc_t *misc, my_attribute_t *my_attribute, misc->current += 1; } // while close (w); - playfile (misc, complete_cdr, "cdr", out_file, "wav", "1"); + playfile (complete_cdr, "cdr", out_file, "wav", "1"); free (out_file); free (out_cdr); free (complete_cdr); @@ -547,7 +550,8 @@ void write_wav (misc_t *misc, my_attribute_t *my_attribute, wmove (misc->screenwin, daisy[misc->playing].y, daisy[misc->playing].x); } // write_wav -void pause_resume (misc_t *misc, my_attribute_t *my_attribute, daisy_t *daisy) +void pause_resume (misc_t *misc, my_attribute_t *my_attribute, + daisy_t *daisy) { if (misc->playing < 0 && misc->pause_resume_playing < 0) return; @@ -556,7 +560,9 @@ void pause_resume (misc_t *misc, my_attribute_t *my_attribute, daisy_t *daisy) if (misc->playing > -1) { misc->pause_resume_playing = misc->playing; - misc->pause_resume_id = misc->current_id; + misc->pause_resume_id = realloc (misc->pause_resume_id, + strlen (misc->current_id) + 10); + strcpy (misc->pause_resume_id, misc->current_id); misc->playing = -1; misc->pause_resume_lsn_cursor = misc->lsn_cursor; kill_player (misc); @@ -571,13 +577,14 @@ void pause_resume (misc_t *misc, my_attribute_t *my_attribute, daisy_t *daisy) misc->pause_resume_lsn_cursor - 75 * 4); return; } // if + open_clips_file (misc, my_attribute, daisy[misc->playing].clips_file, daisy[misc->playing].clips_anchor); while (1) { get_next_clips (misc, my_attribute, daisy); if (strcmp (misc->pause_resume_id, misc->current_id) == 0) - { + { start_playing (misc, daisy); view_screen (misc, daisy); return; @@ -608,6 +615,7 @@ void store_to_disk (misc_t *misc, my_attribute_t *my_attribute, write_wav (misc, my_attribute, daisy, str); if (playing > -1) pause_resume (misc, my_attribute, daisy); + free (str); view_screen (misc, daisy); } // store_to_disk @@ -676,6 +684,8 @@ void help (misc_t *misc, my_attribute_t *my_attribute, daisy_t *daisy) wprintw (misc->screenwin, "%s\n", gettext ("L - switch to previous level")); wprintw (misc->screenwin, "%s\n", gettext + ("m - mute sound output on/off")); + wprintw (misc->screenwin, "%s\n", gettext ("n - search forwards")); wprintw (misc->screenwin, "%s\n", gettext ("N - search backwards")); @@ -704,7 +714,7 @@ void help (misc_t *misc, my_attribute_t *my_attribute, daisy_t *daisy) } // help void previous_item (misc_t *misc, daisy_t *daisy) -{ +{ if (misc->current == 0) return; while (daisy[misc->current].level > misc->level) @@ -716,7 +726,7 @@ void previous_item (misc_t *misc, daisy_t *daisy) } // previous_item void next_item (misc_t *misc, daisy_t *daisy) -{ +{ if (misc->current >= misc->total_items - 1) { beep (); @@ -737,7 +747,7 @@ void next_item (misc_t *misc, daisy_t *daisy) void calculate_times_3 (misc_t *misc, my_attribute_t *my_attribute, daisy_t *daisy) -{ +{ int x; xmlTextReaderPtr parse; htmlDocPtr doc; @@ -819,7 +829,7 @@ void calculate_times_3 (misc_t *misc, my_attribute_t *my_attribute, if (misc->total_time == 0) { beep (); - quit_daisy_player (misc, daisy); + quit_daisy_player (misc, my_attribute, daisy); printf ("%s\n", gettext ( "This book has no audio. Play this book with eBook-speaker")); _exit (EXIT_FAILURE); @@ -855,7 +865,7 @@ void change_level (misc_t *misc, my_attribute_t *my_attribute, previous_item (misc, daisy); view_screen (misc, daisy); wmove (misc->screenwin, daisy[misc->current].y, daisy[misc->current].x); -} // change_level +} // change_level void load_xml (misc_t *misc, my_attribute_t *my_attribute) { @@ -884,7 +894,7 @@ void load_xml (misc_t *misc, my_attribute_t *my_attribute) } // load_xml void save_xml (misc_t *misc) -{ +{ struct passwd *pw; char str[MAX_STR]; xmlTextWriterPtr writer; @@ -908,19 +918,23 @@ void save_xml (misc_t *misc) xmlFreeTextWriter (writer); } // save_xml -void quit_daisy_player (misc_t *misc, daisy_t *daisy) +void quit_daisy_player (misc_t *misc, my_attribute_t *my_attribute, + daisy_t *daisy) { view_screen (misc, daisy); endwin (); + system ("reset"); if (misc->cd_type != CDIO_DISC_MODE_CD_DA) xmlTextReaderClose (misc->reader); kill_player (misc); put_bookmark (misc); save_xml (misc); - close (misc->tmp_wav_fd); + if (misc->tmp_wav_fd > -1) + close (misc->tmp_wav_fd); unlink (misc->tmp_wav); puts (""); remove_tmp_dir (misc); + free_all (misc, my_attribute, daisy); if (misc->mounted_by_daisy_player == 0) return; snprintf (misc->cmd, MAX_CMD, @@ -1033,7 +1047,7 @@ void search (misc_t *misc, my_attribute_t *my_attribute, daisy_t *daisy, } // search void go_to_time (misc_t *misc, daisy_t *daisy, my_attribute_t *my_attribute) -{ +{ char time_str[10]; int secs; @@ -1080,6 +1094,7 @@ void go_to_time (misc_t *misc, daisy_t *daisy, my_attribute_t *my_attribute) misc->player_pid = play_track (misc, misc->pulseaudio_device, "pulseaudio", daisy[misc->current].first_lsn + (secs * 75)); misc->elapsed_seconds = time (NULL) - secs; + free (misc->prev_id); misc->prev_id = strdup (misc->current_id); return; } // if @@ -1088,8 +1103,9 @@ void go_to_time (misc_t *misc, daisy_t *daisy, my_attribute_t *my_attribute) open_clips_file (misc, my_attribute, daisy[misc->current].clips_file, daisy[misc->current].clips_anchor); + free (misc->current_id); misc->current_id = strdup (daisy[misc->current].first_id); - do + do { get_next_clips (misc, my_attribute, daisy); } while (misc->clip_begin / misc->speed < secs); @@ -1148,6 +1164,7 @@ void skip_left (misc_t *misc, my_attribute_t *my_attribute, misc->current_page_number = daisy[misc->current].page_number; open_clips_file (misc, my_attribute, daisy[misc->playing].clips_file, daisy[misc->playing].clips_anchor); + free (misc->current_id); misc->current_id = strdup (daisy[misc->playing].first_id); while (1) { @@ -1197,7 +1214,7 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, if (misc->cd_type != CDIO_DISC_MODE_CD_DA && misc->has_audio_tag == 0) { beep (); - quit_daisy_player (misc, daisy); + quit_daisy_player (misc, my_attribute, daisy); printf ("%s\n", gettext ( "This book has no audio. Play this book with eBook-speaker")); _exit (-1); @@ -1211,6 +1228,7 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, misc->just_this_item = -1; view_screen (misc, daisy); misc->playing = misc->displaying = misc->current; + free (misc->current_id); misc->current_id = strdup (""); misc->current_page_number = daisy[misc->playing].page_number; if (misc->player_pid > -1) @@ -1235,8 +1253,9 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, "cd \"%s\"; \"%s\" \"%s\" -d %s\n", wd, PACKAGE, misc->daisy_mp, misc->pulseaudio_device); switch (system (str)); - quit_daisy_player (misc, daisy); - _exit (0); + free (str); + quit_daisy_player (misc, my_attribute, daisy); + _exit (EXIT_SUCCESS); } // if if (misc->cd_type == CDIO_DISC_MODE_CD_DA) { @@ -1285,7 +1304,7 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, beep (); break; } // if - quit_daisy_player (misc, daisy); + quit_daisy_player (misc, my_attribute, daisy); snprintf (misc->cmd, MAX_CMD, "eject -mp %s", misc->cd_dev); switch (system (misc->cmd)); _exit (0); @@ -1374,6 +1393,13 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, } // if change_level (misc, my_attribute, daisy, 'L'); break; + case 'm': + if (fork () == 0) + { + pactl ("set-sink-mute", misc->pulseaudio_device, "toggle"); + _exit (EXIT_SUCCESS); + } // if + break; case 'n': if (misc->discinfo) { @@ -1407,8 +1433,8 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, save_xml (misc); break; case 'q': - quit_daisy_player (misc, daisy); - exit (EXIT_SUCCESS); + quit_daisy_player (misc, my_attribute, daisy); + return; case 's': kill_player (misc); if (misc->cd_type != CDIO_DISC_MODE_CD_DA) @@ -1458,7 +1484,7 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, char *str; pw = getpwuid (geteuid ()); - quit_daisy_player (misc, daisy); + quit_daisy_player (misc, my_attribute, daisy); len = strlen (pw->pw_dir) + strlen (misc->bookmark_title) + strlen (get_mcn (misc) + 100); @@ -1466,7 +1492,8 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, snprintf (str, len, "%s/.daisy-player/%s%s", pw->pw_dir, misc->bookmark_title, get_mcn (misc)); unlink (str); - _exit (0); + free (str); + _exit (EXIT_SUCCESS); } // if } // if misc->player_pid = play_track (misc, misc->pulseaudio_device, "pulseaudio", @@ -1561,18 +1588,18 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, case '1': if (fork () == 0) { - pactl (misc->pulseaudio_device, "-5%"); - _exit (0); + pactl ("set-sink-volume", misc->pulseaudio_device, "-5%"); + _exit (EXIT_SUCCESS); } // if break; case 'V': case '7': if (fork () == 0) { - pactl (misc->pulseaudio_device, "+5%"); - _exit (0); - } // if - break; + pactl ("set-sink-volume", misc->pulseaudio_device, "+5%"); + _exit (EXIT_SUCCESS); + } // if + break; default: beep (); break; @@ -1625,7 +1652,7 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, char *str; pw = getpwuid (geteuid ()); - quit_daisy_player (misc, daisy); + quit_daisy_player (misc, my_attribute, daisy); len = strlen (pw->pw_dir) + strlen (misc->bookmark_title) + strlen (get_mcn (misc)) + 100; @@ -1633,7 +1660,8 @@ void browse (misc_t *misc, my_attribute_t *my_attribute, snprintf (str, len, "%s/.daisy-player/%s%s", pw->pw_dir, misc->bookmark_title, get_mcn (misc)); unlink (str); - _exit (0); + free (str); + return; } // if if (misc->just_this_item > -1) { @@ -1683,8 +1711,10 @@ char *get_mount_point (misc_t *misc) { misc->daisy_mp = strdup (strchr (str, ' ') + 1); *strchr (misc->daisy_mp, ' ') = 0; + free (str); return misc->daisy_mp; } // if + free (str); return NULL; } // get_mount_point @@ -1777,9 +1807,8 @@ void handle_discinfo (misc_t *misc, my_attribute_t *my_attribute, int main (int argc, char *argv[]) { - int opt; - char str[MAX_STR], DISCINFO_HTML[MAX_STR], *start_wd; + char str[MAX_STR], DISCINFO_HTML[MAX_STR]; char *c_opt, *d_opt, cddb_opt; misc_t misc; my_attribute_t my_attribute; @@ -1795,21 +1824,29 @@ int main (int argc, char *argv[]) misc.cd_type = -1; misc.ignore_bookmark = 0; *misc.bookmark_title = 0; + misc.daisy_mp = malloc (10); + *misc.daisy_mp = 0;; misc.current_id = strdup (""); - misc.prev_id = misc.audio_id = strdup (""); + misc.prev_id = strdup (""); + misc.audio_id = strdup (""); + misc.current_audio_file = strdup (""); + *misc.pulseaudio_device = 0; + misc.pause_resume_id = strdup (""); + *misc.search_str = 0; misc.total_time = 0; *misc.daisy_title = 0; *misc.ncc_html = 0; strncpy (misc.cd_dev, "/dev/sr0", MAX_STR - 1); + my_attribute.id = strdup (""); + my_attribute.idref = strdup (""); + my_attribute.src = strdup (""); sigfillset (&usr_action.sa_mask); usr_action.sa_handler = player_ended; - usr_action.sa_flags = 0; + usr_action.sa_flags = SA_RESTART; sigaction (SIGCHLD, &usr_action, NULL); *misc.xmlversion = 0; make_tmp_dir (&misc); - misc.pulseaudio_device = strdup (""); misc.cddb_flag = 'y'; - misc.pause_resume_id = strdup (""); if (! setlocale (LC_ALL, "")) failure (&misc, "setlocale ()", errno); if (! setlocale (LC_NUMERIC, "C")) @@ -1817,7 +1854,6 @@ int main (int argc, char *argv[]) textdomain (PACKAGE); snprintf (str, MAX_STR, "%s/", LOCALEDIR); bindtextdomain (PACKAGE, str); - start_wd = strdup (get_current_dir_name ()); opterr = 0; misc.use_OPF = misc.use_NCX = 0; c_opt = d_opt = NULL; @@ -1831,11 +1867,10 @@ int main (int argc, char *argv[]) c_opt = strdup (misc.cd_dev); break; case 'd': - misc.pulseaudio_device = strdup (optarg); + strcpy (misc.pulseaudio_device, optarg); d_opt = strdup (misc.pulseaudio_device); break; case 'h': - free (start_wd); remove_tmp_dir (&misc); usage (0); break; @@ -1877,7 +1912,7 @@ int main (int argc, char *argv[]) if (c_opt) strncpy (misc.cd_dev, c_opt, MAX_STR - 1); if (d_opt) - misc.pulseaudio_device = strdup (d_opt); + strcpy (misc.pulseaudio_device, d_opt); if (cddb_opt) misc.cddb_flag = cddb_opt; initscr (); @@ -1911,7 +1946,7 @@ int main (int argc, char *argv[]) beep (); remove_tmp_dir (&misc); printf ("%s: %s\n", argv[optind], strerror (e)); - _exit (1); + _exit (EXIT_FAILURE); } // if // determine filetype @@ -1941,11 +1976,10 @@ int main (int argc, char *argv[]) else { // relative path - misc.daisy_mp = malloc (strlen (start_wd) + - strlen (argv[optind]) + 5); - strcpy (misc.daisy_mp, start_wd); - strcat (misc.daisy_mp, "/"); - strcat (misc.daisy_mp, argv[optind]); + misc.daisy_mp = realloc (misc.daisy_mp, + strlen (get_current_dir_name ()) + strlen (argv[optind]) + 5); + sprintf (misc.daisy_mp, "%s/%s", + get_current_dir_name (), argv[optind]); } // if } // directory else @@ -1977,8 +2011,8 @@ int main (int argc, char *argv[]) if (strcasecmp (dirent->d_name, ".") == 0 || strcasecmp (dirent->d_name, "..") == 0) continue; - misc.daisy_mp = - malloc (strlen (misc.tmp_dir) + strlen (dirent->d_name) + 5); + misc.daisy_mp = realloc (misc.daisy_mp, + strlen (misc.tmp_dir) + strlen (dirent->d_name) + 5); sprintf (misc.daisy_mp, "%s/%s", misc.tmp_dir, dirent->d_name); entries++; } // while @@ -2018,10 +2052,12 @@ int main (int argc, char *argv[]) misc.cd_dev); printf ("\n%s: %s\n", misc.str, strerror (e)); fflush (stdout); - _exit (-1); + _exit (EXIT_FAILURE); } // if if (stat (misc.cd_dev, &buf) == -1) + { failure (&misc, misc.cd_dev, errno); + } // if if (((buf.st_mode & S_IFMT) == S_IFBLK) != 1) { endwin (); @@ -2032,7 +2068,7 @@ int main (int argc, char *argv[]) remove_tmp_dir (&misc); printf ("\n%s is not a cd device\n", misc.cd_dev); fflush (stdout); - _exit (-1); + _exit (EXIT_FAILURE); } // if snprintf (misc.cmd, MAX_CMD, "eject -tp %s", misc.cd_dev); switch (system (misc.cmd)); @@ -2048,7 +2084,7 @@ int main (int argc, char *argv[]) endwin (); printf ("%s\n", gettext ("No Daisy CD in drive.")); remove_tmp_dir (&misc); - _exit (0); + _exit (EXIT_FAILURE); } // if cd = cdio_open (misc.cd_dev, DRIVER_UNKNOWN); } while (cd == NULL); @@ -2060,7 +2096,7 @@ int main (int argc, char *argv[]) endwin (); printf ("%s\n", gettext ("No Daisy CD in drive.")); remove_tmp_dir (&misc); - _exit (0); + _exit (EXIT_FAILURE); } // if switch (misc.cd_type = cdio_get_discmode (cd)) { @@ -2090,7 +2126,7 @@ int main (int argc, char *argv[]) endwin (); printf ("%s\n", gettext ("No Daisy CD in drive.")); remove_tmp_dir (&misc); - _exit (0); + _exit (EXIT_FAILURE); } // if snprintf (misc.cmd, MAX_CMD, "udisksctl mount -b %s > /dev/null", misc.cd_dev); @@ -2113,6 +2149,14 @@ int main (int argc, char *argv[]) daisy = get_number_of_tracks (&misc); get_toc_audiocd (&misc, daisy); misc.daisy_mp = strdup ("/tmp"); + for (misc.current = 0; misc.current < misc.total_items; misc.current++) + { + daisy[misc.current].xml_file = strdup (""); + daisy[misc.current].anchor = strdup (""); + daisy[misc.current].clips_file = strdup (""); + daisy[misc.current].clips_anchor = strdup (""); + daisy[misc.current].orig_smil = strdup (""); + } // for break; } // TRACK_COUNT_AUDIO case CDIO_DISC_MODE_CD_I: @@ -2141,9 +2185,19 @@ int main (int argc, char *argv[]) remove_tmp_dir (&misc); failure (&misc, str, e); } // if + misc.current = 0; + misc.reader = FALSE; if (misc.cd_type != CDIO_DISC_MODE_CD_DA) { daisy = create_daisy_struct (&misc, &my_attribute, daisy); + for (misc.current = 0; misc.current < misc.total_items; misc.current++) + { + daisy[misc.current].xml_file = strdup (""); + daisy[misc.current].anchor = strdup (""); + daisy[misc.current].clips_file = strdup (""); + daisy[misc.current].clips_anchor = strdup (""); + daisy[misc.current].orig_smil = strdup (""); + } // for snprintf (DISCINFO_HTML, MAX_STR - 1, "discinfo.html"); if (access (DISCINFO_HTML, R_OK) == 0) handle_discinfo (&misc, &my_attribute, daisy, DISCINFO_HTML); @@ -2198,9 +2252,13 @@ int main (int argc, char *argv[]) xmlTextReaderPtr last; if (! (doc = htmlParseFile (daisy[i].xml_file, "UTF-8"))) + { failure (&misc, daisy[i].xml_file, errno); + } // if if (! (last = xmlReaderWalker (doc))) + { failure (&misc, daisy[i].xml_file, errno); + } // if while (1) { if (! get_tag_or_label (&misc, &my_attribute, last)) @@ -2248,14 +2306,15 @@ int main (int argc, char *argv[]) "----------------------------------------"); wprintw (misc.titlewin, "----------------------------------------"); mvwprintw (misc.titlewin, 1, 0, "%s ", gettext ("Press 'h' for help")); - misc.level = 1; - misc.search_str = strdup (""); + misc.level = 1; snprintf (misc.tmp_wav, MAX_STR, "%s/daisy-player.wav", misc.tmp_dir); if ((misc.tmp_wav_fd = mkstemp (misc.tmp_wav)) == 01) + { failure (&misc, "mkstemp ()", errno); + } // if misc.pause_resume_playing = -1; if (misc.ignore_bookmark) select_next_output_device (&misc, daisy); - browse (&misc, &my_attribute, daisy, start_wd); - return 0; + browse (&misc, &my_attribute, daisy, get_current_dir_name ()); + return EXIT_SUCCESS; } // main |