xref: /csrg-svn/usr.bin/f77/libI77/util.c (revision 47943)
1*47943Sbostic /*-
2*47943Sbostic  * Copyright (c) 1980 The Regents of the University of California.
3*47943Sbostic  * All rights reserved.
42503Sdlw  *
5*47943Sbostic  * %sccs.include.proprietary.c%
623091Skre  */
723091Skre 
8*47943Sbostic #ifndef lint
9*47943Sbostic static char sccsid[] = "@(#)util.c	5.2 (Berkeley) 04/12/91";
10*47943Sbostic #endif /* not lint */
11*47943Sbostic 
1223091Skre /*
132503Sdlw  * utility routines
142503Sdlw  */
152503Sdlw 
162503Sdlw #include "fio.h"
172503Sdlw 
1812007Sdlw extern short	ccntrl_, blzero_;
192503Sdlw 
nowreading(x)202503Sdlw nowreading(x) unit *x;
212503Sdlw {
224119Sdlw 	return(now_acc(x,"r"));
232503Sdlw }
242503Sdlw 
nowwriting(x)252503Sdlw nowwriting(x) unit *x;
262503Sdlw {
274119Sdlw 	return(now_acc(x,"a"));
284119Sdlw }
294119Sdlw 
now_acc(x,mode)3020984Slibs LOCAL now_acc(x,mode)
314119Sdlw unit *x; char *mode;
324119Sdlw {
332503Sdlw 	long loc;
344119Sdlw 
354119Sdlw 	if (!x->ufnm)
364119Sdlw 	{
374119Sdlw 		errno = EBADF;
384119Sdlw 		return(NO);
394119Sdlw 	}
404119Sdlw 	if (x->useek)
414119Sdlw 		loc=ftell(x->ufd);
424119Sdlw 	if (freopen(x->ufnm,mode,x->ufd))
434119Sdlw 	{
444119Sdlw 		if (x->useek)
454119Sdlw 			fseek(x->ufd,loc,0);
464119Sdlw 		x->uwrt = (*mode=='a');
474119Sdlw 		return(YES);
484119Sdlw 	}
494119Sdlw 	if (x->ufd = fopen(x->ufnm, (*mode=='a')? "r":"a"))
504119Sdlw 		if (x->useek)
514119Sdlw 			fseek(x->ufd,loc,0);
524119Sdlw 	return(NO);
532503Sdlw }
542503Sdlw 
g_char(a,alen,b)552503Sdlw g_char(a,alen,b) char *a,*b; ftnlen alen;
562503Sdlw {	char *x=a+alen-1, *y=b+alen-1;
572503Sdlw 	while (x >= a  &&  *x == ' ') {x--; y--;}
582503Sdlw 	*(y+1) = '\0';
592503Sdlw 	while (x >= a) *y-- = *x--;
602503Sdlw }
612503Sdlw 
b_char(from,to,tolen)622503Sdlw b_char(from, to, tolen) char *from, *to; ftnlen tolen;
632503Sdlw {	int i=0;
642503Sdlw 	while (*from && i < tolen) {
652503Sdlw 		*to++ = *from++;
662503Sdlw 		i++;
672503Sdlw 	}
682503Sdlw 	while (i++ < tolen)
692503Sdlw 		*to++ = ' ';
702503Sdlw }
712503Sdlw 
722503Sdlw char
last_char(f)732503Sdlw last_char(f) FILE *f;
742503Sdlw {
752503Sdlw 	fseek(f,-2L,1);
762503Sdlw 	if(ftell(f)) return(getc(f));
772503Sdlw 	else return('\n');
782503Sdlw }
79