|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)util.c 5.1 6/7/85 ! 7: */ ! 8: ! 9: /* ! 10: * utility routines ! 11: */ ! 12: ! 13: #include "fio.h" ! 14: ! 15: extern short ccntrl_, blzero_; ! 16: ! 17: nowreading(x) unit *x; ! 18: { ! 19: return(now_acc(x,"r")); ! 20: } ! 21: ! 22: nowwriting(x) unit *x; ! 23: { ! 24: return(now_acc(x,"a")); ! 25: } ! 26: ! 27: LOCAL now_acc(x,mode) ! 28: unit *x; char *mode; ! 29: { ! 30: long loc; ! 31: ! 32: if (!x->ufnm) ! 33: { ! 34: errno = EBADF; ! 35: return(NO); ! 36: } ! 37: if (x->useek) ! 38: loc=ftell(x->ufd); ! 39: if (freopen(x->ufnm,mode,x->ufd)) ! 40: { ! 41: if (x->useek) ! 42: fseek(x->ufd,loc,0); ! 43: x->uwrt = (*mode=='a'); ! 44: return(YES); ! 45: } ! 46: if (x->ufd = fopen(x->ufnm, (*mode=='a')? "r":"a")) ! 47: if (x->useek) ! 48: fseek(x->ufd,loc,0); ! 49: return(NO); ! 50: } ! 51: ! 52: g_char(a,alen,b) char *a,*b; ftnlen alen; ! 53: { char *x=a+alen-1, *y=b+alen-1; ! 54: while (x >= a && *x == ' ') {x--; y--;} ! 55: *(y+1) = '\0'; ! 56: while (x >= a) *y-- = *x--; ! 57: } ! 58: ! 59: b_char(from, to, tolen) char *from, *to; ftnlen tolen; ! 60: { int i=0; ! 61: while (*from && i < tolen) { ! 62: *to++ = *from++; ! 63: i++; ! 64: } ! 65: while (i++ < tolen) ! 66: *to++ = ' '; ! 67: } ! 68: ! 69: char ! 70: last_char(f) FILE *f; ! 71: { ! 72: fseek(f,-2L,1); ! 73: if(ftell(f)) return(getc(f)); ! 74: else return('\n'); ! 75: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.