1: #include "parms.h" 2: #include "structs.h" 3: 4: #ifdef RCSIDENT 5: static char rcsid[] = "$Header: dmpresp.c,v 1.7 85/01/18 15:09:02 notes Rel $"; 6: #endif RCSIDENT 7: 8: /* 9: * dmprsp(io, note, notenum, dumpfid, response number) 10: * prints logical response number to the note whose number is 11: * passed in. The note descriptor is also passed in. The dump if 12: * sent to the file pointed to by dumpfid 13: * 14: * Original Coding: Ray Essick December 1981 15: * 16: */ 17: 18: 19: dmprsp (io, note, notenum, dmpfile, num, extensive, protocol) 20: struct io_f *io; 21: struct note_f *note; 22: FILE * dmpfile; 23: { 24: int roffset, 25: rrecnum; 26: int i; 27: struct resp_f rsprec; 28: struct when_f *zdate; 29: char buf[256]; /* hold intermediate strings */ 30: 31: if (lrsp (io, notenum, num, &rsprec, &roffset, &rrecnum) == -1) 32: return; /* no response */ 33: 34: switch (protocol) 35: { 36: case 0: /* original protocol */ 37: fprintf (dmpfile, "R:%s:%ld:%s:%ld:%d\n", note -> n_id.sys, 38: note -> n_id.uniqid, rsprec.r_id[roffset].sys, 39: rsprec.r_id[roffset].uniqid, num); 40: 41: fprintf (dmpfile, "%s:%d:%s:\n", rsprec.r_auth[roffset].aname, 42: rsprec.r_auth[roffset].aid & UIDMASK, 43: rsprec.r_auth[roffset].asystem); 44: 45: zdate = &rsprec.r_when[roffset]; 46: fprintf (dmpfile, "%d:%d:%d:%d:%d:%ld:\n", zdate -> w_year, zdate -> w_month, 47: zdate -> w_day, zdate -> w_hours, zdate -> w_mins, zdate -> w_gmttime); 48: if (extensive) 49: { 50: zdate = &rsprec.r_rcvd[roffset]; 51: fprintf (dmpfile, "%d:%d:%d:%d:%d:%ld:\n", zdate -> w_year, zdate -> w_month, 52: zdate -> w_day, zdate -> w_hours, zdate -> w_mins, zdate -> w_gmttime); 53: 54: fprintf (dmpfile, "%s\n", rsprec.r_from[roffset]); 55: } 56: 57: 58: 59: fprintf (dmpfile, "%03o:%ld\n", rsprec.r_stat[roffset], 60: ((long) rsprec.r_addr[roffset].textlen));/* make sure long */ 61: 62: pageout (io, &rsprec.r_addr[roffset], dmpfile); 63: break; 64: 65: case 1: /* protocol 1 */ 66: fprintf (dmpfile, "Protocol: 1 Response\n");/* let it know */ 67: fprintf (dmpfile, "Title: Re: %s\n", note -> ntitle); 68: fprintf (dmpfile, "Parent-ID: %s.%ld\n", note -> n_id.sys, 69: note -> n_id.uniqid); 70: fprintf (dmpfile, "Author: %s@%s\n", 71: rsprec.r_auth[roffset].aname, rsprec.r_auth[roffset].asystem); 72: if (extensive) 73: fprintf (dmpfile, "Author-UID: %d\n", rsprec.r_auth[roffset].aid); 74: fprintf (dmpfile, "Response-ID: %s.%ld\n", rsprec.r_id[roffset].sys, 75: rsprec.r_id[roffset].uniqid); 76: sprdate (&rsprec.r_when[roffset], buf); /* format date */ 77: fprintf (dmpfile, "Date-Written: %s\n", buf); 78: if (extensive) /* dump extra information */ 79: { 80: sprdate (&rsprec.r_rcvd[roffset], buf); 81: fprintf (dmpfile, "Date-Received: %s\n", buf); 82: fprintf (dmpfile, "Source-System: %s\n", rsprec.r_from[roffset]); 83: } 84: fprintf (dmpfile, "Status:"); /* do the bits */ 85: if (rsprec.r_stat[roffset] & FRMNEWS) 86: fprintf (dmpfile, " Thru-News"); 87: if (rsprec.r_stat[roffset] & DIRMES) 88: fprintf (dmpfile, " Director-Message"); 89: if (rsprec.r_stat[roffset] & WRITONLY) 90: fprintf (dmpfile, " Write-Only"); 91: if (rsprec.r_stat[roffset] & ORPHND) 92: fprintf (dmpfile, " Foster-Parent"); 93: putc ('\n', dmpfile); 94: fprintf (dmpfile, "Text-Length: %ld bytes\n", 95: (long) rsprec.r_addr[roffset].textlen); 96: pageout (io, &rsprec.r_addr[roffset], dmpfile);/* dump text */ 97: break; 98: 99: default: 100: fprintf (stderr, "dmpresp: Unsupported Protocol (%d)\n", 101: protocol); 102: break; 103: } 104: 105: } 106: 107: /* dmpall - dump all the responses to a note. Merely calls 108: * dmpresp repetitively to dump all of them 109: * 110: * Original Coding: Ray Essick December 1981 111: */ 112: dmprall (io, note, notenum, dmpfile, extensive, protocol) 113: struct io_f *io; 114: struct note_f *note; 115: FILE * dmpfile; 116: { 117: int num; 118: 119: for (num = 1; num <= note -> n_nresp; num++) 120: { 121: dmprsp (io, note, notenum, dmpfile, num, extensive, protocol); 122: } 123: }