int main(int argc, char **argv) { bitmap *sieve = bitmap_new(0, SIEVEFILE); if (!sieve){ perror(SIEVEFILE); exit(errno); } U64 start = argc > 1 ? atoll(argv[1]) : 0; U64 size = argc > 2 ? atoll(argv[2]) : 1000*1000*1000; bitmap *b = bitmap_new(size >> 1, NULL); bitmap_fill(b, 1); if (start == 0) bitmap_set(b, 0, 0); U64 pmax = (U64)sqrtl(start+size); #ifdef VERBOSE printf("pmax = %llu\n", pmax); #endif U64 p, i; for (p = 3; p < pmax;){ #ifdef VERBOSE printf("sieving %llu\r", p); fflush(stdout); #endif for ( i = p + p - (start % p) ; i <= size ; i += p ) { if ((i & 1) == 0) continue; /* skip even */ bitmap_set( b, i>>1, 0 ); } for(p += 2; !bitmap_get(sieve, p>>1); p += 2); /* seek next prime */ } char filename[256]; snprintf(filename, 256, "%llu~%llu.bm", start, start+size); #ifdef VERBOSE printf("saving %s\n", filename); #endif bitmap_save(b, filename); return 0; }
void ami_file_save(int type, char *fname, struct Window *win, struct hlcache_handle *object, struct hlcache_handle *favicon, struct browser_window *bw) { BPTR lock, fh; const char *source_data; ULONG source_size; struct bitmap *bm; ami_update_pointer(win, GUI_POINTER_WAIT); if(ami_download_check_overwrite(fname, win, 0)) { switch(type) { case AMINS_SAVE_SOURCE: if((source_data = content_get_source_data(object, &source_size))) { BPTR fh; if(fh = FOpen(fname, MODE_NEWFILE,0)) { FWrite(fh, source_data, 1, source_size); FClose(fh); } } break; case AMINS_SAVE_TEXT: save_as_text(object, fname); break; case AMINS_SAVE_COMPLETE: if(lock = CreateDir(fname)) { UnLock(lock); save_complete(object, fname, ami_file_set_type); amiga_icon_superimpose_favicon(fname, favicon, NULL); } break; case AMINS_SAVE_PDF: #ifdef WITH_PDF_EXPORT if(save_as_pdf(object, fname)) amiga_icon_superimpose_favicon(fname, favicon, "pdf"); #endif break; case AMINS_SAVE_IFF: if((bm = content_get_bitmap(object))) { bm->url = (char *)nsurl_access(hlcache_handle_get_url(object)); bm->title = (char *)content_get_title(object); bitmap_save(bm, fname, 0); } #ifdef WITH_NS_SVG else if(ami_mime_compare(object, "svg") == true) { ami_save_svg(object, fname); } #endif break; case AMINS_SAVE_SELECTION: if(source_data = browser_window_get_selection(bw)) { if(fh = FOpen(fname, MODE_NEWFILE,0)) { FWrite(fh, source_data, 1, strlen(source_data)); FClose(fh); } free((void *)source_data); } break; } if(object) SetComment(fname, nsurl_access(hlcache_handle_get_url(object))); } ami_update_pointer(win, GUI_POINTER_DEFAULT); }