130496Slepreau #include "../hdr/defines.h" 230496Slepreau 3*30497Slepreau static char Sccsid[] = "@(#)getline.c 1.2 02/15/87"; 430496Slepreau /* 530496Slepreau Routine to read a line into the packet. The main reason for 630496Slepreau it is to make sure that pkt->p_wrttn gets turned off, 730496Slepreau and to increment pkt->p_slnno. 830496Slepreau */ 930496Slepreau getline(pkt)1030496Slepreaugetline(pkt) 1130496Slepreau register struct packet *pkt; 1230496Slepreau { 1330496Slepreau register int n; 1430496Slepreau register char *p; 1530496Slepreau 1630496Slepreau if(pkt->p_wrttn==0) 1730496Slepreau putline(pkt,0); 1830496Slepreau if ((n = fgets(pkt->p_line,sizeof(pkt->p_line),pkt->p_iop)) != NULL) { 1930496Slepreau pkt->p_slnno++; 2030496Slepreau pkt->p_wrttn = 0; 2130496Slepreau for (p = pkt->p_line; *p; ) 22*30497Slepreau pkt->p_chash += *p++; 2330496Slepreau } 2430496Slepreau else { 2530496Slepreau if (!pkt->p_reopen) { 2630496Slepreau fclose(pkt->p_iop); 2730496Slepreau pkt->p_iop = 0; 2830496Slepreau } 2930496Slepreau if (!pkt->p_chkeof) 3030496Slepreau fatal("premature eof (co5)"); 3130496Slepreau if (pkt->do_chksum && (pkt->p_chash ^ pkt->p_ihash)&0xFFFF) 3230496Slepreau fatal("corrupted file (co6)"); 3330496Slepreau if (pkt->p_reopen) { 3430496Slepreau fseek(pkt->p_iop,0L,0); 3530496Slepreau pkt->p_reopen = 0; 3630496Slepreau pkt->p_slnno = 0; 3730496Slepreau pkt->p_ihash = 0; 3830496Slepreau pkt->p_chash = 0; 3930496Slepreau pkt->p_nhash = 0; 4030496Slepreau pkt->p_keep = 0; 4130496Slepreau pkt->do_chksum = 0; 4230496Slepreau } 4330496Slepreau } 4430496Slepreau return(n); 4530496Slepreau } 46