home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / hamradio / wattcp.zip / WATTCPD.C < prev   
C/C++ Source or Header  |  1992-07-10  |  986b  |  52 lines

  1. #include <stdlib.h>
  2. #include <wattcp.h>
  3.  
  4.  
  5. extern void (*wattcpd)();
  6.  
  7. #define MAXD = 50;
  8.  
  9. static void (**backd)() = NULL;
  10. word lastd;
  11.  
  12. static dowattcpd()
  13. {
  14.     void (**p)() = backd;
  15.     int count = lastd;
  16.     do {
  17.         if ( *p ) (**p)();
  18.     } while ( count-- );
  19. }
  20.  
  21. int addwattcpd( void (*p)() )
  22. {
  23.     int i;
  24.     if ( wattcpd == NULL ) {
  25.         backd = calloc( MAXD, sizeof( void (*)()));
  26.         if ( backd ) wattcpd = dowattcpd;
  27.     }
  28.     for ( i = 0; i < MAXD ; ++i ) {
  29.         if ( backd[i] == NULL ) {
  30.             backd[i] = p;
  31.             break;
  32.         }
  33.     }
  34.     if ( i < MAXD ) {
  35.         if ( lastd <= i ) lastd = i+1;
  36.         return( 0 );
  37.     }
  38.     return( -1 );
  39. }
  40. int delwattcpd( void (*p)() )
  41. {
  42.     int i, j;
  43.     for ( i = 0; i < MAXD; ++i )
  44.         if ( backd[i] == p ) {
  45.             backd[i] = NULL;
  46.             break;
  47.         }
  48.     for ( j = i+1 ; j < lastd ; ++j )
  49.         if ( backd[j] ) i = j;
  50.     lastd = i+1;
  51. }
  52.