1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /* Copyright (c) 1988 AT&T */
22 /* All Rights Reserved */
23 /*
24 * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 */
27 /*
28 * Copyright 2011-2020 J. Schilling
29 *
30 * @(#)pf_ab.c 1.6 20/09/06 J. Schilling
31 */
32 #if defined(sun)
33 #pragma ident "@(#)pf_ab.c 1.6 20/09/06 J. Schilling"
34 #endif
35 /*
36 * @(#)pf_ab.c 1.6 06/12/12
37 */
38
39 #if defined(sun)
40 #pragma ident "@(#)pf_ab.c"
41 #pragma ident "@(#)sccs:lib/comobj/pf_ab.c"
42 #endif
43 # include <defines.h>
44
45 void
pf_ab(s,pp,all)46 pf_ab(s,pp,all)
47 char *s;
48 register struct pfile *pp;
49 int all;
50 {
51 register char *p;
52 register int i;
53 extern char *Datep;
54 char *xp;
55 char stmp[MAXLINE];
56
57 if (size(s) > MAXLINE)
58 fatal(gettext("line too long (co31)"));
59 xp = p = stmp;
60 copy(s,p);
61 for (; *p; p++)
62 if (*p == '\n') {
63 *p = 0;
64 break;
65 }
66 p = xp;
67 p = sid_ab(p,&pp->pf_gsid);
68 ++p;
69 p = sid_ab(p,&pp->pf_nsid);
70 ++p;
71 i = sccs_index(p," ");
72 pp->pf_user[0] = 0;
73 if (((unsigned)i) < LOGSIZE) {
74 strncpy(pp->pf_user,p,(unsigned) i);
75 pp->pf_user[i] = 0;
76 }
77 else
78 fatal(gettext("bad p-file format (co17)"));
79 p = p + i + 1;
80 date_ab(p,&pp->pf_date, 0);
81 p = Datep;
82 pp->pf_ilist = 0;
83 pp->pf_elist = 0;
84 pp->pf_cmrlist = 0;
85 if (!all || !*p)
86 return;
87 p += 2;
88 xp = fmalloc(size(p));
89 copy(p,xp);
90 p = xp;
91 if (*p == 'i') {
92 pp->pf_ilist = ++p;
93 for (; *p; p++)
94 if (*p == ' ') {
95 *p++ = 0;
96 p++;
97 break;
98 }
99 }
100 if (*p == 'x')
101 {
102 pp->pf_elist = ++p;
103 for(;*p;p++)
104 if(*p == ' ')
105 {
106 *p++ = 0;
107 p++;
108 break;
109 }
110 }
111 if(*p == 'z')
112 {
113 pp->pf_cmrlist = ++p;
114 }
115 }
116