* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)c_iio.c 5.2 7/30/85
* internal (character array) i/o: common portions
LOCAL icilist
*svic
; /* active internal io list */
if(formatted
== LISTDIRECTED
)
else if (recpos
== svic
->icirlen
)
if(icptr
>= icend
&& !recpos
) /* new rec beyond eof */
if(recpos
++ < svic
->icirlen
) return(*icptr
++);
{ if(c
=='\n') return(z_wnew());
if(recpos
++ < svic
->icirlen
)
else err(errflag
,F_EREREC
,"iio")
err(endflag
,EOF
,"iio") /* NOT STANDARD, end-of-file on writes */
err(errflag
,F_EREREC
,"iio")
if(ch
==EOF
|| --recpos
>= svic
->icirlen
) return(OK
);
if(--icptr
< svic
->iciunit
|| recpos
< 0) err(errflag
,F_ERBREC
,"ilio")
icend
= a
->iciunit
+ a
->icirnum
*a
->icirlen
;
icptr
= a
->iciunit
+ recnum
*a
->icirlen
;
icptr
= svic
->iciunit
+ (++recnum
)*svic
->icirlen
;
recpos
= reclen
= cursor
= 0;
{ icptr
+= (reclen
- recpos
);
while(recpos
< svic
->icirlen
) (*putn
)(' ');
recpos
= reclen
= cursor
= 0;
if(reclen
< recpos
) reclen
= recpos
;
if((recpos
+ cursor
) < 0) cursor
= -recpos
; /* to BOR */
if(!reading
&& (cursor
-n
) > 0)
while(cursor
--) if(n
=(*putn
)(' ')) return(n
);
formatted
= LISTDIRECTED
;
icend
= icptr
+ a
->icirlen
* a
->icirnum
;