1 # include "../hdr/defines.h" 2 3 static char Sccsid[] = "@(#)pf_ab.c 1.5 12/22/88"; 4 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