int main(int argc, char **argv) { const char *filename = "pages.count"; int rc; unsigned long by = 1, count = 0; if (argc > 1) { if (sscanf(argv[1], "%lu", &by) != 1) { fprintf(stderr, ERRPREFIX "Illegal number: `%s'.\n", argv[1]); exit(EXIT_FAILURE); } if (argc > 2) filename = argv[2]; if (argc > 3) { fprintf(stderr, ERRPREFIX "Too many arguments.\n"); exit(EXIT_FAILURE); } } rc = pcf_getcount(filename, &count); if (rc == 0) printf("Initial count returned by pcf_getcount(): %lu.\n", count); else fprintf(stderr, "? Error from pcf_getcount(), return code is %d.\n", rc); rc = pcf_inccount(filename, by); exit(rc == 0? EXIT_SUCCESS: EXIT_FAILURE); }
int eprn_output_page(gx_device *dev, int num_copies, int flush) { eprn_Eprn *eprn = &((eprn_Device *)dev)->eprn; int rc; #ifdef EPRN_TRACE clock_t start_time = clock(); if_debug0(EPRN_TRACE_CHAR, "! eprn_output_page()...\n"); #endif /* Initialize eprn_get_planes() data */ eprn->next_y = 0; if (eprn->intensity_rendering == eprn_IR_FloydSteinberg) { /* Fetch the first line and store it in 'next_scan_line'. */ if (eprn_fetch_scan_line((eprn_Device *)dev, &eprn->next_scan_line) == 0) eprn->next_y++; } /* Ship out */ rc = gdev_prn_output_page(dev, num_copies, flush); /* CUPS page accounting message. The CUPS documentation is not perfectly clear on whether one should generate this message before printing a page or after printing has been successful. The rasterto* filters generate it before sending the page, but as the scheduler uses these messages for accounting, this seems unfair. */ if (rc == 0 && eprn->CUPS_accounting) eprintf2("PAGE: %ld %d\n", dev->ShowpageCount, num_copies); /* The arguments are the number of the page, starting at 1, and the number of copies of that page. */ #ifndef EPRN_NO_PAGECOUNTFILE /* On success, record the number of pages printed */ if (rc == 0 && eprn->pagecount_file != NULL) { assert(num_copies > 0); /* because of signed/unsigned */ if (pcf_inccount(eprn->pagecount_file, num_copies) != 0) { /* pcf_inccount() has issued an error message. */ eprintf( " No further attempts will be made to access the page count file.\n"); gs_free(dev->memory->non_gc_memory, eprn->pagecount_file, strlen(eprn->pagecount_file) + 1, sizeof(char), "eprn_output_page"); eprn->pagecount_file = NULL; } } #endif /* !EPRN_NO_PAGECOUNTFILE */ /* If soft tumble has been demanded, ensure the get_initial_matrix procedure is consulted for the next page */ if (eprn->soft_tumble) eprn_forget_defaultmatrix(dev->memory->non_gc_memory); #ifdef EPRN_TRACE if_debug1(EPRN_TRACE_CHAR, "! eprn_output_page() terminates after %f s.\n", ((float)(clock() - start_time))/CLOCKS_PER_SEC); #endif return rc; }