1 # include "../hdr/defines.h"
2
3 static char Sccsid[] = "@(#)pf_ab.c 1.5 12/22/88";
4
pf_ab(s,pp,all)5 pf_ab(s,pp,all)
6 char *s;
7 register struct pfile *pp;
8 int all;
9 {
10 register char *p;
11 register int i;
12 extern char *Datep;
13 char *xp, *buf;
14
15 xp = p = buf = alloc(size(s));
16 copy(s,p);
17 for (; *p; p++)
18 if (*p == '\n') {
19 *p = 0;
20 break;
21 }
22 p = xp;
23 p = sid_ab(p,&pp->pf_gsid);
24 ++p;
25 p = sid_ab(p,&pp->pf_nsid);
26 ++p;
27 xp = index(p,' ');
28 pp->pf_user[0] = 0;
29 if ((unsigned)(i = xp-p) < SZLNAM) {
30 bcopy(p,pp->pf_user,i);
31 pp->pf_user[i] = 0;
32 }
33 else
34 fatal("bad p-file format (co17)");
35 p = xp + 1;
36 date_ab(p,&pp->pf_date);
37 p = Datep;
38 pp->pf_ilist = 0;
39 pp->pf_elist = 0;
40 if (!all || !*p) {
41 free(buf);
42 return;
43 }
44 p += 2;
45 xp = alloc(size(p));
46 copy(p,xp);
47 p = xp;
48 if (*p == 'i') {
49 pp->pf_ilist = ++p;
50 for (; *p; p++)
51 if (*p == ' ') {
52 *p++ = 0;
53 p++;
54 break;
55 }
56 }
57 if (*p == 'x')
58 pp->pf_elist = ++p;
59 free(buf);
60 }
61