void test_results(struct test *test) { int stdo, stde; // true if there are differences. test_analyze_results(test, &stdo, &stde); if(was_aborted(test->status)) { print_reason(test, "ABRT", "by"); return; } if(was_disabled(test->status)) { if(verbose) { print_reason(test, "dis ", "by"); } return; } if(test->status == test_has_failed) { if(verbose) { print_reason(test, "FAIL", "by"); } else { putchar('F'); fflush(stdout); } return; } if(!was_started(test->status)) { if(verbose) { print_reason(test, "ERR ", "error in"); } else { putchar('E'); fflush(stdout); } return; } if(!stdo && !stde && !test->exitsignal) { if(verbose) { printf("ok %s \n", convert_testfile_name(test->testfile)); } else { putchar('.'); fflush(stdout); } } else { if(verbose) { printf("FAIL %-25s ", convert_testfile_name(test->testfile)); if(test->exitsignal) { printf("terminated by signal %d%s", test->exitsignal, (test->exitcored ? " with core" : "")); } else { printf("%c%c ", (stdo ? 'O' : '.'), (stde ? 'E' : '.')); if(stdo || stde) { if(stdo) printf("stdout "); if(stdo && stde) printf("and "); if(stde) printf("stderr "); printf("differed"); } } printf("\n"); } else { putchar('F'); fflush(stdout); } } return; }
void notify(register RSTATUS *prs, char *errbuf, int k, int e, int slow) { register char *cp; char *file; int fd; /* * Screen out cases where no notification is needed. */ if (!(prs->request->outcome & RS_NOTIFY)) return; if ( !(prs->request->actions & (ACT_MAIL|ACT_WRITE|ACT_NOTIFY)) && !prs->request->alert && !(prs->request->outcome & RS_CANCELLED) && !e && !k && !errbuf /* exited normally */ ) return; /* * Create the notification message to the user. */ file = makereqerr(prs); if ((fd = open_locked(file, "w", MODE_NOREAD)) >= 0) { fdprintf(fd, N_Msg[0], prs->secure->req_id, prs->secure->req_id, prs->request->destination, STREQU(prs->request->destination, NAME_ANY)? " printer" : ""); if (prs->request) { char file[BUFSIZ]; GetRequestFiles(prs->request, file, sizeof(file)); fdprintf(fd, "\nThe job title was:\t%s\n", file); fdprintf(fd, " submitted by:\t%s\n", prs->request->user); fdprintf(fd, " at:\t%s\n", ctime(&prs->secure->date)); } if (prs->request->outcome & RS_PRINTED) fdprintf(fd, N_Msg[1], prs->printer->printer->name); if (prs->request->outcome & RS_CANCELLED) fdprintf(fd, N_Msg[2], (prs->request->outcome & RS_FAILED)? ", and" : "."); if (prs->request->outcome & RS_FAILED) { if (slow) fdprintf(fd, N_Msg[3]); else fdprintf(fd, N_Msg[4], prs->printer->printer->name); if (e > 0) fdprintf(fd, N_Msg[slow? 5 : 6], e); else if (k) fdprintf(fd, N_Msg[slow? 7 : 8], k); } if (errbuf) { for (cp = errbuf; *cp && *cp == '\n'; cp++) ; fdprintf(fd, N_Msg[9], cp); if (prs->request->outcome & RS_CANCELLED) fdprintf(fd, "\n"); } /* start fix for bugid 1100252 */ if (prs->request->outcome & RS_CANCELLED) { print_reason (fd, prs->reason); } close(fd); schedule (EV_NOTIFY, prs); } if (file) Free (file); return; }
static void print_nsp(const u_char *nspp, u_int nsplen) { const struct nsphdr *nsphp = (struct nsphdr *)nspp; int dst, src, flags; flags = EXTRACT_LE_8BITS(nsphp->nh_flags); dst = EXTRACT_LE_16BITS(nsphp->nh_dst); src = EXTRACT_LE_16BITS(nsphp->nh_src); switch (flags & NSP_TYPEMASK) { case MFT_DATA: switch (flags & NSP_SUBMASK) { case MFS_BOM: case MFS_MOM: case MFS_EOM: case MFS_BOM+MFS_EOM: printf("data %d>%d ", src, dst); { struct seghdr *shp = (struct seghdr *)nspp; int ack; #ifdef PRINT_NSPDATA u_char *dp; #endif u_int data_off = sizeof(struct minseghdr); ack = EXTRACT_LE_16BITS(shp->sh_seq[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) (void)printf("nak %d ", ack & SGQ_MASK); else (void)printf("ack %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(shp->sh_seq[1]); data_off += sizeof(short); if (ack & SGQ_OACK) { /* ackoth field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) (void)printf("onak %d ", ack & SGQ_MASK); else (void)printf("oack %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(shp->sh_seq[2]); data_off += sizeof(short); } } (void)printf("seg %d ", ack & SGQ_MASK); #ifdef PRINT_NSPDATA dp = &(nspp[data_off]); pdata(dp, 10); #endif } break; case MFS_ILS+MFS_INT: printf("intr "); { struct seghdr *shp = (struct seghdr *)nspp; int ack; #ifdef PRINT_NSPDATA u_char *dp; #endif u_int data_off = sizeof(struct minseghdr); ack = EXTRACT_LE_16BITS(shp->sh_seq[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) (void)printf("nak %d ", ack & SGQ_MASK); else (void)printf("ack %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(shp->sh_seq[1]); data_off += sizeof(short); if (ack & SGQ_OACK) { /* ackdat field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) (void)printf("nakdat %d ", ack & SGQ_MASK); else (void)printf("ackdat %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(shp->sh_seq[2]); data_off += sizeof(short); } } (void)printf("seg %d ", ack & SGQ_MASK); #ifdef PRINT_NSPDATA dp = &(nspp[data_off]); pdata(dp, 10); #endif } break; case MFS_ILS: (void)printf("link-service %d>%d ", src, dst); { struct seghdr *shp = (struct seghdr *)nspp; struct lsmsg *lsmp = (struct lsmsg *)&(nspp[sizeof(struct seghdr)]); int ack; int lsflags, fcval; ack = EXTRACT_LE_16BITS(shp->sh_seq[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) (void)printf("nak %d ", ack & SGQ_MASK); else (void)printf("ack %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(shp->sh_seq[1]); if (ack & SGQ_OACK) { /* ackdat field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) (void)printf("nakdat %d ", ack & SGQ_MASK); else (void)printf("ackdat %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(shp->sh_seq[2]); } } (void)printf("seg %d ", ack & SGQ_MASK); lsflags = EXTRACT_LE_8BITS(lsmp->ls_lsflags); fcval = EXTRACT_LE_8BITS(lsmp->ls_fcval); switch (lsflags & LSI_MASK) { case LSI_DATA: (void)printf("dat seg count %d ", fcval); switch (lsflags & LSM_MASK) { case LSM_NOCHANGE: break; case LSM_DONOTSEND: (void)printf("donotsend-data "); break; case LSM_SEND: (void)printf("send-data "); break; default: (void)printf("reserved-fcmod? %x", lsflags); break; } break; case LSI_INTR: (void)printf("intr req count %d ", fcval); break; default: (void)printf("reserved-fcval-int? %x", lsflags); break; } } break; default: (void)printf("reserved-subtype? %x %d > %d", flags, src, dst); break; } break; case MFT_ACK: switch (flags & NSP_SUBMASK) { case MFS_DACK: (void)printf("data-ack %d>%d ", src, dst); { struct ackmsg *amp = (struct ackmsg *)nspp; int ack; ack = EXTRACT_LE_16BITS(amp->ak_acknum[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) (void)printf("nak %d ", ack & SGQ_MASK); else (void)printf("ack %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(amp->ak_acknum[1]); if (ack & SGQ_OACK) { /* ackoth field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) (void)printf("onak %d ", ack & SGQ_MASK); else (void)printf("oack %d ", ack & SGQ_MASK); } } } break; case MFS_IACK: (void)printf("ils-ack %d>%d ", src, dst); { struct ackmsg *amp = (struct ackmsg *)nspp; int ack; ack = EXTRACT_LE_16BITS(amp->ak_acknum[0]); if (ack & SGQ_ACK) { /* acknum field */ if ((ack & SGQ_NAK) == SGQ_NAK) (void)printf("nak %d ", ack & SGQ_MASK); else (void)printf("ack %d ", ack & SGQ_MASK); ack = EXTRACT_LE_16BITS(amp->ak_acknum[1]); if (ack & SGQ_OACK) { /* ackdat field */ if ((ack & SGQ_ONAK) == SGQ_ONAK) (void)printf("nakdat %d ", ack & SGQ_MASK); else (void)printf("ackdat %d ", ack & SGQ_MASK); } } } break; case MFS_CACK: (void)printf("conn-ack %d", dst); break; default: (void)printf("reserved-acktype? %x %d > %d", flags, src, dst); break; } break; case MFT_CTL: switch (flags & NSP_SUBMASK) { case MFS_CI: case MFS_RCI: if ((flags & NSP_SUBMASK) == MFS_CI) (void)printf("conn-initiate "); else (void)printf("retrans-conn-initiate "); (void)printf("%d>%d ", src, dst); { struct cimsg *cimp = (struct cimsg *)nspp; int services, info, segsize; #ifdef PRINT_NSPDATA u_char *dp; #endif services = EXTRACT_LE_8BITS(cimp->ci_services); info = EXTRACT_LE_8BITS(cimp->ci_info); segsize = EXTRACT_LE_16BITS(cimp->ci_segsize); switch (services & COS_MASK) { case COS_NONE: break; case COS_SEGMENT: (void)printf("seg "); break; case COS_MESSAGE: (void)printf("msg "); break; case COS_CRYPTSER: (void)printf("crypt "); break; } switch (info & COI_MASK) { case COI_32: (void)printf("ver 3.2 "); break; case COI_31: (void)printf("ver 3.1 "); break; case COI_40: (void)printf("ver 4.0 "); break; case COI_41: (void)printf("ver 4.1 "); break; } (void)printf("segsize %d ", segsize); #ifdef PRINT_NSPDATA dp = &(nspp[sizeof(struct cimsg)]); pdata(dp, nsplen - sizeof(struct cimsg)); #endif } break; case MFS_CC: (void)printf("conn-confirm %d>%d ", src, dst); { struct ccmsg *ccmp = (struct ccmsg *)nspp; int services, info; u_int segsize, optlen; #ifdef PRINT_NSPDATA u_char *dp; #endif services = EXTRACT_LE_8BITS(ccmp->cc_services); info = EXTRACT_LE_8BITS(ccmp->cc_info); segsize = EXTRACT_LE_16BITS(ccmp->cc_segsize); optlen = EXTRACT_LE_8BITS(ccmp->cc_optlen); switch (services & COS_MASK) { case COS_NONE: break; case COS_SEGMENT: (void)printf("seg "); break; case COS_MESSAGE: (void)printf("msg "); break; case COS_CRYPTSER: (void)printf("crypt "); break; } switch (info & COI_MASK) { case COI_32: (void)printf("ver 3.2 "); break; case COI_31: (void)printf("ver 3.1 "); break; case COI_40: (void)printf("ver 4.0 "); break; case COI_41: (void)printf("ver 4.1 "); break; } (void)printf("segsize %d ", segsize); if (optlen) { (void)printf("optlen %d ", optlen); #ifdef PRINT_NSPDATA optlen = min(optlen, nsplen - sizeof(struct ccmsg)); dp = &(nspp[sizeof(struct ccmsg)]); pdata(dp, optlen); #endif } } break; case MFS_DI: (void)printf("disconn-initiate %d>%d ", src, dst); { struct dimsg *dimp = (struct dimsg *)nspp; int reason; u_int optlen; #ifdef PRINT_NSPDATA u_char *dp; #endif reason = EXTRACT_LE_16BITS(dimp->di_reason); optlen = EXTRACT_LE_8BITS(dimp->di_optlen); print_reason(reason); if (optlen) { (void)printf("optlen %d ", optlen); #ifdef PRINT_NSPDATA optlen = min(optlen, nsplen - sizeof(struct dimsg)); dp = &(nspp[sizeof(struct dimsg)]); pdata(dp, optlen); #endif } } break; case MFS_DC: (void)printf("disconn-confirm %d>%d ", src, dst); { struct dcmsg *dcmp = (struct dcmsg *)nspp; int reason; reason = EXTRACT_LE_16BITS(dcmp->dc_reason); print_reason(reason); } break; default: (void)printf("reserved-ctltype? %x %d > %d", flags, src, dst); break; } break; default: (void)printf("reserved-type? %x %d > %d", flags, src, dst); break; } }