#include <stdio.h>

#include <exec/types.h>
#include <exec/tasks.h>
#include <exec/ports.h>

#include <libraries/dosextens.h>

#include <proto/exec.h>
#include <proto/dos.h>

extern struct DOSBase *DOSBase;

struct DosPacket *p;
struct Process *pro;
struct Message m;

main(argc, argv)
int argc;
char *argv[];
{
    struct MsgPort *x;

    if( argc != 3 ) {
        printf( "Usage: %s <device> 0|1\n" );
        exit(0);
    }

    p = (struct DosPacket *)malloc( sizeof( struct DosPacket ) );

    if( p == NULL ) exit( 0 );

    pro = (struct Process *)FindTask( 0 );

    m.mn_Node.ln_Name = (char *)p;

    p->dp_Link = &m;
    p->dp_Port = &pro->pr_MsgPort;

    p->dp_Type = ACTION_INHIBIT;
    p->dp_Arg1 = (atoi(argv[2]))?TRUE:FALSE;

    x = DeviceProc( argv[1] );

    if( x ) {
        PutMsg( x, &m );
        WaitPort( &pro->pr_MsgPort );
        (void)GetMsg( &pro->pr_MsgPort );
    } else {
        printf( "No handler for %s\n", argv[1] );
    }

    free( p );

}


