int initialize_contents (void) { saved_braillePageNumberFormat = ud->brl_page_num_format; widestrcpy(saved_printPageNumber, ud->print_page_number, -1); widestrcpy(saved_printPageNumberFirst, ud->print_page_number_first, -1); widestrcpy(saved_printPageNumberLast, ud->print_page_number_last, -1); ud->after_contents = 1; saved_udContents = ud->contents; saved_linesOnPage = ud->lines_on_page; saved_braillePageNumber = ud->braille_page_number; ud->contents = 1; firstHeading = NULL; lastHeading = &heading; saved_outFile = ud->outFile; strcpy (tempFileName, ud->writeable_path); strcat (tempFileName, "lbx_body.temp"); if (!(tempFile = fopen (tempFileName, "w"))) { lou_logPrint ("Can't open temporary file.\n"); return 0; } ud->outFile = tempFile; ud->lines_on_page = 0; if (ud->has_contentsheader) ud->braille_page_number = ud->beginning_braille_page_number; else ud->braille_page_number = 1; return 1; }
int initialize_contents (void) { saved_braillePageNumberFormat = ud->brl_page_num_format; widestrcpy (saved_printPageNumber, ud->print_page_number); widestrcpy (saved_printPageNumberFirst, ud->print_page_number_first); widestrcpy (saved_printPageNumberLast, ud->print_page_number_last); widestrcpy (saved_pageSeparatorNumberFirst, ud->page_separator_number_first); widestrcpy (saved_pageSeparatorNumberLast, ud->page_separator_number_last); saved_runningHeadLength = ud->running_head_length; saved_footerLength = ud->footer_length; widecharcpy (saved_runningHead, ud->running_head, ud->running_head_length); widecharcpy (saved_footer, ud->footer, ud->footer_length); ud->after_contents = 1; saved_udContents = ud->contents; saved_linesOnPage = ud->lines_on_page; saved_braillePageNumber = ud->braille_page_number; ud->contents = 1; firstHeading = NULL; lastHeading = NULL; saved_lastHeading = NULL; saved_firstHeading = NULL; saved_outFile = ud->outFile; strcpy (tempFileName, lbu_getWriteablePath ()); strcat (tempFileName, "lbx_body.temp"); if (!(tempFile = fopen (tempFileName, "w"))) { logMessage (LOG_ERROR, "Can't open temporary file.\n"); return 0; } ud->outFile = tempFile; ud->lines_on_page = 0; if (ud->has_contentsheader) ud->braille_page_number = ud->beginning_braille_page_number; else ud->braille_page_number = 1; return 1; }
int make_contents (void) { SaveHeading *currentHeading = NULL; int old_braillePageNumber; sem_act action; int bytesRead; StyleType *style; if (!ud->contents) return 1; old_braillePageNumber = ud->braille_page_number; fclose (tempFile); ud->outFile = saved_outFile; if (firstHeading != NULL) { ud->lines_on_page = saved_linesOnPage; ud->braille_page_number = saved_braillePageNumber; styleSpec = &ud->style_stack[ud->style_top]; styleSpec->curBrlNumFormat = saved_braillePageNumberFormat; ud->brl_page_num_format = saved_braillePageNumberFormat; widestrcpy(ud->print_page_number, saved_printPageNumber, -1); widestrcpy(ud->print_page_number_first, saved_printPageNumberFirst, -1); widestrcpy(ud->print_page_number_last, saved_printPageNumberLast, -1); do_newpage (); ud->contents = 2; currentHeading = firstHeading; while (currentHeading != NULL) { switch (currentHeading->action) { case contentsheader: default: action = currentHeading->action; break; case heading1: action = contents1; break; case heading2: action = contents2; break; case heading3: action = contents3; break; case heading4: action = contents4; break; case heading5: action = contents5; break; case heading6: action = contents6; break; case heading7: action = contents7; break; case heading8: action = contents8; break; case heading9: action = contents9; break; case heading10: action = contents10; break; } style = action_to_style (action); start_style (style); memcpy (ud->translated_buffer, currentHeading->headingChars, currentHeading->headingLength * CHARSIZE); ud->translated_length = currentHeading->headingLength; end_style (style); currentHeading = currentHeading->next; } do_newpage (); ud->prelim_pages = ud->braille_page_number; ud->braille_page_number = saved_braillePageNumber; /*Free headings */ currentHeading = firstHeading; while (currentHeading->next != NULL) { lastHeading = currentHeading; currentHeading = currentHeading->next; free (lastHeading); } ud->contents = saved_udContents; ud->braille_page_number = old_braillePageNumber; } if (!(tempFile = fopen (tempFileName, "r"))) { lou_logPrint ("Can't open temporary file.\n"); return 0; } do { bytesRead = fread (ud->translated_buffer, 1, sizeof (ud->translated_buffer), tempFile); fwrite (ud->translated_buffer, 1, bytesRead, ud->outFile); } while (bytesRead != 0); fclose (tempFile); return 1; }