1 /* 2 char id_endfile[] = "@(#)endfile.c 1.6"; 3 * 4 * endfile 5 */ 6 7 #include "fio.h" 8 9 static char endf[] = "endfile"; 10 11 f_end (a) 12 alist *a; 13 { 14 unit *b; 15 16 lfname = NULL; 17 elist = NO; 18 errflag = a->aerr; 19 lunit = a->aunit; 20 if (not_legal(lunit)) 21 err (errflag, F_ERUNIT, endf) 22 b = &units[lunit]; 23 if (!b->ufd) 24 err (errflag, F_ERNOPEN, endf) 25 if (b->uend) 26 return(0); 27 lfname = b->ufnm; 28 b->uend = YES; 29 return ( t_runc (b, errflag) ); 30 } 31 32 t_runc (b, flag) 33 unit *b; 34 ioflag flag; 35 { 36 long loc; 37 38 if (b->uwrt) 39 fflush (b->ufd); 40 if (b->url || !b->useek || !b->ufnm) 41 return (OK); /* don't truncate direct access files, etc. */ 42 loc = ftell (b->ufd); 43 if (truncate (b->ufnm, loc) != 0) 44 err (flag, errno, endf) 45 return (OK); 46 } 47