|
|
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.