|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 10854 (0x2a66) Types: TextFile Names: »inter-read.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Src/qmgr/inter-read.c«
/* inter-read.c: reading side of interface program */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Src/qmgr/RCS/inter-read.c,v 5.0 90/09/20 16:21:10 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Src/qmgr/RCS/inter-read.c,v 5.0 90/09/20 16:21:10 pp Exp Locker: pp $ * * $Log: inter-read.c,v $ * Revision 5.0 90/09/20 16:21:10 pp * rcsforce : 5.0 public release * */ #include <stdio.h> #include <ctype.h> #include "types.h" /* type definitions */ /* \f Routines */ struct type_QmgrP1_MPDUIdentifier *gmpduidentifier (); struct type_Qmgr_EncodedInformationTypes *geit(); struct type_UNIV_UTCTime *gutctime (); struct type_UNIV_UTCTime *gutcinterval (); struct type_Qmgr_PerMessageInfo *gpermessageinfo (); struct type_Qmgr_User *guser (); struct type_Qmgr_RecipientList *grecipientlist (); struct type_Qmgr_RecipientInfo *grecipientinfo (); struct type_Qmgr_MtaControl *gmtacontrol (); struct type_Qmgr_RecipientList *grecipient (); struct type_QmgrP1_GlobalDomainIdentifier *ggldmdid (); struct type_QmgrP1_CountryName *gcountry (); struct type_QmgrP1_AdministrationDomainName *gadmd (); struct type_QmgrP1_PrivateDomainIdentifier *gprmd (); struct type_Qmgr_Filter *gfilter (); struct type_Qmgr_FilterList *gfilterlist (); struct type_Qmgr_Control *gcontrol (); struct type_Qmgr_Priority *gpriority (); struct type_Qmgr_ChannelList *gchanlist (); struct qbuf *gqbuf (); char *gline (); static FILE *input = stdin; int level; #define DISP_INDENT 2 setinput(file) char *file; { if ((input = fopen(file, "r")) == NULL) { advise (file, "Can't read"); input = stdin; } } resetinput () { if (input != stdin) (void) fclose (input); input = stdin; } struct type_Qmgr_MsgStruct *gmsgstruct () { struct type_Qmgr_MsgStruct *msg; display ("MsgStruct"); level ++; msg = (struct type_Qmgr_MsgStruct *) malloc (sizeof (*msg)); msg -> messageinfo = gpermessageinfo(); msg -> recipientlist = grecipientlist (); level --; return msg; } struct type_Qmgr_ReadMessageArgument *greadmessageargument () { struct type_Qmgr_ReadMessageArgument *rma; display ("ReadMessageArgument"); level ++; rma = (struct type_Qmgr_ReadMessageArgument *) malloc (sizeof *rma); rma -> filters = gfilterlist (); rma -> interval = gutcinterval ("read message"); level --; return rma; } struct type_Qmgr_MtaRead *gmtaread () { struct type_Qmgr_MtaRead *mr; display ("MtaRead"); level ++; mr = (struct type_Qmgr_MtaRead *) malloc (sizeof *mr); mr -> channel = gqbuf ("Channel"); mr -> time = gutcinterval ("mta read"); level --; return mr; } struct type_Qmgr_ChannelControl *gchannelcontrol () { struct type_Qmgr_ChannelControl *cc; display ("ChannelControl"); level ++; cc = (struct type_Qmgr_ChannelControl *) malloc (sizeof *cc); cc -> channel = gqbuf ("Channel"); cc -> control = gcontrol (); level --; return cc; } static struct type_Qmgr_PerMessageInfo *gpermessageinfo () { struct type_Qmgr_PerMessageInfo *pmi; display ("PerMessageInfo"); level ++; pmi = (struct type_Qmgr_PerMessageInfo *) malloc (sizeof(*pmi)); pmi -> queueid = gqbuf ("Queue Id"); pmi -> mpduiden = gmpduidentifier (); pmi -> originator = guser (); pmi -> contenttype = gqbuf ("ContentType"); pmi -> eit = geit (); pmi -> priority = gpriority (); pmi -> size = gint ("size"); pmi -> age = gutctime (); pmi -> warnInterval = gint ("warninterval"); pmi -> expiryTime = gutctime (); pmi -> deferredTime = gutctime (); pmi -> uaContentId = gqbuf ("uaContentId"); level --; return pmi; } static int gint (prompt) char *prompt; { char *p; int val = 0; p = gline (prompt); sscanf (p, "%d", &val); return val; } static char *gline (prompt) char *prompt; { static char buffer[BUFSIZ]; char *p; printf ("%*s%s : ", level * DISP_INDENT, "", prompt); fflush (stdout); do { fgets (buffer, sizeof buffer, input); } while (buffer[0] == '\n' || buffer[0] == '#'); if (p = index (buffer, '\n')) *p = '\0'; if (input != stdin ) printf ("%s\n", buffer); return buffer; } struct type_QmgrP1_MPDUIdentifier *gmpduidentifier () { struct type_QmgrP1_MPDUIdentifier *mpdu; display ("MPDUIdentifier"); level ++; mpdu = (struct type_QmgrP1_MPDUIdentifier *) malloc (sizeof (*mpdu)); mpdu -> global = ggldmdid (); mpdu -> local = gqbuf ("domain id string"); level --; return mpdu; } struct type_Qmgr_EncodedInformationTypes *geit() { struct type_Qmgr_EncodedInformationTypes *eit; display ("EncodedInformationTypes"); level ++; eit = (struct type_Qmgr_EncodedInformationTypes *)malloc (sizeof (*eit)); eit -> PrintableString = gqbuf ("PrintableString"); eit -> next = NULL; level --; return eit; } struct type_Qmgr_Priority *gpriority () { struct type_Qmgr_Priority *prio; display ("Priority"); level ++; prio = (struct type_Qmgr_Priority *)malloc (sizeof (*prio)); prio -> parm = gint ("priority"); level --; return prio; } struct type_UNIV_UTCTime *gutctime () { struct type_UNIV_UTCTime *ti; UTCtime uu; UTC utc = &uu; struct tm *tm; time_t t; char *cp; char buf[BUFSIZ]; display ("gtime"); level ++; time (&t); tm = localtime (&t); tm2ut (tm, utc); cp = time2str (utc, 0); sprintf (buf, "gutctime: %s", cp); display (buf); ti = str2qb (cp, strlen (cp), 1); level --; return ti; } struct type_UNIV_UTCTime *gutcinterval (str) char *str; { struct type_UNIV_UTCTime *ti; UTCtime uu; UTC utc = &uu; struct tm *tm; time_t t; char *cp, *prompt, *p; char buf[BUFSIZ]; display ("gutcinterval"); level ++; utc = (UTC) calloc (1, sizeof(struct UTCtime)); utc->ut_flags = UT_SEC; prompt = malloc (strlen("Input number of seconds between operations :" ) + strlen(str)); sprintf(prompt,"Input number of seconds between %s operations :",str); p = gline (prompt); sscanf(p,"%d",&(utc->ut_sec)); cp = utct2str(utc); ti = str2qb (cp, strlen (cp), 1); if (prompt != NULL) free(prompt); level --; return ti; } struct type_Qmgr_User *guser () { struct type_Qmgr_User *user; display ("User"); level ++; user = gqbuf ("rfc822"); level --; return user; } struct type_Qmgr_RecipientList *grecipientlist () { struct type_Qmgr_RecipientList *rl; display ("RecipientList"); level ++; rl = (struct type_Qmgr_RecipientList *) malloc (sizeof *rl); rl -> RecipientInfo = grecipientinfo (); rl -> next = 0; level--; return rl; } static struct type_Qmgr_RecipientInfo *grecipientinfo () { struct type_Qmgr_RecipientInfo *ri; display ("RecipientInfo"); level ++; ri = (struct type_Qmgr_RecipientInfo *) malloc (sizeof(*ri)); ri -> user = guser (); ri -> id = gint ("id"); ri -> mta = gqbuf ("Mta"); ri -> channelList = gchanlist (); ri -> channelsDone = gint ("channelsDone"); level --; return ri; } struct type_Qmgr_ChannelList *gchanlist () { struct type_Qmgr_ChannelList *cl; display ("ChannelList"); level ++; cl = (struct type_Qmgr_ChannelList *) malloc (sizeof *cl); cl -> Channel = gqbuf ("Channel"); cl -> next = 0; level --; return cl; } struct type_QmgrP1_GlobalDomainIdentifier *ggldmdid () { struct type_QmgrP1_GlobalDomainIdentifier *glid; display ("GlobalDomainIdentifier"); level ++; glid = (struct type_QmgrP1_GlobalDomainIdentifier *) malloc (sizeof(*glid)); glid -> country = gcountry(); glid -> admd = gadmd (); glid -> prmd = gprmd (); level --; return glid; } struct type_QmgrP1_CountryName *gcountry () { struct type_QmgrP1_CountryName *country; display ("CountryName"); level ++; country = (struct type_QmgrP1_CountryName *)malloc (sizeof(*country)); country -> offset = type_QmgrP1_CountryName_printable; country -> un.printable = gqbuf("country"); level --; return country; } struct type_QmgrP1_AdministrationDomainName *gadmd () { struct type_QmgrP1_AdministrationDomainName *admd; display ("AdministrationDomainName"); level ++; admd = (struct type_QmgrP1_AdministrationDomainName *)malloc (sizeof(*admd)); admd -> offset = type_QmgrP1_AdministrationDomainName_printable; admd -> un.printable = gqbuf("admd"); level --; return admd; } struct type_QmgrP1_PrivateDomainIdentifier *gprmd () { struct type_QmgrP1_PrivateDomainIdentifier *prmd; display ("PrivateDomainIdentifier"); level ++; prmd = (struct type_QmgrP1_PrivateDomainIdentifier *)malloc (sizeof(*prmd)); prmd -> offset = type_QmgrP1_PrivateDomainIdentifier_printable; prmd -> un.printable = gqbuf("prmd"); level --; return prmd; } struct qbuf *gqbuf (p) char *p; { char *s = gline (p); return str2qb (s, strlen(s), 1); } static char first_non_white (str) char *str; { char *ix = str; while ((ix != NULL) && isspace(*ix)) ix++; if (ix == NULL) return ' '; else return *ix; } struct type_Qmgr_FilterList *gfilterlist () { struct type_Qmgr_FilterList *head = NULL, *tail = NULL, *temp; int cont; char ans, *p; display ("readmsginfo"); level ++; p = gline ("Do you want to input a filter (y/n) ? "); ans = first_non_white (p); while (index("yn",ans) == NULL) { p = gline(" (y/n) ? "); ans = first_non_white (p); } cont = (ans == 'y') ? 0 : 1; while (cont == 0) { temp = (struct type_Qmgr_FilterList *) calloc (1,sizeof (*temp)); temp -> Filter = gfilter (); if (head == NULL) head = tail = temp; else { tail->next = temp; tail = temp; } p = gline ("Do you want to input another filter (y/n) ? "); ans = first_non_white (p); while (index("yn",ans) == NULL) { p = gline(" (y/n) ? "); ans = first_non_white (p); } cont = (ans == 'y') ? 0 : 1; } level --; return head; } struct type_Qmgr_Filter *gfilter () { struct type_Qmgr_Filter *filt; display ("Filter"); level ++; filt = (struct type_Qmgr_Filter *) malloc (sizeof (*filt)); filt -> contenttype = gqbuf ("ContentType"); filt -> eit = geit (); filt -> priority = gpriority (); filt -> moreRecentThan = gutctime (); filt -> earlierThan = gutctime (); filt -> maxSize = gint ("maxSize"); filt -> originator = guser (); filt -> recipient = guser (); filt -> channel = gqbuf ("Channel"); filt -> mta = gqbuf("DMtahost"); filt -> queueid = gqbuf ("Queue Id"); filt -> mpduiden = gmpduidentifier (); filt -> uaContentId = gqbuf ("UAContentId"); level --; return filt; } struct type_Qmgr_MtaControl *gmtacontrol () { struct type_Qmgr_MtaControl *mc; display ("MtaControl"); level ++; mc = (struct type_Qmgr_MtaControl *)calloc (1, sizeof (*mc)); mc -> channel = gqbuf ("Channel"); mc -> mta = gqbuf ("mta"); mc -> control = gcontrol (); level --; return mc; } struct type_Qmgr_Control *gcontrol () { struct type_Qmgr_Control *co; display ("Control"); level ++; co = (struct type_Qmgr_Control *) malloc (sizeof *co); co -> offset = gint ("1/stop 2/start 3/cacheClear"); level --; return co; }