1*30496Slepreau #include "../hdr/defines.h" 2*30496Slepreau 3*30496Slepreau SCCSID(@(#)getline 2.1.1.1); 4*30496Slepreau /* 5*30496Slepreau Routine to read a line into the packet. The main reason for 6*30496Slepreau it is to make sure that pkt->p_wrttn gets turned off, 7*30496Slepreau and to increment pkt->p_slnno. 8*30496Slepreau */ 9*30496Slepreau 10*30496Slepreau getline(pkt) 11*30496Slepreau register struct packet *pkt; 12*30496Slepreau { 13*30496Slepreau register int n; 14*30496Slepreau register char *p; 15*30496Slepreau 16*30496Slepreau if(pkt->p_wrttn==0) 17*30496Slepreau putline(pkt,0); 18*30496Slepreau if ((n = fgets(pkt->p_line,sizeof(pkt->p_line),pkt->p_iop)) != NULL) { 19*30496Slepreau pkt->p_slnno++; 20*30496Slepreau pkt->p_wrttn = 0; 21*30496Slepreau for (p = pkt->p_line; *p; ) 22*30496Slepreau pkt->p_chash =+ *p++; 23*30496Slepreau } 24*30496Slepreau else { 25*30496Slepreau if (!pkt->p_reopen) { 26*30496Slepreau fclose(pkt->p_iop); 27*30496Slepreau pkt->p_iop = 0; 28*30496Slepreau } 29*30496Slepreau if (!pkt->p_chkeof) 30*30496Slepreau fatal("premature eof (co5)"); 31*30496Slepreau if (pkt->do_chksum && (pkt->p_chash ^ pkt->p_ihash)&0xFFFF) 32*30496Slepreau fatal("corrupted file (co6)"); 33*30496Slepreau if (pkt->p_reopen) { 34*30496Slepreau fseek(pkt->p_iop,0L,0); 35*30496Slepreau pkt->p_reopen = 0; 36*30496Slepreau pkt->p_slnno = 0; 37*30496Slepreau pkt->p_ihash = 0; 38*30496Slepreau pkt->p_chash = 0; 39*30496Slepreau pkt->p_nhash = 0; 40*30496Slepreau pkt->p_keep = 0; 41*30496Slepreau pkt->do_chksum = 0; 42*30496Slepreau } 43*30496Slepreau } 44*30496Slepreau return(n); 45*30496Slepreau } 46