/* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF */ /* UNIX System Laboratories, Inc. */ /* The copyright notice above does not evidence any */ /* actual or intended publication of such source code. */ /* #ident "@(#)sccs:lib/comobj/getline.c 6.3" */ #ident "$Revision: 1.6 $" #include "../../hdr/defines.h" /* Routine to read a line into the packet. The main reason for it is to make sure that pkt->p_wrttn gets turned off, and to increment pkt->p_slnno. */ char * getline(pkt) register struct packet *pkt; { char *n; register char *p; int fatal(); void putline(); if(pkt->p_wrttn==0) putline(pkt,(char *) 0); if ((n = fgets(pkt->p_line,sizeof(pkt->p_line),pkt->p_iop)) != NULL) { pkt->p_slnno++; pkt->p_wrttn = 0; for (p = pkt->p_line; *p; ) pkt->p_chash += *p++; } else { if (!pkt->p_reopen) { (void) fclose(pkt->p_iop); pkt->p_iop = 0; } if (!pkt->p_chkeof) fatal("premature eof (co5)"); if (pkt->do_chksum && (pkt->p_chash ^ pkt->p_ihash)&0xFFFF) fatal("corrupted file (co6)"); if (pkt->p_reopen) { fseek(pkt->p_iop,0L,0); pkt->p_reopen = 0; pkt->p_slnno = 0; pkt->p_ihash = 0; pkt->p_chash = 0; pkt->p_nhash = 0; pkt->p_keep = 0; pkt->do_chksum = 0; } } return(n); }