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