Listing 4 event class implementation

#include "event.h"
#include <string.h>

event::event( const char* name ) {

   APIRET rc;

   // --------------------------
   // "\\sem32\\" + name + NULL;
   // --------------------------

   char* fullname = new char[ strlen( name ) + 8 ];
   strcpy( fullname, "\\SEM32\\" );
   strcpy( fullname + 7, name );

   // ---------------------------
   // Try creating the semaphore.
   // ---------------------------

   rc = DosCreateEventSem( fullname, &handle, 0, 0 );

   if ( rc == 285 ) {
      // -------------------------------------
      // Duplicate name encountered.  try just
      // opening the semaphore
      // -------------------------------------

      handle = 0;

      DosOpenEventSem( fullname, &handle );

   }

   // ----------------------
   // block on the semaphore
   // ----------------------

   ULONG dummy;
   DosWaitEventSem( handle, -1 ); //infinite wait

   // ----------------------------------
   // Reset the semaphore
   // ----------------------------------

   DosResetEventSem( handle, &dummy );

   delete [] fullname;
}


void event::post( const char* name ) {

   HEV handle;

   // --------------------------
   // "\\sem32\\" + name + NULL;
   // --------------------------

   char* fullname = new char[ strlen( name ) + 8 ];
   strcpy( fullname, "\\SEM32\\" );
   strcpy( fullname + 7, name );

   handle = 0;
   DosOpenEventSem( fullname, &handle );

   DosPostEventSem( handle );

   delete [] fullname;
}
//End of File