home *** CD-ROM | disk | FTP | other *** search
/ Dream 57 / Amiga_Dream_57.iso / Amiga / Programmation / e / Modules / AmiTCP_beta.lha / Src / AmiTCP / charread.e next >
Encoding:
Text File  |  1996-03-24  |  713 b   |  44 lines

  1. OPT MODULE, PREPROCESS
  2. OPT EXPORT
  3.  
  4. MODULE 'bsdsocket'
  5.  
  6. CONST RC_BUFSIZE=1024
  7.  
  8. OBJECT charread
  9.   fd
  10.   size
  11.   curr
  12.   buffer[RC_BUFSIZE]:ARRAY
  13. ENDOBJECT
  14.  
  15. CONST RC_DO_SELECT=-3,
  16.       RC_EOF=-2,
  17.       RC_ERROR=-1
  18.  
  19. PROC initCharRead(rc:PTR TO charread, fd)
  20.   rc.fd:=fd
  21.   rc.size:=0
  22.   rc.curr:=1
  23. ENDPROC
  24.  
  25. #define RC_R_E_A_D(a,b,c) Recv(a,b,c,0)
  26.  
  27. PROC charRead(rc:PTR TO charread)
  28.   DEF curr
  29.   rc.curr:=(curr:=rc.curr)+1
  30.   IF curr<rc.size
  31.     RETURN rc.buffer[curr]
  32.   ELSEIF curr=rc.size
  33.     RETURN RC_DO_SELECT
  34.   ELSE
  35.     rc.size:=RC_R_E_A_D(rc.fd, rc.buffer, RC_BUFSIZE)
  36.     IF rc.size<=0
  37.       RETURN IF rc.size=0 THEN RC_EOF ELSE RC_ERROR
  38.     ELSE
  39.       rc.curr:=1
  40.       RETURN rc.buffer[]
  41.     ENDIF
  42.   ENDIF
  43. ENDPROC
  44.