ftp.nice.ch/pub/next/unix/music/cm.sd.tar.gz#/midi/sgi/MIMultiPort.c

This is MIMultiPort.c in view mode; [Download] [Up]

#include "MIMultiPort.h"
#include "stdio.h"
#include "unix-flavors.h"

MIMultiPort *
MIMPortNew(MIport *port) 
{
  MIMultiPort *result = (MIMultiPort *) malloc(sizeof(MIMultiPort));
  
  if (port)
    result->port = port;
  else
    result->port = MInewport();
#ifdef DEBUG0
    fprintf(stderr,"New Multiport with MIDI Port: %ld\n",result->port);
#endif
  result->n_users = 0;
  return result;
}

int MImulti_open(MIMultiPort *port, char* mode, MIconfig* config)
{ 
  kern_return_t r;

  port->n_users++;
  if(port->n_users == 1) {
#ifdef DEBUG
    fprintf(stderr,"%Opening MIDI port\n");
#endif    
    r = MIopen(port->port,mode,config);
    if (r < 0) {
      perror("Cannot open MIDI port\n");
      suicide(-2);
    }
  } else
    r = KERN_SUCCESS;
  return r;
}

void MImulti_close(MIMultiPort *port)
{
  port->n_users--;
  if(port->n_users == 0) 
    MIclose(port->port);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.