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

  1. #include "f2c.h"
  2. #include "fio.h"
  3. #include "lio.h"
  4.  
  5. extern flag f__lquit;
  6. extern int f__lcount;
  7. extern char *f__icptr;
  8. extern char *f__icend;
  9. extern icilist *f__svic;
  10. extern int f__icnum, f__recpos;
  11.  
  12. int i_getc(Void)
  13. {
  14.     if(f__recpos >= f__svic->icirlen) {
  15.         if (f__recpos++ == f__svic->icirlen)
  16.             return '\n';
  17.         z_rnew();
  18.         }
  19.     f__recpos++;
  20.     if(f__icptr >= f__icend) err(f__svic->iciend,(EOF),"endfile");
  21.     return(*f__icptr++);
  22.     }
  23.  
  24. #ifdef KR_headers
  25. int i_ungetc(ch, f) int ch; FILE *f;
  26. #else
  27. int i_ungetc(int ch, FILE *f)
  28. #endif
  29. {
  30.     if (--f__recpos == f__svic->icirlen)
  31.         return '\n';
  32.     if (f__recpos < -1)
  33.         err(f__svic->icierr,110,"recend");
  34.     /* *--icptr == ch, and icptr may point to read-only memory */
  35.     return *--f__icptr /* = ch */;
  36.     }
  37.  
  38.  static void
  39. #ifdef KR_headers
  40. c_lir(a) icilist *a;
  41. #else
  42. c_lir(icilist *a)
  43. #endif
  44. {
  45.     extern int l_eof;
  46.     f__reading = 1;
  47.     f__external = 0;
  48.     f__formatted = 1;
  49.     f__svic = a;
  50.     L_len = a->icirlen;
  51.     f__recpos = -1;
  52.     f__icnum = f__recpos = 0;
  53.     f__cursor = 0;
  54.     l_getc = i_getc;
  55.     l_ungetc = i_ungetc;
  56.     l_eof = 0;
  57.     f__icptr = a->iciunit;
  58.     f__icend = f__icptr + a->icirlen*a->icirnum;
  59.     f__cf = 0;
  60.     f__curunit = 0;
  61.     f__elist = (cilist *)a;
  62.     }
  63.  
  64.  
  65. #ifdef KR_headers
  66. integer s_rsli(a) icilist *a;
  67. #else
  68. integer s_rsli(icilist *a)
  69. #endif
  70. {
  71.     f__lioproc = l_read;
  72.     f__lquit = 0;
  73.     f__lcount = 0;
  74.     c_lir(a);
  75.     return(0);
  76.     }
  77.  
  78. integer e_rsli(Void)
  79. { return 0; }
  80.  
  81. #ifdef KR_headers
  82. s_rsni(a) icilist *a;
  83. #else
  84. extern int x_rsne(cilist*);
  85.  
  86. s_rsni(icilist *a)
  87. #endif
  88. {
  89.     cilist ca;
  90.     ca.ciend = a->iciend;
  91.     ca.cierr = a->icierr;
  92.     ca.cifmt = a->icifmt;
  93.     c_lir(a);
  94.     return x_rsne(&ca);
  95.     }
  96.