home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / msdos / lynx / source / wattcp / src / wattcpd.c < prev   
Encoding:
C/C++ Source or Header  |  1994-10-25  |  1.0 KB  |  56 lines

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