home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / f2c / i77lib / uio.c < prev    next >
C/C++ Source or Header  |  2000-06-22  |  1KB  |  55 lines

  1. #include "f2c.h"
  2. #include "fio.h"
  3. uiolen f__reclen;
  4.  
  5. #ifdef KR_headers
  6. do_us(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
  7. #else
  8. do_us(ftnint *number, char *ptr, ftnlen len)
  9. #endif
  10. {
  11.     if(f__reading)
  12.     {
  13.         f__recpos += *number * len;
  14.         if(f__recpos>f__reclen)
  15.             err(f__elist->ciend, 110, "do_us");
  16.         if (fread(ptr,(int)len,(int)(*number),f__cf) != *number)
  17.             err(f__elist->ciend, EOF, "do_us");
  18.         return(0);
  19.     }
  20.     else
  21.     {
  22.         f__reclen += *number * len;
  23.         (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
  24.         return(0);
  25.     }
  26. }
  27. #ifdef KR_headers
  28. integer do_ud(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
  29. #else
  30. integer do_ud(ftnint *number, char *ptr, ftnlen len)
  31. #endif
  32. {
  33.     f__recpos += *number * len;
  34.     if(f__recpos > f__curunit->url && f__curunit->url!=1)
  35.         err(f__elist->cierr,110,"do_ud");
  36.     if(f__reading)
  37.     {
  38.         if(fread(ptr,(int)len,(int)(*number),f__cf) != *number)
  39.             err(f__elist->cierr,EOF,"do_ud")
  40.         else return(0);
  41.     }
  42.     (void) fwrite(ptr,(int)len,(int)(*number),f__cf);
  43.     return(0);
  44. }
  45. #ifdef KR_headers
  46. integer do_uio(number,ptr,len) ftnint *number; char *ptr; ftnlen len;
  47. #else
  48. integer do_uio(ftnint *number, char *ptr, ftnlen len)
  49. #endif
  50. {
  51.     if(f__sequential)
  52.         return(do_us(number,ptr,len));
  53.     else    return(do_ud(number,ptr,len));
  54. }
  55.