12491Sdlw /* 2*10673Sdlw char id_endfile[] = "@(#)endfile.c 1.6"; 32491Sdlw * 42491Sdlw * endfile 52491Sdlw */ 62491Sdlw 72491Sdlw #include "fio.h" 82491Sdlw 9*10673Sdlw static char endf[] = "endfile"; 102491Sdlw 11*10673Sdlw f_end (a) 12*10673Sdlw alist *a; 132491Sdlw { 14*10673Sdlw unit *b; 15*10673Sdlw 162491Sdlw lfname = NULL; 172491Sdlw elist = NO; 182491Sdlw errflag = a->aerr; 192491Sdlw lunit = a->aunit; 20*10673Sdlw if (not_legal(lunit)) 21*10673Sdlw err (errflag, F_ERUNIT, endf) 222491Sdlw b = &units[lunit]; 23*10673Sdlw if (!b->ufd) 24*10673Sdlw err (errflag, F_ERNOPEN, endf) 25*10673Sdlw if (b->uend) 26*10673Sdlw return(0); 272491Sdlw lfname = b->ufnm; 282491Sdlw b->uend = YES; 29*10673Sdlw return ( t_runc (b, errflag) ); 302491Sdlw } 312491Sdlw 32*10673Sdlw t_runc (b, flag) 33*10673Sdlw unit *b; 34*10673Sdlw ioflag flag; 352491Sdlw { 36*10673Sdlw long loc; 37*10673Sdlw 38*10673Sdlw if (b->uwrt) 39*10673Sdlw fflush (b->ufd); 40*10673Sdlw if (b->url || !b->useek || !b->ufnm) 41*10673Sdlw return (OK); /* don't truncate direct access files, etc. */ 42*10673Sdlw loc = ftell (b->ufd); 43*10673Sdlw if (truncate (b->ufnm, loc) != 0) 44*10673Sdlw err (flag, errno, endf) 45*10673Sdlw return (OK); 462491Sdlw } 47