|
|
1.1 root 1: /* ftampass.c - FPM: encode/decode access passwords */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/ftam/RCS/ftampass.c,v 7.0 89/11/23 21:53:44 mrose Rel $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/ftam/RCS/ftampass.c,v 7.0 89/11/23 21:53:44 mrose Rel $
9: *
10: *
11: * $Log: ftampass.c,v $
12: * Revision 7.0 89/11/23 21:53:44 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 "fpkt.h"
32:
33: /* */
34:
35: struct type_FTAM_Access__Passwords *pass2fpm (fsb, fp, fti)
36: register struct ftamblk *fsb;
37: register struct FTAMpasswords *fp;
38: struct FTAMindication *fti;
39: {
40: register struct type_FTAM_Access__Passwords *fpm;
41:
42: if ((fpm = (struct type_FTAM_Access__Passwords *)
43: calloc (1, sizeof *fpm)) == NULL) {
44: no_mem: ;
45: (void) ftamlose (fti, FS_GEN (fsb), 1, NULLCP, "out of memory");
46: if (fpm)
47: free_FTAM_Access__Passwords (fpm);
48: return NULL;
49: }
50:
51: #define dopass(s,t,u) \
52: { \
53: if ((fpm -> s = (struct type_FTAM_Password *) \
54: calloc (1, sizeof *fpm -> s)) \
55: == NULL) \
56: goto no_mem; \
57: fpm -> s -> offset = type_FTAM_Password_binary; \
58: if ((fpm -> s -> un.binary = str2qb (fp -> t, fp -> u, 1)) == NULL) \
59: goto no_mem; \
60: }
61:
62: dopass (read__password, fp_read, fp_readlen);
63: dopass (insert__password, fp_insert, fp_insertlen);
64: dopass (replace__password, fp_replace, fp_replacelen);
65: dopass (extend__password, fp_extend, fp_extendlen);
66: dopass (erase__password, fp_erase, fp_eraselen);
67: dopass (read__attribute__password, fp_readattr, fp_readattrlen);
68: dopass (change__attribute__password, fp_chngattr, fp_chngattrlen);
69: dopass (delete__password, fp_delete, fp_deletelen);
70:
71: #undef dopass
72:
73: return fpm;
74: }
75:
76: /* */
77:
78: int fpm2pass (fsb, fpm, fp, fti)
79: register struct ftamblk *fsb;
80: register struct type_FTAM_Access__Passwords *fpm;
81: register struct FTAMpasswords *fp;
82: struct FTAMindication *fti;
83: {
84: register struct qbuf *qb;
85:
86: bzero ((char *) fp, sizeof *fp);
87:
88: /* both choices of this structure are qbuf's, so... */
89: #define dopass(s,t,u) \
90: { \
91: qb = fpm -> s -> un.graphic; \
92: \
93: if ((fp -> t = qb2str (qb)) == NULL) \
94: goto no_mem; \
95: fp -> u = qb -> qb_len; \
96: }
97:
98: dopass (read__password, fp_read, fp_readlen);
99: dopass (insert__password, fp_insert, fp_insertlen);
100: dopass (replace__password, fp_replace, fp_replacelen);
101: dopass (extend__password, fp_extend, fp_extendlen);
102: dopass (erase__password, fp_erase, fp_eraselen);
103: dopass (read__attribute__password, fp_readattr, fp_readattrlen);
104: dopass (change__attribute__password, fp_chngattr, fp_chngattrlen);
105: dopass (delete__password, fp_delete, fp_deletelen);
106:
107: #undef dopass
108:
109: return OK;
110:
111: no_mem: ;
112: FPFREE (fp);
113: return ftamlose (fti, FS_GEN (fsb), 1, NULLCP, "out of memory");
114: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.