12503Sdlw /* 2*20984Slibs char id_util[] = "@(#)util.c 1.8"; 32503Sdlw * 42503Sdlw * utility routines 52503Sdlw */ 62503Sdlw 72503Sdlw #include "fio.h" 82503Sdlw 912007Sdlw extern short ccntrl_, blzero_; 102503Sdlw 112503Sdlw nowreading(x) unit *x; 122503Sdlw { 134119Sdlw return(now_acc(x,"r")); 142503Sdlw } 152503Sdlw 162503Sdlw nowwriting(x) unit *x; 172503Sdlw { 184119Sdlw return(now_acc(x,"a")); 194119Sdlw } 204119Sdlw 21*20984Slibs LOCAL now_acc(x,mode) 224119Sdlw unit *x; char *mode; 234119Sdlw { 242503Sdlw long loc; 254119Sdlw 264119Sdlw if (!x->ufnm) 274119Sdlw { 284119Sdlw errno = EBADF; 294119Sdlw return(NO); 304119Sdlw } 314119Sdlw if (x->useek) 324119Sdlw loc=ftell(x->ufd); 334119Sdlw if (freopen(x->ufnm,mode,x->ufd)) 344119Sdlw { 354119Sdlw if (x->useek) 364119Sdlw fseek(x->ufd,loc,0); 374119Sdlw x->uwrt = (*mode=='a'); 384119Sdlw return(YES); 394119Sdlw } 404119Sdlw if (x->ufd = fopen(x->ufnm, (*mode=='a')? "r":"a")) 414119Sdlw if (x->useek) 424119Sdlw fseek(x->ufd,loc,0); 434119Sdlw return(NO); 442503Sdlw } 452503Sdlw 462503Sdlw g_char(a,alen,b) char *a,*b; ftnlen alen; 472503Sdlw { char *x=a+alen-1, *y=b+alen-1; 482503Sdlw while (x >= a && *x == ' ') {x--; y--;} 492503Sdlw *(y+1) = '\0'; 502503Sdlw while (x >= a) *y-- = *x--; 512503Sdlw } 522503Sdlw 532503Sdlw b_char(from, to, tolen) char *from, *to; ftnlen tolen; 542503Sdlw { int i=0; 552503Sdlw while (*from && i < tolen) { 562503Sdlw *to++ = *from++; 572503Sdlw i++; 582503Sdlw } 592503Sdlw while (i++ < tolen) 602503Sdlw *to++ = ' '; 612503Sdlw } 622503Sdlw 632503Sdlw char 642503Sdlw last_char(f) FILE *f; 652503Sdlw { 662503Sdlw fseek(f,-2L,1); 672503Sdlw if(ftell(f)) return(getc(f)); 682503Sdlw else return('\n'); 692503Sdlw } 70