Exemple #1
0
///
/// 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;
}
Exemple #2
0
struct MsgPort *ami_print_init(void)
{
	ami_print_info.msgport = AllocSysObjectTags(ASOT_PORT,
				ASO_NoTrack,FALSE,
				TAG_DONE);

	return ami_print_info.msgport;
}
Exemple #3
0
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);
}
Exemple #4
0
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
}
Exemple #5
0
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 */
}
Exemple #6
0
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 */
}
Exemple #7
0
///
/// 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;
}
Exemple #8
0
/// 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;
}
Exemple #9
0
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;
}