/// /// CreateMailTransferList // create a new list for transfers struct MailTransferList *CreateMailTransferList(void) { struct MailTransferList *tlist; ENTER(); // at first create the list itself if((tlist = AllocSysObjectTags(ASOT_LIST, ASOLIST_Size, sizeof(*tlist), ASOLIST_Min, TRUE, TAG_DONE)) != NULL) { // now create the arbitration semaphore if((tlist->lockSemaphore = AllocSysObjectTags(ASOT_SEMAPHORE, TAG_DONE)) != NULL) { // no transfers in the list so far tlist->count = 0; } else { // free the list again on failure FreeSysObject(ASOT_LIST, tlist); tlist = NULL; } } RETURN(tlist); return tlist; }
struct MsgPort *ami_print_init(void) { ami_print_info.msgport = AllocSysObjectTags(ASOT_PORT, ASO_NoTrack,FALSE, TAG_DONE); return ami_print_info.msgport; }
void ami_schedule_open_timer(void) { msgport = AllocSysObjectTags(ASOT_PORT, ASO_NoTrack,FALSE, TAG_DONE); tioreq = (struct TimeRequest *)AllocSysObjectTags(ASOT_IOREQUEST, ASOIOR_Size,sizeof(struct TimeRequest), ASOIOR_ReplyPort,msgport, ASO_NoTrack,FALSE, TAG_DONE); OpenDevice("timer.device", UNIT_WAITUNTIL, (struct IORequest *)tioreq, 0); TimerBase = (struct Device *)tioreq->Request.io_Device; ITimer = (struct TimerIFace *)GetInterface((struct Library *)TimerBase,"main",1,NULL); }
APTR ami_misc_itempool_create(int size) { #ifdef __amigaos4__ return AllocSysObjectTags(ASOT_ITEMPOOL, ASOITEM_MFlags, MEMF_PRIVATE, ASOITEM_ItemSize, size, ASOITEM_GCPolicy, ITEMGC_AFTERCOUNT, ASOITEM_GCParameter, 100, TAG_DONE); #else return CreatePool(MEMF_ANY, 20 * size, size); #endif }
void ami_print(struct hlcache_handle *c, int copies) { double height; float scale = nsoption_int(print_scale) / 100.0; if(ami_print_info.msgport == NULL) ami_print_init(); #ifdef __amigaos4__ if(!(ami_print_info.PReq = (struct IODRPTagsReq *)AllocSysObjectTags(ASOT_IOREQUEST, ASOIOR_Size, sizeof(struct IODRPTagsReq), ASOIOR_ReplyPort, ami_print_info.msgport, ASO_NoTrack, FALSE, TAG_DONE))) return; #else if(!(ami_print_info.PReq = (struct IODRPTagsReq *)CreateIORequest(ami_print_info.msgport, sizeof(struct IODRPTagsReq)))) return; #endif if(OpenDevice("printer.device", nsoption_int(printer_unit), (struct IORequest *)ami_print_info.PReq, 0)) { amiga_warn_user("CompError","printer.device"); return; } ami_print_info.PD = (struct PrinterData *)ami_print_info.PReq->io_Device; ami_print_info.PED = &ami_print_info.PD->pd_SegmentData->ps_PED; ami_print_info.ps = print_make_settings(PRINT_DEFAULT, nsurl_access(hlcache_handle_get_url(c)), ami_layout_table); ami_print_info.ps->page_width = ami_print_info.PED->ped_MaxXDots; ami_print_info.ps->page_height = ami_print_info.PED->ped_MaxYDots; ami_print_info.ps->scale = scale; if(!print_set_up(c, &amiprinter, ami_print_info.ps, &height)) { amiga_warn_user("PrintError","print_set_up() returned false"); ami_print_close_device(); return; } height *= ami_print_info.ps->scale; ami_print_info.pages = height / ami_print_info.ps->page_height; ami_print_info.c = c; ami_print_progress(); while(ami_print_cont()); /* remove while() for async printing */ }
void ami_print(struct hlcache_handle *c, int copies) { double height, print_height; float scale = option_print_scale / 100.0; if(!ami_print_info.msgport) return; if(!(ami_print_info.PReq = (struct IODRPTagsReq *)AllocSysObjectTags(ASOT_IOREQUEST, ASOIOR_Size, sizeof(struct IODRPTagsReq), ASOIOR_ReplyPort, ami_print_info.msgport, ASO_NoTrack, FALSE, TAG_DONE))) return; if(OpenDevice("printer.device", option_printer_unit, (struct IORequest *)ami_print_info.PReq, 0)) { warn_user("CompError","printer.device"); return; } ami_print_info.PD = (struct PrinterData *)ami_print_info.PReq->io_Device; ami_print_info.PED = &ami_print_info.PD->pd_SegmentData->ps_PED; ami_print_info.ps = print_make_settings(PRINT_DEFAULT, content_get_url(c), &nsfont); ami_print_info.ps->page_width = ami_print_info.PED->ped_MaxXDots; ami_print_info.ps->page_height = ami_print_info.PED->ped_MaxYDots; ami_print_info.ps->scale = scale; if(!print_set_up(c, &amiprinter, ami_print_info.ps, &height)) { warn_user("PrintError","print_set_up() returned false"); ami_print_close_device(); return; } height *= ami_print_info.ps->scale; ami_print_info.pages = height / ami_print_info.ps->page_height; ami_print_info.c = c; ami_print_progress(); while(ami_print_cont()); /* remove while() for async printing */ }
/// /// CreateMailTransferNode // create a new transfer node, a given mail pointer will be memdup()'ed struct MailTransferNode *CreateMailTransferNode(struct Mail *mail, const ULONG flags) { struct MailTransferNode *tnode; ENTER(); if((tnode = AllocSysObjectTags(ASOT_NODE, ASONODE_Size, sizeof(*tnode), ASONODE_Min, TRUE, TAG_DONE)) != NULL) { // clear the structure, ASOT() does not do that for us memset(tnode, 0, sizeof(*tnode)); tnode->tflags = flags; tnode->mail = mail; ReferenceMail(mail); } RETURN(tnode); return tnode; }
/// CreateNewSignature // Initializes a new SignatureNode struct SignatureNode *CreateNewSignature(void) { struct SignatureNode *sn; ENTER(); if((sn = AllocSysObjectTags(ASOT_NODE, ASONODE_Size, sizeof(*sn), ASONODE_Min, TRUE, TAG_DONE)) != NULL) { // initialize all variables as AllocSysObject() does not clear the memory memset(sn, 0, sizeof(*sn)); // now we fill the SignatureNode structure with some sensible defaults sn->active = TRUE; // default to use a signature file to be compatible with YAM <= 2.7 sn->useSignatureFile = TRUE; } RETURN(sn); return sn; }
ULONG initBase(struct LibraryHeader *lib) { ENTER(); if((DOSBase = (APTR)OpenLibrary("dos.library", 37)) != NULL && GETINTERFACE(IDOS, DOSBase)) { if((UtilityBase = (APTR)OpenLibrary("utility.library", 37)) != NULL && GETINTERFACE(IUtility, UtilityBase)) { // we have to please the internal utilitybase // pointers of libnix and clib2 #if !defined(__NEWLIB__) && !defined(__AROS__) __UtilityBase = (APTR)UtilityBase; #if defined(__amigaos4__) __IUtility = IUtility; #endif #endif // setup the debugging stuff #if defined(DEBUG) SetupDebug(); #endif #if defined(__amigaos4__) if((DiskfontBase = OpenLibrary("diskfont.library", 50)) != NULL && GETINTERFACE(IDiskfont, DiskfontBase)) { #endif #if defined(__amigaos4__) lib->pool = AllocSysObjectTags(ASOT_MEMPOOL, ASOPOOL_MFlags, MEMF_SHARED, ASOPOOL_Puddle, 4096, ASOPOOL_Threshold, 512, ASOPOOL_Name, "codesets.library pool", ASOPOOL_LockMem, FALSE, TAG_DONE); #else lib->pool = CreatePool(MEMF_ANY, 4096, 512); #endif if(lib->pool != NULL) { if(codesetsInit(&lib->codesets) == TRUE) { lib->systemCodeset = (struct codeset *)GetHead((struct List *)&lib->codesets); if((LocaleBase = (APTR)OpenLibrary("locale.library", 37)) != NULL && GETINTERFACE(ILocale, LocaleBase)) { getSystemCodeset(lib); } RETURN(TRUE); return TRUE; } } #if defined(__amigaos4__) } #endif } } freeBase(lib); RETURN(FALSE); return FALSE; }