Lines Matching defs:el_ent

81 extern int	cp_cfent(struct cfent *cf_ent, struct cfextra *el_ent);
97 static int merg(struct cfextra *el_ent, struct cfent *cf_ent);
98 static int do_like_ent(VFP_T *vfpo, struct cfextra *el_ent,
100 static int do_new_ent(VFP_T *vfpo, struct cfextra *el_ent, int ctrl);
101 static int typechg(struct cfent *el_ent, struct cfent *cf_ent,
104 static void set_change(struct cfextra *el_ent);
119 struct cfextra *el_ent; /* extlist entry under review */
130 for (eptnum = 0; (el_ent = extlist[eptnum]) != NULL; eptnum++) {
136 if ((el_ent->cf_ent.ftype == 'i') ||
137 (el_ent->cf_ent.ftype == 'n')) {
146 if ((eptnum > 0) && (strncmp(el_ent->cf_ent.path,
166 if (cl_dvfy(el_ent->cf_ent.pkg_class_idx) ==
180 if (cl_dvfy(el_ent->cf_ent.pkg_class_idx) ==
183 cl_nam(el_ent->cf_ent.pkg_class_idx));
188 cl_def_dverify(el_ent->cf_ent.pkg_class_idx);
196 if (is_setuid(&(el_ent->cf_ent))) {
197 el_ent->mstat.setuid = 1;
199 if (is_setgid(&(el_ent->cf_ent))) {
200 el_ent->mstat.setgid = 1;
207 if (nosetuid && (el_ent->mstat.setgid ||
208 el_ent->mstat.setuid)) {
209 el_ent->cf_ent.ainfo.mode &= ~(S_ISUID | S_ISGID);
213 n = srchcfile(&cf_ent, el_ent->cf_ent.path, server);
239 el_ent->mstat.osetuid = 1;
243 el_ent->mstat.osetgid = 1;
253 (el_ent->cf_ent.ftype == 'd')) {
255 int plen = strlen(el_ent->cf_ent.path);
257 if (strncmp(el_ent->cf_ent.path,
266 if (do_like_ent(tmpvfp, el_ent, &cf_ent, assume_ok)) {
274 if (do_new_ent(tmpvfp, el_ent, assume_ok)) {
290 do_like_ent(VFP_T *vfpo, struct cfextra *el_ent, struct cfent *cf_ent, int ctrl)
305 if (el_ent->mstat.preloaded) {
319 cf_ent->pinfo = el_ent->cf_ent.pinfo;
327 el_ent->mstat.shared = 1;
330 if (el_ent->cf_ent.ftype == RM_RDY) {
356 el_ent->cf_ent.pinfo =
359 el_ent->cf_ent.pinfo->next = NULL;
360 el_ent->cf_ent.pinfo->status = SERVED_FILE;
384 if ((nocnflct && el_ent->mstat.shared && el_ent->cf_ent.ftype != 'e')) {
389 set_change(el_ent);
395 if (cp_cfent(cf_ent, el_ent) == 0)
400 mrg_result = merg(el_ent, cf_ent);
413 * will have the fault value and el_ent will retain
418 el_ent->mstat.contchg = 1; /* subject to change */
427 /* el_ent structure now contains updated entry */
428 if (!el_ent->mstat.contchg && !ignore) {
433 set_change(el_ent);
442 pkgpinfo = eptstat(&(el_ent->cf_ent), pkginst,
455 if (is_served(el_ent->server_path,
456 &(el_ent->fsys_value)))
459 if (!ignore && el_ent->mstat.contchg) {
461 eptstat(&(el_ent->cf_ent), pkginst,
463 } else if (!ignore && el_ent->mstat.attrchg) {
465 eptstat(&(el_ent->cf_ent), pkginst,
467 } else if (!ignore && el_ent->mstat.shared) {
469 eptstat(&(el_ent->cf_ent), pkginst,
473 pkgpinfo = eptstat(&(el_ent->cf_ent),
489 output(vfpo, &(el_ent->cf_ent), pkgpinfo);
494 (void) strcpy(el_ent->cf_ent.pkg_class, pkgpinfo->aclass);
503 if (el_ent->mstat.contchg && pkgpinfo->status == INST_RDY) {
507 if (!(el_ent->mstat.preloaded))
508 el_ent->cf_ent.pinfo = NULL;
514 if (!el_ent->mstat.attrchg && !el_ent->mstat.contchg &&
515 !el_ent->mstat.replace)
522 do_new_ent(VFP_T *vfpo, struct cfextra *el_ent, int ctrl)
528 if (el_ent->cf_ent.ftype == RM_RDY) {
532 tp = el_ent->server_path;
541 if ((!el_ent->mstat.parentsyml2dir) && (access(tp, F_OK) == 0)) {
551 el_ent->mstat.shared = 1;
552 el_ent->mstat.rogue = 1;
553 set_change(el_ent);
556 el_ent->mstat.rogue = 0;
557 el_ent->mstat.contchg = 1;
558 el_ent->mstat.attrchg = 1;
561 if (el_ent->cf_ent.ainfo.mode == WILDCARD) {
562 if (el_ent->cf_ent.ftype == 'd') {
563 el_ent->cf_ent.ainfo.mode = DEFAULT_MODE;
565 el_ent->cf_ent.ainfo.mode = DEFAULT_MODE_FILE;
567 logerr(WRN_SET_DEF_MODE, el_ent->cf_ent.path,
568 (int)el_ent->cf_ent.ainfo.mode);
571 if (strcmp(el_ent->cf_ent.ainfo.owner, DB_UNDEFINED_ENTRY) == 0)
572 (void) strcpy(el_ent->cf_ent.ainfo.owner,
574 if (strcmp(el_ent->cf_ent.ainfo.group, DB_UNDEFINED_ENTRY) == 0)
575 (void) strcpy(el_ent->cf_ent.ainfo.group,
583 if (nocnflct && el_ent->mstat.shared) {
588 if (el_ent->mstat.preloaded) {
590 pinfo = eptstat(&(el_ent->cf_ent), pkginst, DUP_ENTRY);
592 el_ent->cf_ent.npkgs = 1;
599 el_ent->cf_ent.pinfo = pinfo;
611 if (is_served(el_ent->server_path,
612 &(el_ent->fsys_value)))
618 output(vfpo, &(el_ent->cf_ent), pinfo);
622 el_ent->cf_ent.pinfo = NULL;
624 if (!el_ent->mstat.attrchg && !el_ent->mstat.contchg) {
643 set_change(struct cfextra *el_ent)
648 tp = el_ent->server_path;
649 if ((el_ent->cf_ent.ftype == 'f') || (el_ent->cf_ent.ftype == 'e') ||
650 (el_ent->cf_ent.ftype == 'v')) {
651 if (cverify(0, &(el_ent->cf_ent.ftype), tp,
652 &(el_ent->cf_ent.cinfo), 1)) {
653 el_ent->mstat.contchg = 1;
654 } else if (!el_ent->mstat.contchg && !el_ent->mstat.attrchg) {
655 if (averify(0, &(el_ent->cf_ent.ftype), tp,
656 &(el_ent->cf_ent.ainfo)))
657 el_ent->mstat.attrchg = 1;
659 } else if (!el_ent->mstat.attrchg &&
660 ((el_ent->cf_ent.ftype == 'd') ||
661 (el_ent->cf_ent.ftype == 'x') ||
662 (el_ent->cf_ent.ftype == 'c') ||
663 (el_ent->cf_ent.ftype == 'b') ||
664 (el_ent->cf_ent.ftype == 'p'))) {
665 n = averify(0, &(el_ent->cf_ent.ftype), tp,
666 &(el_ent->cf_ent.ainfo));
668 el_ent->mstat.attrchg = 1;
670 el_ent->mstat.contchg = 1;
672 } else if (!el_ent->mstat.attrchg &&
673 ((el_ent->cf_ent.ftype == 's') ||
674 (el_ent->cf_ent.ftype == 'l'))) {
675 n = averify(0, &(el_ent->cf_ent.ftype), tp,
676 &(el_ent->cf_ent.ainfo));
678 el_ent->mstat.attrchg = 1;
680 el_ent->mstat.contchg = 1;
727 typechg(struct cfent *el_ent, struct cfent *cf_ent, struct mergstat *mstat)
732 if (cf_ent->ftype == el_ent->ftype)
740 cf_ent->ftype = el_ent->ftype;
745 if (el_ent->ftype == BADFTYPE)
753 if (el_ent->ftype == 'x' && cf_ent->ftype == 'd') {
754 logerr(gettext(WRN_TOEXCL), el_ent->path);
762 if (strchr(types[i], el_ent->ftype)) {
795 logerr(gettext(WRN_NOTFILE), el_ent->path);
799 logerr(gettext(WRN_NOTSYMLN), el_ent->path);
803 logerr(gettext(WRN_NOTLINK), el_ent->path);
807 logerr(gettext(WRN_NOTDIR), el_ent->path);
811 logerr(gettext(WRN_NOTCHAR), el_ent->path);
815 logerr(gettext(WRN_NOTBLOCK), el_ent->path);
819 logerr(gettext(WRN_NOTPIPE), el_ent->path);
829 * This function takes el_ent (the entry from the pkgmap) and cf_ent (the
830 * entry from the package database) and merge them into el_ent. The rules
835 * MRG_DIFFERENT The two entries are different and el_ent now contains
843 merg(struct cfextra *el_ent, struct cfent *cf_ent)
857 el_ent->cf_ent.pinfo = cf_ent->pinfo;
859 if (dbst == INST_RDY && el_ent->cf_ent.ftype == '?') {
860 el_ent->cf_ent.ftype = cf_ent->ftype;
868 if (cf_ent->ftype != el_ent->cf_ent.ftype) {
869 n = typechg(&(el_ent->cf_ent), cf_ent, &(el_ent->mstat));
877 el_ent->mstat.contchg = 1;
883 if (cp_cfent(cf_ent, el_ent) == 0)
889 el_ent->mstat.replace = 1;
905 if (strcmp(cf_ent->pkg_class, el_ent->cf_ent.pkg_class)) {
913 el_ent->cf_ent.pkg_class);
914 (void) strcpy(el_ent->cf_ent.pkg_class,
916 chgclass(&(el_ent->cf_ent), pkgpinfo);
924 if (((el_ent->cf_ent.ftype == 's') || (el_ent->cf_ent.ftype == 'l'))) {
927 if (cf_ent->ainfo.local && el_ent->cf_ent.ainfo.local) {
933 el_ent->cf_ent.ainfo.local) != NULL) {
941 if (strcmp(el_ent->cf_ent.ainfo.local,
944 el_ent->cf_ent.ainfo.local,
948 el_ent->mstat.contchg = 1;
954 } else if (el_ent->cf_ent.ftype == 'e') {
961 el_ent->mstat.contchg = 1;
963 } else if (((el_ent->cf_ent.ftype == 'f') ||
964 (el_ent->cf_ent.ftype == 'v'))) {
967 * in any el_ent field indicates the contents are unknown --
970 * change. The ambiguous el_ent values will be evaluated and
974 if (cf_ent->cinfo.size != el_ent->cf_ent.cinfo.size) {
976 el_ent->mstat.contchg = 1;
978 el_ent->cf_ent.cinfo.modtime) {
980 el_ent->mstat.contchg = 1;
981 } else if (cf_ent->cinfo.cksum != el_ent->cf_ent.cinfo.cksum) {
983 el_ent->mstat.contchg = 1;
985 } else if (((el_ent->cf_ent.ftype == 'c') ||
986 (el_ent->cf_ent.ftype == 'b'))) {
989 * merge is trivial. If the el_ent value is ambiguous (BAD),
990 * the cf_ent value is inherited. Otherwise, the el_ent value
993 if (cf_ent->ainfo.major != el_ent->cf_ent.ainfo.major) {
995 if (el_ent->cf_ent.ainfo.major == BADMAJOR) {
996 el_ent->cf_ent.ainfo.major =
999 el_ent->mstat.contchg = 1;
1002 if (cf_ent->ainfo.minor != el_ent->cf_ent.ainfo.minor) {
1004 if (el_ent->cf_ent.ainfo.minor == BADMINOR)
1005 el_ent->cf_ent.ainfo.minor =
1008 el_ent->mstat.contchg = 1;
1016 if (cf_ent->ainfo.mode != el_ent->cf_ent.ainfo.mode) {
1018 if (el_ent->cf_ent.ainfo.mode == BADMODE) {
1019 el_ent->cf_ent.ainfo.mode = cf_ent->ainfo.mode;
1020 } else if (el_ent->cf_ent.ainfo.mode == WILDCARD) {
1025 el_ent->cf_ent.ainfo.mode = cf_ent->ainfo.mode;
1026 el_ent->mstat.attrchg = 0;
1028 el_ent->mstat.attrchg = 1;
1031 if (strcmp(cf_ent->ainfo.owner, el_ent->cf_ent.ainfo.owner) != 0) {
1033 if (strcmp(el_ent->cf_ent.ainfo.owner, BADOWNER) == 0)
1034 (void) strcpy(el_ent->cf_ent.ainfo.owner,
1037 el_ent->mstat.attrchg = 1;
1039 if (strcmp(cf_ent->ainfo.group, el_ent->cf_ent.ainfo.group) != 0) {
1041 if (strcmp(el_ent->cf_ent.ainfo.group, BADGROUP) == 0)
1042 (void) strcpy(el_ent->cf_ent.ainfo.group,
1045 el_ent->mstat.attrchg = 1;