|
|
1.1 ! root 1: /* addr2ref.c - manage encoded session addresses */ ! 2: ! 3: #ifndef lint ! 4: static char *rcsid = "$Header: /f/osi/psap/RCS/addr2ref.c,v 7.0 89/11/23 22:12:30 mrose Rel $"; ! 5: #endif ! 6: ! 7: /* ! 8: * $Header: /f/osi/psap/RCS/addr2ref.c,v 7.0 89/11/23 22:12:30 mrose Rel $ ! 9: * ! 10: * ! 11: * $Log: addr2ref.c,v $ ! 12: * Revision 7.0 89/11/23 22:12:30 mrose ! 13: * Release 6.0 ! 14: * ! 15: */ ! 16: ! 17: /* ! 18: * NOTICE ! 19: * ! 20: * Acquisition, use, and distribution of this module and related ! 21: * materials are subject to the restrictions of a license agreement. ! 22: * Consult the Preface in the User's Manual for the full terms of ! 23: * this agreement. ! 24: * ! 25: */ ! 26: ! 27: ! 28: /* LINTLIBRARY */ ! 29: ! 30: #include <stdio.h> ! 31: #include "psap.h" ! 32: #include "ssap.h" ! 33: ! 34: ! 35: long time (); ! 36: ! 37: /* */ ! 38: ! 39: struct SSAPref *addr2ref (addr) ! 40: register char *addr; ! 41: { ! 42: int result; ! 43: long clock; ! 44: register PE pe; ! 45: register struct tm *tm; ! 46: struct UTCtime uts; ! 47: register struct UTCtime *ut = &uts; ! 48: static struct SSAPref srs; ! 49: register struct SSAPref *sr = &srs; ! 50: ! 51: bzero ((char *) sr, sizeof *sr); ! 52: ! 53: if ((pe = t61s2prim (addr, strlen (addr))) == NULLPE) ! 54: return NULL; ! 55: result = stuff (pe, sr -> sr_udata, &sr -> sr_ulen); ! 56: pe_free (pe); ! 57: if (result == NOTOK) ! 58: return NULL; ! 59: ! 60: if (time (&clock) == NOTOK || (tm = gmtime (&clock)) == NULL) ! 61: return NULL; ! 62: tm2ut (tm, ut); ! 63: ! 64: if ((pe = utct2prim (ut)) == NULLPE) ! 65: return NULL; ! 66: result = stuff (pe, sr -> sr_cdata, &sr -> sr_clen); ! 67: pe_free (pe); ! 68: if (result == NOTOK) ! 69: return NULL; ! 70: ! 71: return sr; ! 72: } ! 73: ! 74: /* */ ! 75: ! 76: static int stuff (pe, dbase, dlen) ! 77: register PE pe; ! 78: register char *dbase; ! 79: register u_char *dlen; ! 80: { ! 81: int len; ! 82: char *base; ! 83: ! 84: if (pe2ssdu (pe, &base, &len) == NOTOK) ! 85: return NOTOK; ! 86: ! 87: bcopy (base, dbase, (int) (*dlen = len)); ! 88: free (base); ! 89: ! 90: return OK; ! 91: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.