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