/*
 *  FILE: message.c
 *  Support routines for dynamic (de)allocation of [extended] message structs
 *
 *  Public Domain, but keep my name in it as the original author.
 *  31-Aug-88	Jan Sven Trabandt   first release version
 */


#include "gimmelib/gimmefuncs.h"


struct Message *gimmeMessage( size, replyport )
    ULONG	    size;
    struct MsgPort  *replyport;
{
    struct Message  *msg;

#ifdef GIMME_WIMPY
    if( size > 0x0FFFFL ) {
	return( NULL );
    }
#endif
    msg = (struct Message *) AllocMem( size, MEMF_PUBLIC );
    if( msg ) {
	msg->mn_Node.ln_Type = NT_FREEMSG;
	msg->mn_Node.ln_Pri = 0;
	msg->mn_Node.ln_Name = NULL;
	msg->mn_ReplyPort = replyport;
	msg->mn_Length = size;
    }
    return( msg );
} /* gimmeMessage */


short getRidOfMessage( msg )
    struct Message  *msg;
{
#ifdef GIMME_WIMPY
    if( !msg || !msg->mn_Length > 0 ) {
	return( -1 );
    }
#endif
    FreeMem( msg, (ULONG) msg->mn_Length );
} /* getRidOfMessage */
