1
0
Files
irix-657m-src/eoe/cmd/sccs/lib/comobj/setup.c
2022-09-29 17:59:04 +03:00

100 lines
2.0 KiB
C

/* 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/setup.c 6.3" */
#ident "$Revision: 1.5 $"
# include "../../hdr/defines.h"
static void ixgsetup();
void
setup(pkt,serial)
register struct packet *pkt;
int serial;
{
register int n;
register struct apply *rap;
int first_app = 1;
void fmterr(), condset();
pkt->p_apply[serial].a_inline = 1;
for (n = maxser(pkt); n; n--) {
rap = &pkt->p_apply[n];
if (rap->a_inline) {
if (n != 1 && pkt->p_idel[n].i_pred == 0)
fmterr(pkt);
pkt->p_apply[pkt->p_idel[n].i_pred].a_inline = 1;
if (pkt->p_idel[n].i_datetime > pkt->p_cutoff)
condset(rap,NOAPPLY,CUTOFF);
else {
if (first_app)
pkt->p_gotsid = pkt->p_idel[n].i_sid;
first_app = 0;
condset(rap,APPLY,SX_EMPTY);
}
}
else
condset(rap,NOAPPLY,SX_EMPTY);
if (rap->a_code == APPLY) {
/*
** LINT complains about this, but it only works with the ampersand.
*/
ixgsetup(pkt->p_apply,&(pkt->p_idel[n].i_ixg));
}
}
}
static void
ixgsetup(ap,ixgp)
struct apply *ap;
struct ixg *ixgp;
{
int n;
int code, reason;
register int *ip;
register struct ixg *cur;
void condset();
for (cur = ixgp; cur = cur->i_next; ) {
switch (cur->i_type) {
case INCLUDE:
code = APPLY;
reason = INCL;
break;
case EXCLUDE:
code = NOAPPLY;
reason = EXCL;
break;
case IGNORE:
code = SX_EMPTY;
reason = IGNR;
break;
}
ip = cur->i_ser;
for (n = cur->i_cnt; n; n--)
condset(&ap[*ip++],code,reason);
}
}
void
condset(ap,code,reason)
register struct apply *ap;
int code, reason;
{
if (code == SX_EMPTY)
ap->a_reason |= reason;
else if (ap->a_code == SX_EMPTY) {
ap->a_code = code;
ap->a_reason |= reason;
}
}